Full Code of nolimits4web/swiper for AI

master daa64671f4c8 cached
309 files
1.1 MB
340.3k tokens
320 symbols
1 requests
Download .txt
Showing preview only (1,256K chars total). Download the full file or copy to clipboard to get everything.
Repository: nolimits4web/swiper
Branch: master
Commit: daa64671f4c8
Files: 309
Total size: 1.1 MB

Directory structure:
gitextract_z4g623hj/

├── .all-contributorsrc
├── .browserslistrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.cjs
├── .gitattributes
├── .github/
│   ├── CONTRIBUTING.md
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── config.yml
│   │   ├── feature-request.yml
│   │   ├── swiper_core_issue.yml
│   │   ├── swiper_element_issue.yml
│   │   ├── swiper_react_issue.yml
│   │   └── vue_issue.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   ├── lock.yml
│   ├── stale.yml
│   └── workflows/
│       ├── build.yml
│       ├── formatting.yml
│       ├── issue-close-require.yml
│       ├── issue-labeled.yml
│       └── lint.yml
├── .gitignore
├── .lintstagedrc
├── .npmignore
├── .prettierignore
├── .prettierrc
├── .vscode/
│   └── settings.json
├── BACKERS.md
├── CHANGELOG.md
├── CODE_CONTRIBUTORS.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── TODO.md
├── babel.config.json
├── demos/
│   ├── 010-default.html
│   ├── 020-navigation.html
│   ├── 030-pagination.html
│   ├── 040-pagination-dynamic.html
│   ├── 050-pagination-progress.html
│   ├── 060-pagination-fraction.html
│   ├── 070-pagination-custom.html
│   ├── 080-scrollbar.html
│   ├── 090-vertical.html
│   ├── 100-space-between.html
│   ├── 110-slides-per-view.html
│   ├── 120-slides-per-view-auto.html
│   ├── 125-snap-to-slide-edge.html
│   ├── 130-centered.html
│   ├── 140-centered-auto.html
│   ├── 145-css-mode.html
│   ├── 150-freemode.html
│   ├── 160-scroll-container.html
│   ├── 170-slides-per-column.html
│   ├── 180-nested.html
│   ├── 190-grab-cursor.html
│   ├── 200-infinite-loop.html
│   ├── 210-infinite-loop-with-slides-per-group.html
│   ├── 211-slides-per-group-skip.html
│   ├── 220-effect-fade.html
│   ├── 230-effect-cube.html
│   ├── 240-effect-coverflow.html
│   ├── 250-effect-flip.html
│   ├── 255-effect-cards.html
│   ├── 257-effect-creative.html
│   ├── 260-keyboard-control.html
│   ├── 270-mousewheel-control.html
│   ├── 280-autoplay.html
│   ├── 290-dynamic-slides.html
│   ├── 300-thumbs-gallery.html
│   ├── 310-thumbs-gallery-loop.html
│   ├── 320-multiple-swipers.html
│   ├── 330-hash-navigation.html
│   ├── 340-history.html
│   ├── 350-rtl.html
│   ├── 360-parallax.html
│   ├── 370-lazy-load-images.html
│   ├── 380-responsive-breakpoints.html
│   ├── 381-ratio-breakpoints.html
│   ├── 390-autoheight.html
│   ├── 400-zoom.html
│   ├── 410-virtual-slides.html
│   ├── 420-custom-plugin.html
│   ├── 430-slideable-menu.html
│   ├── 440-change-direction.html
│   ├── 450-watchSlidesVisibility.html
│   ├── index.html
│   └── vite.config.js
├── package.json
├── playground/
│   ├── core/
│   │   ├── index.html
│   │   └── vite.config.js
│   ├── element/
│   │   ├── index.html
│   │   └── vite.config.js
│   ├── react/
│   │   ├── App.jsx
│   │   ├── index.html
│   │   ├── main.js
│   │   └── vite.config.js
│   └── vue/
│       ├── App.vue
│       ├── index.html
│       ├── innerComp.vue
│       ├── main.js
│       └── vite.config.js
├── scripts/
│   ├── build-config.js
│   ├── build-modules.js
│   ├── build-sponsors.js
│   ├── build-styles.js
│   ├── build-types.js
│   ├── build.js
│   ├── release.js
│   ├── utils/
│   │   ├── autoprefixer.js
│   │   ├── banner.js
│   │   ├── get-element-styles.js
│   │   ├── helper.js
│   │   ├── isProd.js
│   │   ├── less.js
│   │   ├── minify-css.js
│   │   ├── minify.js
│   │   ├── output-dir.js
│   │   └── unwrap-css.js
│   └── watch.js
└── src/
    ├── components-shared/
    │   ├── get-changed-params.mjs
    │   ├── get-element-params.mjs
    │   ├── get-params.mjs
    │   ├── mount-swiper.mjs
    │   ├── params-list.mjs
    │   ├── update-on-virtual-data.mjs
    │   ├── update-swiper.mjs
    │   └── utils.mjs
    ├── copy/
    │   ├── LICENSE
    │   ├── README.md
    │   └── package.json
    ├── core/
    │   ├── breakpoints/
    │   │   ├── getBreakpoint.mjs
    │   │   ├── index.mjs
    │   │   └── setBreakpoint.mjs
    │   ├── check-overflow/
    │   │   └── index.mjs
    │   ├── classes/
    │   │   ├── addClasses.mjs
    │   │   ├── index.mjs
    │   │   └── removeClasses.mjs
    │   ├── core.mjs
    │   ├── defaults.mjs
    │   ├── events/
    │   │   ├── index.mjs
    │   │   ├── onClick.mjs
    │   │   ├── onDocumentTouchStart.mjs
    │   │   ├── onLoad.mjs
    │   │   ├── onResize.mjs
    │   │   ├── onScroll.mjs
    │   │   ├── onTouchEnd.mjs
    │   │   ├── onTouchMove.mjs
    │   │   └── onTouchStart.mjs
    │   ├── events-emitter.mjs
    │   ├── grab-cursor/
    │   │   ├── index.mjs
    │   │   ├── setGrabCursor.mjs
    │   │   └── unsetGrabCursor.mjs
    │   ├── loop/
    │   │   ├── index.mjs
    │   │   ├── loopCreate.mjs
    │   │   ├── loopDestroy.mjs
    │   │   └── loopFix.mjs
    │   ├── moduleExtendParams.mjs
    │   ├── modules/
    │   │   ├── observer/
    │   │   │   └── observer.mjs
    │   │   └── resize/
    │   │       └── resize.mjs
    │   ├── slide/
    │   │   ├── index.mjs
    │   │   ├── slideNext.mjs
    │   │   ├── slidePrev.mjs
    │   │   ├── slideReset.mjs
    │   │   ├── slideTo.mjs
    │   │   ├── slideToClickedSlide.mjs
    │   │   ├── slideToClosest.mjs
    │   │   └── slideToLoop.mjs
    │   ├── transition/
    │   │   ├── index.mjs
    │   │   ├── setTransition.mjs
    │   │   ├── transitionEmit.mjs
    │   │   ├── transitionEnd.mjs
    │   │   └── transitionStart.mjs
    │   ├── translate/
    │   │   ├── getTranslate.mjs
    │   │   ├── index.mjs
    │   │   ├── maxTranslate.mjs
    │   │   ├── minTranslate.mjs
    │   │   ├── setTranslate.mjs
    │   │   └── translateTo.mjs
    │   └── update/
    │       ├── index.mjs
    │       ├── updateActiveIndex.mjs
    │       ├── updateAutoHeight.mjs
    │       ├── updateClickedSlide.mjs
    │       ├── updateProgress.mjs
    │       ├── updateSize.mjs
    │       ├── updateSlides.mjs
    │       ├── updateSlidesClasses.mjs
    │       ├── updateSlidesOffset.mjs
    │       └── updateSlidesProgress.mjs
    ├── modules/
    │   ├── a11y/
    │   │   ├── a11y.css
    │   │   └── a11y.mjs
    │   ├── autoplay/
    │   │   ├── autoplay.css
    │   │   └── autoplay.mjs
    │   ├── controller/
    │   │   ├── controller.css
    │   │   └── controller.mjs
    │   ├── effect-cards/
    │   │   ├── effect-cards.css
    │   │   └── effect-cards.mjs
    │   ├── effect-coverflow/
    │   │   ├── effect-coverflow.css
    │   │   └── effect-coverflow.mjs
    │   ├── effect-creative/
    │   │   ├── effect-creative.css
    │   │   └── effect-creative.mjs
    │   ├── effect-cube/
    │   │   ├── effect-cube.css
    │   │   └── effect-cube.mjs
    │   ├── effect-fade/
    │   │   ├── effect-fade.css
    │   │   └── effect-fade.mjs
    │   ├── effect-flip/
    │   │   ├── effect-flip.css
    │   │   └── effect-flip.mjs
    │   ├── free-mode/
    │   │   ├── free-mode.css
    │   │   └── free-mode.mjs
    │   ├── grid/
    │   │   ├── grid.css
    │   │   └── grid.mjs
    │   ├── hash-navigation/
    │   │   ├── hash-navigation.css
    │   │   └── hash-navigation.mjs
    │   ├── history/
    │   │   ├── history.css
    │   │   └── history.mjs
    │   ├── keyboard/
    │   │   ├── keyboard.css
    │   │   └── keyboard.mjs
    │   ├── manipulation/
    │   │   ├── manipulation.css
    │   │   ├── manipulation.mjs
    │   │   └── methods/
    │   │       ├── addSlide.mjs
    │   │       ├── appendSlide.mjs
    │   │       ├── prependSlide.mjs
    │   │       ├── removeAllSlides.mjs
    │   │       └── removeSlide.mjs
    │   ├── mousewheel/
    │   │   ├── mousewheel.css
    │   │   └── mousewheel.mjs
    │   ├── navigation/
    │   │   ├── navigation.css
    │   │   └── navigation.mjs
    │   ├── pagination/
    │   │   ├── pagination.css
    │   │   └── pagination.mjs
    │   ├── parallax/
    │   │   ├── parallax.css
    │   │   └── parallax.mjs
    │   ├── scrollbar/
    │   │   ├── scrollbar.css
    │   │   └── scrollbar.mjs
    │   ├── thumbs/
    │   │   ├── thumbs.css
    │   │   └── thumbs.mjs
    │   ├── virtual/
    │   │   ├── virtual.css
    │   │   └── virtual.mjs
    │   └── zoom/
    │       ├── zoom.css
    │       └── zoom.mjs
    ├── react/
    │   ├── context.mjs
    │   ├── get-children.mjs
    │   ├── swiper-slide.mjs
    │   ├── swiper.mjs
    │   ├── use-isomorphic-layout-effect.mjs
    │   └── virtual.mjs
    ├── shared/
    │   ├── classes-to-selector.mjs
    │   ├── classes-to-tokens.mjs
    │   ├── create-element-if-not-defined.mjs
    │   ├── create-shadow.mjs
    │   ├── effect-init.mjs
    │   ├── effect-target.mjs
    │   ├── effect-virtual-transition-end.mjs
    │   ├── get-browser.mjs
    │   ├── get-device.mjs
    │   ├── get-support.mjs
    │   ├── process-lazy-preloader.mjs
    │   └── utils.mjs
    ├── swiper-bundle.mjs
    ├── swiper-effect-utils.d.ts
    ├── swiper-effect-utils.mjs
    ├── swiper-element.d.ts
    ├── swiper-element.mjs
    ├── swiper-react.d.ts
    ├── swiper-react.mjs
    ├── swiper-vars.less
    ├── swiper-vue.d.ts
    ├── swiper-vue.mjs
    ├── swiper.css
    ├── swiper.d.ts
    ├── swiper.mjs
    ├── types/
    │   ├── index.d.ts
    │   ├── modules/
    │   │   ├── a11y.d.ts
    │   │   ├── autoplay.d.ts
    │   │   ├── controller.d.ts
    │   │   ├── effect-cards.d.ts
    │   │   ├── effect-coverflow.d.ts
    │   │   ├── effect-creative.d.ts
    │   │   ├── effect-cube.d.ts
    │   │   ├── effect-fade.d.ts
    │   │   ├── effect-flip.d.ts
    │   │   ├── free-mode.d.ts
    │   │   ├── grid.d.ts
    │   │   ├── hash-navigation.d.ts
    │   │   ├── history.d.ts
    │   │   ├── index.d.ts
    │   │   ├── keyboard.d.ts
    │   │   ├── manipulation.d.ts
    │   │   ├── mousewheel.d.ts
    │   │   ├── navigation.d.ts
    │   │   ├── pagination.d.ts
    │   │   ├── parallax.d.ts
    │   │   ├── public-api.d.ts
    │   │   ├── scrollbar.d.ts
    │   │   ├── thumbs.d.ts
    │   │   ├── virtual.d.ts
    │   │   └── zoom.d.ts
    │   ├── shared.d.ts
    │   ├── swiper-class.d.ts
    │   ├── swiper-events.d.ts
    │   └── swiper-options.d.ts
    └── vue/
        ├── context.mjs
        ├── get-children.mjs
        ├── swiper-slide.mjs
        ├── swiper.mjs
        └── virtual.mjs

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

================================================
FILE: .all-contributorsrc
================================================
{
  "projectName": "swiper",
  "projectOwner": "nolimits4web",
  "repoType": "github",
  "repoHost": "https://github.com",
  "files": [
    "CODE_CONTRIBUTORS.md"
  ],
  "imageSize": 100,
  "commit": false,
  "contributors": [
    {
      "login": "nolimits4web",
      "name": "Vladimir Kharlampidi",
      "avatar_url": "https://avatars.githubusercontent.com/u/999588?v=4",
      "profile": "https://github.com/nolimits4web",
      "contributions": [
        "code",
        "maintenance",
        "infra",
        "question",
        "doc",
        "ideas"
      ]
    },
    {
      "login": "vltansky",
      "name": "Vlad Tansky",
      "avatar_url": "https://avatars.githubusercontent.com/u/5851280?v=4",
      "profile": "https://github.com/vltansky",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "DAnn2012",
      "name": "DAnn2012",
      "avatar_url": "https://avatars.githubusercontent.com/u/1197819?v=4",
      "profile": "https://github.com/DAnn2012",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "stephanebachelier",
      "name": "Stéphane Bachelier",
      "avatar_url": "https://avatars.githubusercontent.com/u/172615?v=4",
      "profile": "https://github.com/stephanebachelier",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "robpop",
      "name": "Robert F. Popeleski",
      "avatar_url": "https://avatars.githubusercontent.com/u/13895584?v=4",
      "profile": "https://github.com/robpop",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "ygj6",
      "name": "yuangongji",
      "avatar_url": "https://avatars.githubusercontent.com/u/7699524?v=4",
      "profile": "https://github.com/ygj6",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "imjohansunden",
      "name": "Johan Sundén",
      "avatar_url": "https://avatars.githubusercontent.com/u/19605741?v=4",
      "profile": "https://github.com/imjohansunden",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "netcitylife",
      "name": "Dmitry",
      "avatar_url": "https://avatars.githubusercontent.com/u/2089893?v=4",
      "profile": "https://github.com/netcitylife",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "andyburke",
      "name": "Andy Burke",
      "avatar_url": "https://avatars.githubusercontent.com/u/273857?v=4",
      "profile": "https://github.com/andyburke",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "tzvikaf",
      "name": "Tzvika Farber",
      "avatar_url": "https://avatars.githubusercontent.com/u/13975372?v=4",
      "profile": "https://github.com/tzvikaf",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "callumacrae",
      "name": "Callum Macrae",
      "avatar_url": "https://avatars.githubusercontent.com/u/472830?v=4",
      "profile": "http://macr.ae/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "jasonlav",
      "name": "jasonlav",
      "avatar_url": "https://avatars.githubusercontent.com/u/7593912?v=4",
      "profile": "https://github.com/jasonlav",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "shashank1010",
      "name": "Shashank Agarwal",
      "avatar_url": "https://avatars.githubusercontent.com/u/3106368?v=4",
      "profile": "https://plus.google.com/u/0/114487431636655655146",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "kochizufan",
      "name": "Kohei Otsuka",
      "avatar_url": "https://avatars.githubusercontent.com/u/2221431?v=4",
      "profile": "https://github.com/kochizufan",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Triloworld",
      "name": "Patryk Padus",
      "avatar_url": "https://avatars.githubusercontent.com/u/2671726?v=4",
      "profile": "https://www.webo.agency/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "icek",
      "name": "Grzegorz Michlicki",
      "avatar_url": "https://avatars.githubusercontent.com/u/150243?v=4",
      "profile": "http://fatcode.pl/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "justingrant",
      "name": "Justin Grant",
      "avatar_url": "https://avatars.githubusercontent.com/u/277214?v=4",
      "profile": "http://cantaloupesys.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "OrbintSoft",
      "name": "Stefano Balzarotti",
      "avatar_url": "https://avatars.githubusercontent.com/u/6378748?v=4",
      "profile": "https://github.com/OrbintSoft",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "fenyagg",
      "name": "Dmitry Chernyshev",
      "avatar_url": "https://avatars.githubusercontent.com/u/2457209?v=4",
      "profile": "https://github.com/fenyagg",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "ghaiat",
      "name": "Gilles Haiat",
      "avatar_url": "https://avatars.githubusercontent.com/u/5446909?v=4",
      "profile": "http://www.yoobic.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "weiz18",
      "name": "weiz18",
      "avatar_url": "https://avatars.githubusercontent.com/u/42139732?v=4",
      "profile": "https://github.com/weiz18",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "kireerik",
      "name": "Erik Engi",
      "avatar_url": "https://avatars.githubusercontent.com/u/3628043?v=4",
      "profile": "https://oengi.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "GalCohen",
      "name": "Gal Cohen",
      "avatar_url": "https://avatars.githubusercontent.com/u/1293368?v=4",
      "profile": "https://github.com/GalCohen",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "mrtnbroder",
      "name": "Martin Broder",
      "avatar_url": "https://avatars.githubusercontent.com/u/1118826?v=4",
      "profile": "https://martinbroder.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Rikk",
      "name": "Ricardo",
      "avatar_url": "https://avatars.githubusercontent.com/u/2916485?v=4",
      "profile": "https://github.com/Rikk",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "roman01la",
      "name": "Roman Liutikov",
      "avatar_url": "https://avatars.githubusercontent.com/u/1355501?v=4",
      "profile": "https://romanliutikov.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "baxang",
      "name": "Sanghyun Park",
      "avatar_url": "https://avatars.githubusercontent.com/u/196302?v=4",
      "profile": "http://baxang.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "girliemac",
      "name": "Tomomi ❤ Imura",
      "avatar_url": "https://avatars.githubusercontent.com/u/107763?v=4",
      "profile": "https://girliemac.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "jenemde",
      "name": "jenemde",
      "avatar_url": "https://avatars.githubusercontent.com/u/53625399?v=4",
      "profile": "https://github.com/jenemde",
      "contributions": [
        "code",
        "a11y"
      ]
    },
    {
      "login": "navyxie",
      "name": "navy",
      "avatar_url": "https://avatars.githubusercontent.com/u/1982716?v=4",
      "profile": "http://www.navyxie.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "1sergiogarciap",
      "name": "1sergiogarciap",
      "avatar_url": "https://avatars.githubusercontent.com/u/64509552?v=4",
      "profile": "https://github.com/1sergiogarciap",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "azaslavsky",
      "name": "Alex Zaslavsky",
      "avatar_url": "https://avatars.githubusercontent.com/u/3709945?v=4",
      "profile": "https://github.com/azaslavsky",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "andreybs11",
      "name": "Andrey Bolaños Sandoval",
      "avatar_url": "https://avatars.githubusercontent.com/u/1462803?v=4",
      "profile": "https://github.com/andreybs11",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "exodusanto",
      "name": "Antonio Dal Sie",
      "avatar_url": "https://avatars.githubusercontent.com/u/13484843?v=4",
      "profile": "https://antoniodalsie.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "tremby",
      "name": "Bart Nagel",
      "avatar_url": "https://avatars.githubusercontent.com/u/199635?v=4",
      "profile": "https://bartnagel.ca/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Garbanas",
      "name": "Christoph Dörfel",
      "avatar_url": "https://avatars.githubusercontent.com/u/2815411?v=4",
      "profile": "https://github.com/Garbanas",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "DKvistgaard",
      "name": "Daniel Kvistgaard",
      "avatar_url": "https://avatars.githubusercontent.com/u/1705203?v=4",
      "profile": "https://github.com/DKvistgaard",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "danijelGombac",
      "name": "Danijel Gombač",
      "avatar_url": "https://avatars.githubusercontent.com/u/3872726?v=4",
      "profile": "http://www.gombac.si/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "dy",
      "name": "Dmitry IV.",
      "avatar_url": "https://avatars.githubusercontent.com/u/300067?v=4",
      "profile": "https://twitter.com/dimayv",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "eklingen",
      "name": "Elco Klingen",
      "avatar_url": "https://avatars.githubusercontent.com/u/716683?v=4",
      "profile": "https://elcoklingen.nl/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "OxyDesign",
      "name": "Nicolas Escoffier",
      "avatar_url": "https://avatars.githubusercontent.com/u/2378180?v=4",
      "profile": "http://www.oxydesign.fr/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Evidica",
      "name": "Patrick Mallahan",
      "avatar_url": "https://avatars.githubusercontent.com/u/6105827?v=4",
      "profile": "https://github.com/Evidica",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "zhiru",
      "name": "Felipe",
      "avatar_url": "https://avatars.githubusercontent.com/u/4226997?v=4",
      "profile": "https://aireset.com.br/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "garrettmaring",
      "name": "Garrett Maring",
      "avatar_url": "https://avatars.githubusercontent.com/u/8270120?v=4",
      "profile": "https://www.linkedin.com/in/garrettmaringdev",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "joejoseph00",
      "name": "Joseph Olstad",
      "avatar_url": "https://avatars.githubusercontent.com/u/1028526?v=4",
      "profile": "https://github.com/joejoseph00",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "kostyabushuev",
      "name": "Kostya Bushuev",
      "avatar_url": "https://avatars.githubusercontent.com/u/31274471?v=4",
      "profile": "https://github.com/kostyabushuev",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "marwej",
      "name": "Marcus Wejderot",
      "avatar_url": "https://avatars.githubusercontent.com/u/5296840?v=4",
      "profile": "https://mevisio.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "cfxd",
      "name": "CFX",
      "avatar_url": "https://avatars.githubusercontent.com/u/1671933?v=4",
      "profile": "https://github.com/cfxd",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Mrliuchanghao",
      "name": "HoH-World",
      "avatar_url": "https://avatars.githubusercontent.com/u/30208835?v=4",
      "profile": "https://github.com/Mrliuchanghao",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "websirnik",
      "name": "Nikita Korotaev",
      "avatar_url": "https://avatars.githubusercontent.com/u/282871?v=4",
      "profile": "https://relayto.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "katerlouis",
      "name": "René Eschke",
      "avatar_url": "https://avatars.githubusercontent.com/u/1983382?v=4",
      "profile": "https://github.com/katerlouis",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "ryanzec",
      "name": "Ryan Zec",
      "avatar_url": "https://avatars.githubusercontent.com/u/444206?v=4",
      "profile": "http://www.ryanzec.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "SablinSergey",
      "name": "Sergey Sablin",
      "avatar_url": "https://avatars.githubusercontent.com/u/12068136?v=4",
      "profile": "https://github.com/SablinSergey",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "tobiasstrebitzer",
      "name": "Tobias Strebitzer",
      "avatar_url": "https://avatars.githubusercontent.com/u/222509?v=4",
      "profile": "http://www.magloft.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "X4arms",
      "name": "X4arms",
      "avatar_url": "https://avatars.githubusercontent.com/u/1517616?v=4",
      "profile": "https://github.com/X4arms",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "a-barbieri",
      "name": "Alessandro",
      "avatar_url": "https://avatars.githubusercontent.com/u/1528468?v=4",
      "profile": "http://lacolonia.studio/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "amnausman",
      "name": "amnausman",
      "avatar_url": "https://avatars.githubusercontent.com/u/20682461?v=4",
      "profile": "https://github.com/amnausman",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "crutch12",
      "name": "Konstantin Barabanov",
      "avatar_url": "https://avatars.githubusercontent.com/u/19373212?v=4",
      "profile": "https://github.com/crutch12",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "michaelWoe",
      "name": "michaelWoe",
      "avatar_url": "https://avatars.githubusercontent.com/u/49037485?v=4",
      "profile": "https://github.com/michaelWoe",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "timothyhague",
      "name": "timothyhague",
      "avatar_url": "https://avatars.githubusercontent.com/u/9559835?v=4",
      "profile": "https://github.com/timothyhague",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "hsxfjames",
      "name": "Yaojun Zheng",
      "avatar_url": "https://avatars.githubusercontent.com/u/8982188?v=4",
      "profile": "http://www.cnblogs.com/blackstorm",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "raahede",
      "name": "Frej Raahede Nielsen",
      "avatar_url": "https://avatars.githubusercontent.com/u/391833?v=4",
      "profile": "https://github.com/raahede",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "mzkmzk",
      "name": "404_K",
      "avatar_url": "https://avatars.githubusercontent.com/u/4627170?v=4",
      "profile": "https://github.com/mzkmzk",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "voxtex",
      "name": "Adam",
      "avatar_url": "https://avatars.githubusercontent.com/u/735455?v=4",
      "profile": "https://github.com/voxtex",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "promoinvideo",
      "name": "Alberto Cobre",
      "avatar_url": "https://avatars.githubusercontent.com/u/10633232?v=4",
      "profile": "https://github.com/promoinvideo",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "alejandroiglesias",
      "name": "Alejandro García Iglesias",
      "avatar_url": "https://avatars.githubusercontent.com/u/480640?v=4",
      "profile": "https://alejandroiglesias.github.io/cv/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "anneke",
      "name": "Anneke Sinnema",
      "avatar_url": "https://avatars.githubusercontent.com/u/7202272?v=4",
      "profile": "https://annekesinnema.nl/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "kosminen",
      "name": "Anssi Hautamäki",
      "avatar_url": "https://avatars.githubusercontent.com/u/1532140?v=4",
      "profile": "https://github.com/kosminen",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "anteprimorac",
      "name": "Ante Primorac",
      "avatar_url": "https://avatars.githubusercontent.com/u/972083?v=4",
      "profile": "http://anteprimorac.com.hr/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "hanoii",
      "name": "Ariel Barreiro",
      "avatar_url": "https://avatars.githubusercontent.com/u/677879?v=4",
      "profile": "https://github.com/hanoii",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "arthurpf",
      "name": "Arthur Franco",
      "avatar_url": "https://avatars.githubusercontent.com/u/2388720?v=4",
      "profile": "https://arthurpf.github.io/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "austinknight",
      "name": "Austin Knight",
      "avatar_url": "https://avatars.githubusercontent.com/u/1007248?v=4",
      "profile": "http://www.austinknight.net/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "justb81",
      "name": "Bastian Rang",
      "avatar_url": "https://avatars.githubusercontent.com/u/3680539?v=4",
      "profile": "https://github.com/justb81",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "bitdeli-chef",
      "name": "Bitdeli Chef",
      "avatar_url": "https://avatars.githubusercontent.com/u/3092978?v=4",
      "profile": "https://bitdeli.com/free",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Brightcells",
      "name": "Kimi.Huang",
      "avatar_url": "https://avatars.githubusercontent.com/u/5810063?v=4",
      "profile": "https://pypi.org/user/Hackathon/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "brunolm",
      "name": "BrunoLM",
      "avatar_url": "https://avatars.githubusercontent.com/u/706078?v=4",
      "profile": "https://brunolm.com/blog",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Chepheus",
      "name": "Cepheus",
      "avatar_url": "https://avatars.githubusercontent.com/u/9037206?v=4",
      "profile": "https://github.com/Chepheus",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Chun-Yang",
      "name": "yang2007chun",
      "avatar_url": "https://avatars.githubusercontent.com/u/2827867?v=4",
      "profile": "https://trentyang.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "DanielRuf",
      "name": "Daniel Ruf",
      "avatar_url": "https://avatars.githubusercontent.com/u/827205?v=4",
      "profile": "https://daniel-ruf.de/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "dfvalero",
      "name": "David Fernandez",
      "avatar_url": "https://avatars.githubusercontent.com/u/337955?v=4",
      "profile": "https://github.com/dfvalero",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "davgothic",
      "name": "David Hancock",
      "avatar_url": "https://avatars.githubusercontent.com/u/158586?v=4",
      "profile": "http://davidhancock.co/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "cartok",
      "name": "cartok",
      "avatar_url": "https://avatars.githubusercontent.com/u/22181589?v=4",
      "profile": "https://github.com/cartok",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "izifortune",
      "name": "Fabrizio Fortunato",
      "avatar_url": "https://avatars.githubusercontent.com/u/3394606?v=4",
      "profile": "https://izifortune.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "FishErr",
      "name": "FishErr",
      "avatar_url": "https://avatars.githubusercontent.com/u/742467?v=4",
      "profile": "https://github.com/FishErr",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "fritzmg",
      "name": "Fritz Michael Gschwantner",
      "avatar_url": "https://avatars.githubusercontent.com/u/4970961?v=4",
      "profile": "https://github.com/fritzmg",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "glebmachine",
      "name": "Gleb Mikheev",
      "avatar_url": "https://avatars.githubusercontent.com/u/1610882?v=4",
      "profile": "http://betaagency.ru/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "TatumCreative",
      "name": "TatumCreative",
      "avatar_url": "https://avatars.githubusercontent.com/u/22155328?v=4",
      "profile": "https://github.com/gregtatum",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "hanjukim",
      "name": "Paul Kim",
      "avatar_url": "https://avatars.githubusercontent.com/u/1264116?v=4",
      "profile": "https://github.com/hanjukim",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "HeadFox",
      "name": "Lucien PESLIER",
      "avatar_url": "https://avatars.githubusercontent.com/u/6277284?v=4",
      "profile": "https://github.com/HeadFox",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "HerringtonDarkholme",
      "name": "Herrington Darkholme",
      "avatar_url": "https://avatars.githubusercontent.com/u/2883231?v=4",
      "profile": "https://github.com/HerringtonDarkholme",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "IronKinoko",
      "name": "IronKinoko",
      "avatar_url": "https://avatars.githubusercontent.com/u/32838658?v=4",
      "profile": "https://github.com/IronKinoko",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "stonebranch",
      "name": "Jakob Stenqvist",
      "avatar_url": "https://avatars.githubusercontent.com/u/87466?v=4",
      "profile": "https://jakobstenqvist.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "sconix",
      "name": "Janne Julkunen",
      "avatar_url": "https://avatars.githubusercontent.com/u/921515?v=4",
      "profile": "https://github.com/sconix",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "jasonkuhrt",
      "name": "Jason Kuhrt",
      "avatar_url": "https://avatars.githubusercontent.com/u/284476?v=4",
      "profile": "https://github.com/jasonkuhrt",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Manduro",
      "name": "Job",
      "avatar_url": "https://avatars.githubusercontent.com/u/2545042?v=4",
      "profile": "https://github.com/Manduro",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "johnferrie",
      "name": "John Ferrie",
      "avatar_url": "https://avatars.githubusercontent.com/u/1991460?v=4",
      "profile": "https://github.com/johnferrie",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "sakuraineed",
      "name": "Kenji Sakurai",
      "avatar_url": "https://avatars.githubusercontent.com/u/4065624?v=4",
      "profile": "https://github.com/sakuraineed",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "careykevin",
      "name": "Kevin Carey",
      "avatar_url": "https://avatars.githubusercontent.com/u/9685146?v=4",
      "profile": "http://www.linkedin.com/in/careykevin",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "klojniewski-pagepro",
      "name": "Chris (Krzysztof) Lojniewski",
      "avatar_url": "https://avatars.githubusercontent.com/u/245971?v=4",
      "profile": "http://pagepro.pl/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "ljanecek",
      "name": "Ladislav Janeček",
      "avatar_url": "https://avatars.githubusercontent.com/u/2696545?v=4",
      "profile": "https://twitter.com/ladislavjanecek",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "luads",
      "name": "Luã de Souza",
      "avatar_url": "https://avatars.githubusercontent.com/u/194708?v=4",
      "profile": "http://www.lsouza.pro.br/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "luis-kaufmann-silva",
      "name": "Luis",
      "avatar_url": "https://avatars.githubusercontent.com/u/1151616?v=4",
      "profile": "https://wiserdev.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "blikblum",
      "name": "Luiz Américo",
      "avatar_url": "https://avatars.githubusercontent.com/u/3047126?v=4",
      "profile": "https://github.com/blikblum",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "LukasDrgon",
      "name": "Lukas Drgon",
      "avatar_url": "https://avatars.githubusercontent.com/u/15611832?v=4",
      "profile": "https://github.com/LukasDrgon",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "waffle-iron",
      "name": "Making GitHub Delicious.",
      "avatar_url": "https://avatars.githubusercontent.com/u/6912981?v=4",
      "profile": "https://github.com/waffle-iron",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "silvenon",
      "name": "Matija Marohnić",
      "avatar_url": "https://avatars.githubusercontent.com/u/471278?v=4",
      "profile": "https://silvenon.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "damrbaby",
      "name": "Matthew Windwer",
      "avatar_url": "https://avatars.githubusercontent.com/u/237580?v=4",
      "profile": "https://github.com/damrbaby",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "mehernosh",
      "name": "Mehernosh Bhathena",
      "avatar_url": "https://avatars.githubusercontent.com/u/1410232?v=4",
      "profile": "https://github.com/mehernosh",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "mems",
      "name": "Memmie Lenglet",
      "avatar_url": "https://avatars.githubusercontent.com/u/729275?v=4",
      "profile": "https://memmie.lenglet.name/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "mibo-fdc",
      "name": "Michael Bohn",
      "avatar_url": "https://avatars.githubusercontent.com/u/70259891?v=4",
      "profile": "https://github.com/mibo-fdc",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "wodka",
      "name": "Michael Schramm",
      "avatar_url": "https://avatars.githubusercontent.com/u/385731?v=4",
      "profile": "https://github.com/wodka",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "mhartington",
      "name": "Mike Hartington",
      "avatar_url": "https://avatars.githubusercontent.com/u/2835826?v=4",
      "profile": "https://twitter.com/mhartington",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "mitchheddles",
      "name": "Mitchell Heddles",
      "avatar_url": "https://avatars.githubusercontent.com/u/20656128?v=4",
      "profile": "https://mitch.app/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "NLNicoo",
      "name": "Nico",
      "avatar_url": "https://avatars.githubusercontent.com/u/6526666?v=4",
      "profile": "https://github.com/NLNicoo",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "nil-ni-ck",
      "name": "Nil",
      "avatar_url": "https://avatars.githubusercontent.com/u/8202448?v=4",
      "profile": "https://github.com/nil-ni-ck",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "pawl",
      "name": "Paul Brown",
      "avatar_url": "https://avatars.githubusercontent.com/u/992533?v=4",
      "profile": "http://paulsprogrammingnotes.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "pbalmasov",
      "name": "Pavel Balmasov",
      "avatar_url": "https://avatars.githubusercontent.com/u/3986749?v=4",
      "profile": "https://github.com/pbalmasov",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "czajkowski",
      "name": "Piotr Czajkowski",
      "avatar_url": "https://avatars.githubusercontent.com/u/197684?v=4",
      "profile": "https://github.com/czajkowski",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "PythonLinks",
      "name": "PythonLinks",
      "avatar_url": "https://avatars.githubusercontent.com/u/34622952?v=4",
      "profile": "https://github.com/PythonLinks",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "rayvincent-bsd",
      "name": "rayvincent-bsd",
      "avatar_url": "https://avatars.githubusercontent.com/u/41829998?v=4",
      "profile": "https://github.com/rayvincent-bsd",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "RomanYazvinsky",
      "name": "RomanYazvinsky",
      "avatar_url": "https://avatars.githubusercontent.com/u/32144682?v=4",
      "profile": "https://github.com/RomanYazvinsky",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "rrelmy",
      "name": "Rémy",
      "avatar_url": "https://avatars.githubusercontent.com/u/442683?v=4",
      "profile": "https://remyboehler.ch/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "KSH-code",
      "name": "Seonghoon Kim",
      "avatar_url": "https://avatars.githubusercontent.com/u/29705162?v=4",
      "profile": "http://ksh-code.github.io/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "isairz",
      "name": "Seongjun Kim",
      "avatar_url": "https://avatars.githubusercontent.com/u/4544327?v=4",
      "profile": "https://github.com/isairz",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "dippas",
      "name": "Serpa",
      "avatar_url": "https://avatars.githubusercontent.com/u/10220287?v=4",
      "profile": "http://stackoverflow.com/users/3448527/dippas",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "staszek998",
      "name": "Stanisław Gregor",
      "avatar_url": "https://avatars.githubusercontent.com/u/34459296?v=4",
      "profile": "http://staszek.codes/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "steve3d",
      "name": "Steve Yin",
      "avatar_url": "https://avatars.githubusercontent.com/u/670687?v=4",
      "profile": "https://github.com/steve3d",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "seastland",
      "name": "Steven Eastland",
      "avatar_url": "https://avatars.githubusercontent.com/u/3535053?v=4",
      "profile": "http://www.grassmonk.net/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "soenkekluth",
      "name": "Sönke Kluth",
      "avatar_url": "https://avatars.githubusercontent.com/u/201338?v=4",
      "profile": "https://soenkekluth.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "gitter-badger",
      "name": "The Gitter Badger",
      "avatar_url": "https://avatars.githubusercontent.com/u/8518239?v=4",
      "profile": "https://gitter.im/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "dogoku",
      "name": "Theo",
      "avatar_url": "https://avatars.githubusercontent.com/u/761999?v=4",
      "profile": "https://github.com/dogoku",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "timgates42",
      "name": "Tim Gates",
      "avatar_url": "https://avatars.githubusercontent.com/u/47873678?v=4",
      "profile": "https://github.com/timgates42",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "tom-sherman",
      "name": "Tom Sherman",
      "avatar_url": "https://avatars.githubusercontent.com/u/9257001?v=4",
      "profile": "https://tom-sherman.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "WarriorRocker",
      "name": "WarriorRocker",
      "avatar_url": "https://avatars.githubusercontent.com/u/2924540?v=4",
      "profile": "https://github.com/WarriorRocker",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "omgovich",
      "name": "Vlad Shilov",
      "avatar_url": "https://avatars.githubusercontent.com/u/206567?v=4",
      "profile": "https://github.com/omgovich",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "vladgurovich",
      "name": "Vladimir Gurovich",
      "avatar_url": "https://avatars.githubusercontent.com/u/444833?v=4",
      "profile": "http://vlad.io/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "VladimirIvanin",
      "name": "Vladimir Ivanin",
      "avatar_url": "https://avatars.githubusercontent.com/u/15268753?v=4",
      "profile": "https://github.com/VladimirIvanin",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "TreVld",
      "name": "TreVld",
      "avatar_url": "https://avatars.githubusercontent.com/u/42523020?v=4",
      "profile": "https://github.com/TreVld",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "waghcwb",
      "name": "Wagner Souza",
      "avatar_url": "https://avatars.githubusercontent.com/u/6169950?v=4",
      "profile": "https://www.linkedin.com/in/waghcwb",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "codesignist",
      "name": "Yunus EŞ",
      "avatar_url": "https://avatars.githubusercontent.com/u/1472881?v=4",
      "profile": "http://yunuses.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "axten",
      "name": "axten",
      "avatar_url": "https://avatars.githubusercontent.com/u/1412778?v=4",
      "profile": "https://github.com/axten",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "ccebrand",
      "name": "Cyrille",
      "avatar_url": "https://avatars.githubusercontent.com/u/818237?v=4",
      "profile": "http://www.moustic.biz/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "daleknauss",
      "name": "Dale Knauss",
      "avatar_url": "https://avatars.githubusercontent.com/u/2430232?v=4",
      "profile": "http://daleknauss.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "danielkalen",
      "name": "Daniel Kalen",
      "avatar_url": "https://avatars.githubusercontent.com/u/10832620?v=4",
      "profile": "https://github.com/danielkalen",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "dependabot[bot]",
      "name": "dependabot[bot]",
      "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4",
      "profile": "https://github.com/apps/dependabot",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "devmi",
      "name": "devmi",
      "avatar_url": "https://avatars.githubusercontent.com/u/19313261?v=4",
      "profile": "https://github.com/devmi",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "fabrizim",
      "name": "fabrizim",
      "avatar_url": "https://avatars.githubusercontent.com/u/79165?v=4",
      "profile": "https://owlwatch.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "hiroqn",
      "name": "hiroqn",
      "avatar_url": "https://avatars.githubusercontent.com/u/909385?v=4",
      "profile": "https://github.com/hiroqn",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "jamesryanbell",
      "name": "James Bell",
      "avatar_url": "https://avatars.githubusercontent.com/u/1842481?v=4",
      "profile": "https://james-bell.co.uk/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "knusperpixel",
      "name": "knusperpixel",
      "avatar_url": "https://avatars.githubusercontent.com/u/1455404?v=4",
      "profile": "https://github.com/knusperpixel",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "langjun",
      "name": "langjun",
      "avatar_url": "https://avatars.githubusercontent.com/u/7370806?v=4",
      "profile": "https://langjun.github.io/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "lenny0702",
      "name": "Lenny",
      "avatar_url": "https://avatars.githubusercontent.com/u/2850927?v=4",
      "profile": "https://github.com/lenny0702",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "mattdemps",
      "name": "Matt",
      "avatar_url": "https://avatars.githubusercontent.com/u/2694295?v=4",
      "profile": "https://github.com/mattdemps",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "n3gotium",
      "name": "n3gotium",
      "avatar_url": "https://avatars.githubusercontent.com/u/3309521?v=4",
      "profile": "https://github.com/n3gotium",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "naedx",
      "name": "naedx",
      "avatar_url": "https://avatars.githubusercontent.com/u/1711099?v=4",
      "profile": "https://github.com/naedx",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "nealnote",
      "name": "nealnote",
      "avatar_url": "https://avatars.githubusercontent.com/u/3173785?v=4",
      "profile": "https://github.com/nealnote",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "osamaalsabbagh",
      "name": "osamaalsabbagh",
      "avatar_url": "https://avatars.githubusercontent.com/u/2883742?v=4",
      "profile": "https://github.com/osamaalsabbagh",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "pantcaser",
      "name": "pantcaser",
      "avatar_url": "https://avatars.githubusercontent.com/u/33579079?v=4",
      "profile": "https://github.com/pantcaser",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "ph1p",
      "name": "Phil",
      "avatar_url": "https://avatars.githubusercontent.com/u/15351728?v=4",
      "profile": "https://ph1p.dev/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "pimlie",
      "name": "Pim",
      "avatar_url": "https://avatars.githubusercontent.com/u/1067403?v=4",
      "profile": "https://github.com/pimlie",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "andrey-glotov",
      "name": "Andrey A. Glotov",
      "avatar_url": "https://avatars.githubusercontent.com/u/1656509?v=4",
      "profile": "https://github.com/andrey-glotov",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "rdsn",
      "name": "rdsn",
      "avatar_url": "https://avatars.githubusercontent.com/u/3916181?v=4",
      "profile": "https://github.com/rdsn",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "shahjehanali1",
      "name": "Shahjehan Ali",
      "avatar_url": "https://avatars.githubusercontent.com/u/8455072?v=4",
      "profile": "https://github.com/shahjehanali1",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "JoveX",
      "name": "清泉古雾",
      "avatar_url": "https://avatars.githubusercontent.com/u/1560179?v=4",
      "profile": "http://jser.io/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "kashtian",
      "name": "kashtian",
      "avatar_url": "https://avatars.githubusercontent.com/u/17918091?v=4",
      "profile": "https://github.com/kashtian",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "tienbuide",
      "name": "tienbuide",
      "avatar_url": "https://avatars.githubusercontent.com/u/2574700?v=4",
      "profile": "https://github.com/tienbuide",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "unicod3",
      "name": "Sinan Ülker",
      "avatar_url": "https://avatars.githubusercontent.com/u/2614110?v=4",
      "profile": "https://github.com/unicod3",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "vaxul",
      "name": "vaxul",
      "avatar_url": "https://avatars.githubusercontent.com/u/3798226?v=4",
      "profile": "https://github.com/vaxul",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "wolffan",
      "name": "Raimon Lapuente",
      "avatar_url": "https://avatars.githubusercontent.com/u/1092080?v=4",
      "profile": "http://raimonlapuente.com/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "yukulele",
      "name": "Clément P",
      "avatar_url": "https://avatars.githubusercontent.com/u/347244?v=4",
      "profile": "https://github.com/yukulele",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "aPalenov",
      "name": "Андрей",
      "avatar_url": "https://avatars.githubusercontent.com/u/20544542?v=4",
      "profile": "https://github.com/aPalenov",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "beomy",
      "name": "이효범",
      "avatar_url": "https://avatars.githubusercontent.com/u/6986479?v=4",
      "profile": "https://github.com/beomy",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "philwolstenholme",
      "name": "Phil Wolstenholme",
      "avatar_url": "https://avatars.githubusercontent.com/u/6339853?v=4",
      "profile": "https://wolstenhol.me/",
      "contributions": [
        "a11y"
      ]
    },
    {
      "login": "shahjehan-wpbrigade",
      "name": "Shahjehan Ali",
      "avatar_url": "https://avatars.githubusercontent.com/u/65647117?v=4",
      "profile": "https://github.com/shahjehan-wpbrigade",
      "contributions": [
        "doc"
      ]
    }
  ],
  "contributorsPerLine": 7,
  "commitConvention": "none",
  "skipCi": true
}


================================================
FILE: .browserslistrc
================================================
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.

# For additional information regarding the format and rule options, please see:

# https://github.com/browserslist/browserslist#queries

# You can see what browsers were selected by your queries by running:

# npx browserslist

IOS >= 17
Safari >= 17
last 5 Chrome versions
last 5 Firefox versions


================================================
FILE: .editorconfig
================================================
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true


================================================
FILE: .eslintignore
================================================
build
playground/index.html
node_modules
dist
src/swiper.js
src/swiper-bundle.js


================================================
FILE: .eslintrc.cjs
================================================
const rules = {
  'no-nested-ternary': 'off',
  'no-lonely-if': 'off',
  'no-param-reassign': 'off',
  'no-underscore-dangle': 'off',
  'prefer-object-spread': 'off',
  'prefer-destructuring': 'off',
  'default-param-last': 'off',
  'import/prefer-default-export': 'off',
  'guard-for-in': 'off',
  'no-restricted-syntax': 'off',
  'import/no-extraneous-dependencies': 'off',
  'no-console': 'off',
  'no-restricted-globals': 'off',
  'max-classes-per-file': 'off',
  'react/jsx-filename-extension': 'off',
  'jsx-a11y/label-has-associated-control': 'off',
  'react/no-array-index-key': 'off',
  'react/prop-types': 'off',
  'react/jsx-props-no-spreading': 'off',
  'import/no-unresolved': [2, { ignore: ['ssr-window', 'dom7', 'swiper'] }],
};
module.exports = {
  root: true,
  env: {
    browser: true,
    es6: true,
    node: true,
  },

  globals: {
    Atomics: 'readonly',
    SharedArrayBuffer: 'readonly',
  },
  parserOptions: {
    ecmaFeatures: {
      jsx: true,
    },
    ecmaVersion: 2021,
    sourceType: 'module',
  },

  overrides: [
    {
      files: ['*.js'],
      extends: ['plugin:react/recommended', 'airbnb-base', 'plugin:prettier/recommended'],
      rules,
    },
    {
      files: ['**/*.jsx', 'src/react/*.js'],
      plugins: ['react'],
      rules,
    },

    {
      files: ['src/**/*.*'],
      rules: {
        ...rules,
        'import/extensions': [2, 'ignorePackages', { js: 'always' }],
      },
    },
    {
      files: ['scripts/**/*.*'],
      parserOptions: {
        ecmaVersion: 2020,
        sourceType: 'module',
      },
      rules: {
        ...rules,
        'import/extensions': [2, 'ignorePackages', { js: 'always' }],
      },
    },
  ],
};


================================================
FILE: .gitattributes
================================================
* text=LF


================================================
FILE: .github/CONTRIBUTING.md
================================================
# How to contribute

Swiper loves to welcome your contributions. There are several ways to help out:

- Create an [issue](https://github.com/nolimits4web/swiper/issues) on GitHub, if you have found a bug
- Write test cases or provide examples for open bug issues
- Write patches for open bug/feature issues

There are a few guidelines that we need contributors to follow so that we have a
chance of keeping on top of things.

## Getting Started

- Make sure you have a [GitHub account](https://github.com/signup/free).
- Submit an [issue](https://github.com/nolimits4web/swiper/issues), assuming one does not already exist.
  - Clearly describe the issue including steps to reproduce when it is a bug.
  - Make sure you fill in the earliest version that you know has the issue.
- Fork the repository on GitHub.

## Making Changes

- Create a topic branch from where you want to base your work.
  - This is usually the master branch.
  - Only target release branches if you are certain your fix must be on that
    branch.
  - To quickly create a topic branch based on master; `git branch master/my_contribution master` then checkout the new branch with `git checkout master/my_contribution`. Better avoid working directly on the
    `master` branch, to avoid conflicts if you pull in updates from origin.
- Make commits of logical units.
- Check for unnecessary whitespace with `git diff --check` before committing.
- Use descriptive commit messages and reference the #issue number.

## Submitting Changes

- Push your changes to a topic branch in your fork of the repository.
- Submit a pull request to the repository

## Editor Config

The project uses .editorconfig to define the coding style of each file. We recommend that you install the Editor Config extension for your preferred IDE.


================================================
FILE: .github/FUNDING.yml
================================================
patreon: swiperjs
open_collective: swiper
github: nolimits4web


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
contact_links:
  - name: 🙏 Open Collective
    url: https://opencollective.com/swiper/
    about: Love Swiper? Please consider supporting us via Open Collective.
  - name: 📃 Documentation Issue
    url: https://github.com/nolimits4web/swiper-website/issues/new
    about: Issues with Swiper website


================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.yml
================================================
name: "\U0001F680 New feature proposal"
description: Propose a new feature to be added to Swiper
labels: ['feature request']
body:
  - type: markdown
    attributes:
      value: |
        Thanks for your interest in the project and taking the time to fill out this feature report!
  - type: textarea
    id: feature-description
    attributes:
      label: Clear and concise description of the problem
      description: As a developer using Swiper I want [goal / wish] so that [benefit]
    validations:
      required: true
  - type: textarea
    id: suggested-solution
    attributes:
      label: Suggested solution
      description: 'In module [xy] we could provide following implementation...'
    validations:
      required: true
  - type: textarea
    id: alternative
    attributes:
      label: Alternative
      description: Clear and concise description of any alternative solutions or features you've considered.
  - type: textarea
    id: additional-context
    attributes:
      label: Additional context
      description: Any other context or screenshots about the feature request here.
  - type: checkboxes
    id: checkboxes
    attributes:
      label: Validations
      description: Before submitting the issue, please make sure you do the following
      options:
        - label: Follow our [Code of Conduct](https://github.com/nolimits4web/swiper/blob/master/CODE_OF_CONDUCT.md)
          required: true
        - label: Read the [docs](https://swiperjs.com/swiper-api).
          required: true
        - label: Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
          required: true
  - type: checkboxes
    id: pr
    attributes:
      label: Would you like to open a PR for this feature?
      description: Before starting to work on PR it is recommended to get maintainers approval.
      options:
        - label: I'm willing to open a PR
          required: false


================================================
FILE: .github/ISSUE_TEMPLATE/swiper_core_issue.yml
================================================
name: '🐞 Swiper Core Issue'
description: Report an issue with Swiper
labels: []
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!
  - type: checkboxes
    id: qa
    attributes:
      label: Check that this is really a bug
      description: For Q&A open a [GitHub Discussion](https://github.com/nolimits4web/swiper/discussions)
      options:
        - label: I confirm
          required: true
  - type: input
    id: reproduction
    attributes:
      label: Reproduction link
      description: Please provide a link to a repo that can reproduce the problem you ran into. You can fork one of our [demos](https://swiperjs.com/demos) in codesandbox to get start. A reproduction is required unless you are absolutely sure that the issue is obvious and the provided information is enough to understand the problem. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "missing demo" label. If no reproduction is provided after 3 days, it will be auto-closed.
      placeholder: 'https://codesandbox.io/..'
    validations:
      required: true
  - type: textarea
    id: descr
    attributes:
      label: Bug description
      description: A clear and concise description of what the bug is
    validations:
      required: true
  - type: textarea
    id: expected
    attributes:
      label: Expected Behavior
      description: A concise description of what you expected to happen
    validations:
      required: false
  - type: textarea
    id: actual
    attributes:
      label: Actual Behavior
      description: A concise description of what you're experiencing
    validations:
      required: false
  - type: input
    id: swiper
    attributes:
      label: Swiper version
      description: Exact release version or commit hash
      placeholder: e.g 7.0.0
    validations:
      required: true
  - type: input
    id: browser
    attributes:
      label: Platform/Target and Browser Versions
      description: Platform client you are targeting such as macOS, Windows, Cordova, iOS, Android, Chrome, etc.
      placeholder: e.g macOS Safari 14.1
    validations:
      required: true
  - type: checkboxes
    id: checkboxes
    attributes:
      label: Validations
      description: Before submitting the issue, please make sure you do the following
      options:
        - label: Follow our [Code of Conduct](https://github.com/nolimits4web/swiper/blob/master/CODE_OF_CONDUCT.md)
          required: true
        - label: Read the [docs](https://swiperjs.com/swiper-api).
          required: true
        - label: Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
          required: true
        - label: Make sure this is a Swiper issue and not a framework-specific issue
          required: true
  - type: checkboxes
    id: pr
    attributes:
      label: Would you like to open a PR for this bug?
      description: Before starting to work on PR it is recommended to get maintainers approval
      options:
        - label: I'm willing to open a PR
          required: false


================================================
FILE: .github/ISSUE_TEMPLATE/swiper_element_issue.yml
================================================
name: '🐞 Swiper Element Issue'
description: Report an issue with Swiper Element
labels: ['Element']
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!
  - type: checkboxes
    id: qa
    attributes:
      label: Check that this is really a bug
      description: For Q&A open a [GitHub Discussion](https://github.com/nolimits4web/swiper/discussions)
      options:
        - label: I confirm
          required: true
  - type: input
    id: reproduction
    attributes:
      label: Reproduction link
      description: Please provide a link to a repo that can reproduce the problem you ran into. You can fork one of our [demos](https://swiperjs.com/demos) in codesandbox to get start. A reproduction is required unless you are absolutely sure that the issue is obvious and the provided information is enough to understand the problem. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "missing demo" label. If no reproduction is provided after 3 days, it will be auto-closed.
      placeholder: 'https://codesandbox.io/..'
    validations:
      required: true
  - type: textarea
    id: descr
    attributes:
      label: Bug description
      description: A clear and concise description of what the bug is
    validations:
      required: true
  - type: textarea
    id: expected
    attributes:
      label: Expected Behavior
      description: A concise description of what you expected to happen
    validations:
      required: false
  - type: textarea
    id: actual
    attributes:
      label: Actual Behavior
      description: A concise description of what you're experiencing
    validations:
      required: false
  - type: input
    id: swiper
    attributes:
      label: Swiper version
      description: Exact release version or commit hash
      placeholder: e.g 7.0.0
    validations:
      required: true
  - type: input
    id: browser
    attributes:
      label: Platform/Target and Browser Versions
      description: Platform client you are targeting such as macOS, Windows, Cordova, iOS, Android, Chrome, etc.
      placeholder: e.g macOS Safari 14.1
    validations:
      required: true
  - type: checkboxes
    id: checkboxes
    attributes:
      label: Validations
      description: Before submitting the issue, please make sure you do the following
      options:
        - label: Follow our [Code of Conduct](https://github.com/nolimits4web/swiper/blob/master/CODE_OF_CONDUCT.md)
          required: true
        - label: Read the [docs](https://swiperjs.com/swiper-api).
          required: true
        - label: Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
          required: true
        - label: Make sure this is a Swiper issue and not a framework-specific issue
          required: true
  - type: checkboxes
    id: pr
    attributes:
      label: Would you like to open a PR for this bug?
      description: Before starting to work on PR it is recommended to get maintainers approval
      options:
        - label: I'm willing to open a PR
          required: false


================================================
FILE: .github/ISSUE_TEMPLATE/swiper_react_issue.yml
================================================
name: '🐞 Swiper React Issue'
description: Create a report for Swiper React components
labels: 'React'
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!
  - type: checkboxes
    id: qa
    attributes:
      label: Check that this is really a bug
      description: For Q&A open a [GitHub Discussion](https://github.com/nolimits4web/swiper/discussions)
      options:
        - label: I confirm
          required: true
  - type: input
    id: reproduction
    attributes:
      label: Reproduction link
      description: Please provide a link to a repo that can reproduce the problem you ran into. You can fork one of our [demos](https://swiperjs.com/demos) in codesandbox to get start. A reproduction is required unless you are absolutely sure that the issue is obvious and the provided information is enough to understand the problem. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "missing demo" label. If no reproduction is provided after 3 days, it will be auto-closed.
      placeholder: 'https://codesandbox.io/..'
    validations:
      required: true
  - type: textarea
    id: descr
    attributes:
      label: Bug description
      description: A clear and concise description of what the bug is
    validations:
      required: true
  - type: textarea
    id: expected
    attributes:
      label: Expected Behavior
      description: A concise description of what you expected to happen
    validations:
      required: false
  - type: textarea
    id: actual
    attributes:
      label: Actual Behavior
      description: A concise description of what you're experiencing
    validations:
      required: false
  - type: input
    id: swiper
    attributes:
      label: Swiper version
      description: Exact release version or commit hash
      placeholder: e.g 7.0.0
    validations:
      required: true
  - type: input
    id: browser
    attributes:
      label: Platform/Target and Browser Versions
      description: Platform client you are targeting such as macOS, Windows, Cordova, iOS, Android, Chrome, etc.
      placeholder: e.g macOS Safari 14.1
    validations:
      required: true
  - type: checkboxes
    id: checkboxes
    attributes:
      label: Validations
      description: Before submitting the issue, please make sure you do the following
      options:
        - label: Follow our [Code of Conduct](https://github.com/nolimits4web/swiper/blob/master/CODE_OF_CONDUCT.md)
          required: true
        - label: Read the [docs](https://swiperjs.com/swiper-api).
          required: true
        - label: Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
          required: true
        - label: Make sure this is a Swiper issue and not a framework-specific issue
          required: true
  - type: checkboxes
    id: pr
    attributes:
      label: Would you like to open a PR for this bug?
      description: Before starting to work on PR it is recommended to get maintainers approval
      options:
        - label: I'm willing to open a PR
          required: false


================================================
FILE: .github/ISSUE_TEMPLATE/vue_issue.yml
================================================
name: 🐞 Swiper Vue Issue
description: Create a report for Swiper Vue components
labels: 'Vue'
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!
  - type: checkboxes
    id: qa
    attributes:
      label: Check that this is really a bug
      description: For Q&A open a [GitHub Discussion](https://github.com/nolimits4web/swiper/discussions)
      options:
        - label: I confirm
          required: true
  - type: input
    id: reproduction
    attributes:
      label: Reproduction link
      description: Please provide a link to a repo that can reproduce the problem you ran into. You can fork one of our [demos](https://swiperjs.com/demos) in codesandbox to get start. A reproduction is required unless you are absolutely sure that the issue is obvious and the provided information is enough to understand the problem. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "missing demo" label. If no reproduction is provided after 3 days, it will be auto-closed.
      placeholder: 'https://codesandbox.io/..'
    validations:
      required: true
  - type: textarea
    id: descr
    attributes:
      label: Bug description
      description: A clear and concise description of what the bug is
    validations:
      required: true
  - type: textarea
    id: expected
    attributes:
      label: Expected Behavior
      description: A concise description of what you expected to happen
    validations:
      required: false
  - type: textarea
    id: actual
    attributes:
      label: Actual Behavior
      description: A concise description of what you're experiencing
    validations:
      required: false
  - type: input
    id: swiper
    attributes:
      label: Swiper version
      description: Exact release version or commit hash
      placeholder: e.g 6.7.1
    validations:
      required: true
  - type: input
    id: browser
    attributes:
      label: Platform/Target and Browser Versions
      description: Platform client you are targeting such as macOS, Windows, Cordova, iOS, Android, Chrome, etc.
      placeholder: e.g macOS Safari 14.1
    validations:
      required: true
  - type: checkboxes
    id: checkboxes
    attributes:
      label: Validations
      description: Before submitting the issue, please make sure you do the following
      options:
        - label: Follow our [Code of Conduct](https://github.com/nolimits4web/swiper/blob/master/CODE_OF_CONDUCT.md)
          required: true
        - label: Read the [docs](https://swiperjs.com/swiper-api).
          required: true
        - label: Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
          required: true
        - label: Make sure this is a Swiper issue and not a framework-specific issue
          required: true
  - type: checkboxes
    id: pr
    attributes:
      label: Would you like to open a PR for this bug?
      description: Before starting to work on PR it is recommended to get maintainers approval
      options:
        - label: I'm willing to open a PR
          required: false


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue.

The best way to propose a feature is to open an issue first and discuss your ideas there before implementing them.

Always follow the [contribution guidelines](https://github.com/nolimits4web/swiper/blob/master/CONTRIBUTING.md) when submitting a pull request.


================================================
FILE: .github/dependabot.yml
================================================
 - package-ecosystem: npm
    directory: "/"
    schedule:
      interval: monthly
    versioning-strategy: increase

  - package-ecosystem: github-actions
    directory: "/"
    schedule:
      interval: monthly


================================================
FILE: .github/lock.yml
================================================
daysUntilLock: 240
exemptLabels:
  - feature request
  - in progress
lockLabel: outdated
lockComment: false


================================================
FILE: .github/stale.yml
================================================
daysUntilStale: 180
daysUntilClose: 60
exemptLabels:
  - feature request
  - probably bug
  - bug confirmed
  - in progress
staleLabel: stale
markComment: >
  This issue has been automatically marked as stale because it has not had
  recent activity. It will be closed if no further activity occurs. Thank you
  for your contributions.
closeComment: >
  This issue has been automatically closed due to inactivity.
  If this issue is still actual, please, create the new one.


================================================
FILE: .github/workflows/build.yml
================================================
name: Build
on:
  push:
    branches: [master, Swiper6, Swiper7, Swiper8]
  pull_request:
    branches: [master, Swiper6, Swiper7, Swiper8]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the repository
        uses: actions/checkout@v2
      - name: Install Node.js
        uses: actions/setup-node@v2
        with:
          node-version: 18
      - name: Install dependencies
        run: npm install
      - name: Run build
        run: npm run build:prod


================================================
FILE: .github/workflows/formatting.yml
================================================
name: Formatting
on:
  push:
    branches: [master, Swiper6, Swiper7, Swiper8]
  pull_request:
    branches: [master, Swiper6, Swiper7, Swiper8]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the repository
        uses: actions/checkout@v2
      - name: Install Node.js
        uses: actions/setup-node@v2
        with:
          node-version: 18
      - name: Install dependencies
        run: npm install
      - name: Run prettier check
        run: npm run check-format


================================================
FILE: .github/workflows/issue-close-require.yml
================================================
name: Issue Close Require

on:
  schedule:
    - cron: '0 0 * * *'

jobs:
  close-issues:
    runs-on: ubuntu-latest
    steps:
      - name: missing demo
        uses: actions-cool/issues-helper@v2.2.1
        with:
          actions: 'close-issues'
          token: ${{ secrets.GITHUB_TOKEN }}
          labels: 'missing demo'
          inactive-day: 3


================================================
FILE: .github/workflows/issue-labeled.yml
================================================
name: Issue Labeled

on:
  issues:
    types: [labeled]

jobs:
  reply-labeled:
    runs-on: ubuntu-latest
    steps:
      - name: missing demo
        if: github.event.label.name == 'missing demo'
        uses: actions-cool/issues-helper@v2.2.1
        with:
          actions: 'create-comment, remove-labels'
          token: ${{ secrets.GITHUB_TOKEN }}
          issue-number: ${{ github.event.issue.number }}
          body: |
            Hello @${{ github.event.issue.user.login }}. Please provide a online reproduction by [codesandbox](https://codesandbox.io/) or a minimal GitHub repository. You can fork one of our [demos](https://swiperjs.com/demos) in codesandbox to get start. Issues labeled by `missing demo` will be closed if no activities in 3 days.


================================================
FILE: .github/workflows/lint.yml
================================================
name: Lint
on:
  push:
    branches: [master, Swiper6, Swiper7, Swiper8]
  pull_request:
    branches: [master, Swiper6, Swiper7, Swiper8]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the repository
        uses: actions/checkout@v2
      - name: Install Node.js
        uses: actions/setup-node@v2
        with:
          node-version: 18
      - name: Install dependencies
        run: npm install
      - name: Run eslint
        run: npm run lint


================================================
FILE: .gitignore
================================================
.DS_Store
node_modules
custom
*.log

.versions
.idea
dist


# local env files
.env.local
.env.development.local
.env.test.local
.env.production.local
.eslintcache
src/swiper-element-bundle.mjs

# Agents
.claude
.agents
.cursor
.gemini
.codex
.opencode


================================================
FILE: .lintstagedrc
================================================
{
  "*.+(js)": [
    "eslint"
  ],
  "*.+(js|json|scss|css|less|ts)": [
    "prettier --write"
  ]
}


================================================
FILE: .npmignore
================================================
.git
.github
build
demos
node_modules
playground
scripts


================================================
FILE: .prettierignore
================================================
build
node_modules
dist
.nova
package.json
.claude
.agents
.cursor
.gemini
.codex
.opencode


================================================
FILE: .prettierrc
================================================
{
  "arrowParens": "always",
  "bracketSpacing": true,
  "htmlWhitespaceSensitivity": "css",
  "insertPragma": false,
  "jsxSingleQuote": false,
  "printWidth": 100,
  "proseWrap": "preserve",
  "quoteProps": "as-needed",
  "requirePragma": false,
  "endOfLine": "auto",
  "semi": true,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "all",
  "useTabs": false,
  "vueIndentScriptAndStyle": false
}


================================================
FILE: .vscode/settings.json
================================================
{
  "editor.formatOnSave": true,
  "eslint.enable": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}


================================================
FILE: BACKERS.md
================================================
# Backers

Support Swiper development by [pledging on Open Collective](http://opencollective.com/swiper)!

<!-- SPONSORS_TABLE_WRAP -->
<table>
  <tr>
    <td align="center" valign="middle">
      <a href="https://fi.parhaatuudetkasinot.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/parhaatuudetkasinotcom.png" alt="Uudet Nettikasinot" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.vanguardngr.com/casino/fr/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/vanguardngr-france.png" alt="VanguardNGR France" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://marsbahis.com/tr/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/noah23.png" alt="Marsbahis: Marsbahis Giriş - Marsbahis Güncel Adres ve Üyelik" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://heinekenjazzaldia.eus/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinossinlicenciaespana.png" alt="Casinos Sin Licencia En España" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://royalwriter.co.uk/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/royal-writer.png" alt="Skilled Writers for In-Depth Academic Papers" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.masterpapers.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/masterpapers.png" alt="Masterpapers - Qualified writers delivering excellence in every word!" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinosfest.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinosfest.png" alt="Best Online Casinos Canada" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://grademiners.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/grademiners.png" alt="Grademiners - Professional writers, original content, quality you can trust!" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.nettikasinot.org/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/nettikasinot-org.png" alt="Nettikasinot" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://nejlepsiceskacasina.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/nejlepsiceskacasinacom.png" alt="České Online Casino: Hrajte Bezpečně a Výhodně v 2024" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://slovenskeonlinecasino.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/slovenskeonlinecasinocom.png" alt="Najlepšie Online Casino Slovensko 2024 | Október 2024" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://ssmarket.net/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/ss-market.png" alt="SS Market: Social Media Services Market" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://automatenspieler.net/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/automatenspieler.png" alt="Automatenspieler" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://uusimmatkasinot.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/uusimmatkasinotcom.png" alt="Uudet nettikasinot 2024 » Listaamme Suomen uudet kasinot" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.kasinohai.com/nettikasinot" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/kasinohai.png" alt="Nettikasinot 2022 | Löydä Luotettava & Turvallinen Nettikasino!" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.nongamstopodds.com/casinos-not-on-gamstop/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/nongamstopodds.png" alt="NonGamStopOdds casino sites" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.casinotest.de" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinotest.png" alt="Online Casino Test 2022 » 90+ Casinos von Experten geprüft!" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://parimatch.in/en/football/live" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/parimatch.png" alt="Online sports betting and casino at Parimatch India" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casino-wise.com/casinos-not-on-gamstop/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casino-wise-com.png" alt="Casinos not on GamStop | Casino-Wise.com" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.nongamstopwager.com/casinos-not-on-gamstop/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/nongamstopwager-com.png" alt="Casinos not on GamStop UK 🏆 NonGamStopWager.com" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinoauditor.com/online-casinos-cyprus/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinoauditor.png" alt="Online Casinos Cyprus - CasinoAuditor" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinoshunter.com/online-casinos/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinos-hunter.png" alt="Best Online Casinos in Canada" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.stltoday.com/exclusive/3-top-rated-platforms-to-buy-tiktok-followers-for-fast-growth/article_74fb98eb-6019-5b74-9cda-803a7d4ac4a2.html" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/buy-tiktok-followers-stl-today.png" alt="Buy TikTok Followers - STL Today" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://au.trustpilot.com/review/pokiesgambler.com" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/pokiesgamblercom.png" alt="Online Pokies in Australia" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://topl.co" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/no-deposit-casinos.png" alt="No Deposit Casinos" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://brecktic.uk/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/brecktic-ltd.png" alt="Brecktic UK" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.fortune365.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/fortune365.png" alt="fortune365" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://cryptocasino-guide.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/cryptocasino-guide.png" alt="CryptoCasino Guide" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.fbpostlikes.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/pankaj-jangir.png" alt="Buy Facebook Likes for Post & Page" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.reddit.com/r/BusinessVault/comments/1nr32xk/whats_the_best_smm_panel_looking_for_suggestions/?utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/smm-panel19.png" alt="SMM Panel" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://finance.yahoo.com/news/best-website-super-clone-watches-073500706.html" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/super-clone-prestige.png" alt="Yahoo Finance - Super Clone Watches" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://superclonereps.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/superclonewatch.png" alt="superclonewatch" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://detecting-ai.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/detecting-aicom.png" alt="AI Detector & AI Checker for ChatGPT, Gemini, Claude, & More" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.idsnews.com/article/2025/09/buy-instagram-followers" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/buy-instagram-followers-ids-ne.png" alt="Buy Instagram Followers - IDS News" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://gmkoutsi.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/gmkoutsi.png" alt="gmkoutsi.com" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://interac-casino.com/en-ca/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/interac-casino-canada.png" alt="Interac-casino.com - Canada" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://releaf.com/de/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/releaf-medizinischer-cannabis-shop.png" alt="Releaf - Medizinischer Cannabis Shop" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://legitcasino.vip/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/legit-casino.png" alt="Legit Casino" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.eurocommpr.at/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/eurocommpr.png" alt="EuroCommpr" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://snapinsta.vin/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/snapinsta.png" alt="SnapInsta" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://gpc.fm/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/brand-new-online-casinos-usa-no-deposit-bonus.png" alt="Brand New Online Casinos USA No Deposit Bonus" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.hfm.com/int/jp/trading-education/what-is-forex" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/hfmcom.png" alt="fx取引とは" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://bonustly.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/bonustly-best-crypto-casino-bonuses.png" alt="Bonustly: Best Crypto Casino Bonuses" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinononaamsit.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinononaamsit-com.png" alt="Migliori Casino non AAMS in Italia 2025" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.hfm.com/int/jp/trading-education/what-is-forex" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/hfmcom.png" alt="fx取引とは" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://opencollective.com/jokacasino" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/jokacasino.png" alt="online casino australia JokaCasino" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://swipey.ai/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/swipey.png" alt="Swipey AI - NSFW Chat" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://nondetected.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/nondetected.png" alt="Remove negative information from the Internet | NonDetected.com" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://opencollective.com/king-johnnie1" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/king-johnnie1.png" alt="king Johnnie" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://collegian.com/sponsored/2025/03/buy-youtube-subscribers/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/buy-youtube-subscribers-collegian.png" alt="buy YouTube subscribers" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.reddit.com/r/InstagramEmpire/comments/1o8v7zx/whats_the_best_site_to_buy_instagram_followers/?utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/buy-real-instagram-followers1.png" alt="buy instagram followers" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.kasinoranking.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/kasinoranking.png" alt="Luotettavat nettikasinot 2025" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://newcasinos.vip/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/newcasinosvip.png" alt="Best New Online Casinos in 2025" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.backlinksrocket.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/backlinksrocket.png" alt="Buy Backlinks - High Quality SEO Backlink Services" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://kingjohnnie-au.casino/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/kingjohnnie-casino-australia.svg" alt="King Johnnie Casino Australia" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://nomaspinn.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/nomaspin.svg" alt="Nomaspin Casino Nederland" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://buytiktokfollowers.co/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/buy-tiktok-followers-co.png" alt="Buy TikTok Followers" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://tiktokfame.co/buy-tiktok-followers/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/tiktokfameco.png" alt="Buy TikTok Followers & Get Fame" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.softorbits.net/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/softorbits.png" alt="SoftOrbits - Easiest Photo Editing Software for Beginners" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinossinlicencia.eu/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinos-sin-licencia-en-espana1.png" alt="casinos sin licencia en España" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://homeworkguy.org/someone-to-take-my-online-class" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/homeworkguy.png" alt="someone to take my online class service" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.bestetf.net/list/artificial-intelligence/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/bestetf.png" alt="AI ETFs" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://superluxuryreps.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/superluxuryreps.png" alt="Super Clone Watches - Trusted Dealer For 1:1 Replica Watches" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.hfm.com/int/jp/trading-education/how-to-trade-gold" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/hfm.png" alt="ゴールド取引" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.reddit.com/r/MarketingMentor/comments/1cut7x5/where_to_buy_instagram_followers_likes/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/givemeboost.png" alt="Buy Instagram Followers " width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://prestigewatches.co/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/prestige_watches.png" alt="Super Clone Watches For Sale: Best Website for 1:1 Replica Watches" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://unaimytext.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/humanize-ai-unaimytext.png" alt="humanize ai unaimytext" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.casinotopplistan.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinotopplistan-com.png" alt="Casino online - Vi jämför casinon på nätet i Sverige" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.kasinonetti.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/kasinonetti-com.png" alt="Parhaat kasinot - Valitse turvallinen nettikasino" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://nogamstopcasinos.uk/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/non-gamstop-casinos3.png" alt="New Casinos Not on Gamstop - Best Non GamStop sites in 2025" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinonotongamstop.uk/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casino-not-on-gamstop.webp" alt="Casino not on GamStop" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://socialfollowers.io/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/socialfollowers.png" alt="The Best Social Media Promotion Service Provider" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://casinotreasure.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinotreasure.jpeg" alt="Trusted Source for Online Casino Info , Games, Guides , Reviews" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.mixx.com/buy-instagram-followers" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/buy-instagram-followers-mixx.png" alt="Buy Instagram Followers with Instant Delivery" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://expressfollowers.com/buy-tiktok-followers" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/buy-tiktok-followers2.png" alt="buy tiktok followers" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://boostlikes.uk/buy-youtube-subscribers-views/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/buy-instagram-followers-uk.webp" alt="Buy YouTube Subscribers & Views UK" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://miramtech.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/miramtech.png" alt="Miramtech" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.uudetkasinot.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/simon-johansson.svg" alt="Uudet Nettikasinot Huhtikuu 2025 | Parhaat Uudet Kasinot" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://goldstarsocial.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/user-c1ad5e70.png" alt="Goldstar Social" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://pistolocasino.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/pistolocasino.png" alt="Pistolo Casino" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://follower-boerse.de/product/tiktok-likes-kaufen/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/tiktok-likes.png" alt="TikTok Likes" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.socialfollowers.uk/buy-tiktok-followers/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/social-followers.png" alt="Buy Tiktok Followers" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.palace-luzern.ch/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/auslandische-online-casinos-schweiz.png" alt="Online Casino Ausland: Beste ausländische Online Casinos" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://kasynoplonline.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/bonus-bez-depozytu.png" alt="Kasyno online w Polsce" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://buylikesservices.com/free-instagram-likes/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/free-instaram-likes.png" alt="Free Instagram Likes" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.favbet.ro/ro/casino/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/favbet-ro.jpeg" alt="Casino online Favbet" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://twesocial.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/buy-twitter-followers-visit-twesocial.png" alt="Buy X Followers from TweSocial (Instant & Cheap)" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://sidesmedia.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/sidesmedia.png" alt="SidesMedia: Buy Followers, Views, Likes & More" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinosinternacionalesonline.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinosinternacionalesonline.png" alt="Mejores Casinos Internacionales Online de España 2025" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.casinokennis.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinokennis.png" alt="CasinoKennis" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinoonlineellada.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinoonlineelladacom.png" alt="casino online ellada" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.favbet.ua/uk/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/favbet.png" alt="БК Favbet" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.vso.org.uk/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinos-not-on-gamstop10.png" alt="casinos not on Gamstop" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://bonusoid.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/bonusoidcom.png" alt="Online Casinos mit deutscher Lizenz" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.casinofy.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinofy.png" alt="Casinofy" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinoallianz.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinoallianz.png" alt="CasinoAllianz" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://casinos.it.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casino-online-italia.png" alt="casinò online Italia" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.stjamestheatre.co.uk/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/non-gamstop-casinos.png" alt="Top UK Casinos Not on GamStop in 2025" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://nogamstopcasinos.org.uk/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/nogamstopcasinos.png" alt="nogamstopcasinos.org.uk" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://mysocialfollowing.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/mysocialfollowing.png" alt="My Social Following" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://dashtickets.nz/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/dashtickets-new-zealand-gambling-magazine.png" alt="DashTickets New Zealand gambling magazine" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://tethercasinos.top/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/tethercasinos.png" alt="best tether casinos" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.socialboosting.com/buy-tiktok-followers" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/socialboosting.png" alt="Buy TikTok Followers" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://betking.com.ua/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/betking.png" alt="Онлайн казино та БК (ставки на спорт) в Україні" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://tychebets.gr/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/tychebets-gr.png" alt="O Καλύτερος Οδηγός Online Καζίνο" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.top-casino.nl/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/top-casino.png" alt="Top online casino's van Nederland" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://polskiesloty.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/onlinekasyno-polis.jpg" alt="Polskie Sloty" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://robocat.casino/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/robocat-casino.png" alt="RoboCat Casino" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://zamsino.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/zamamamma.png" alt="Zamsino.com 🎖️ Global Online Gambling Guide" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://betwinnerpartner.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/betwinnerpartner.png" alt="Betwinner Partner" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.casinosdeutschlandonline.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/online-casinos-deutschland.png" alt="Online Casinos Deutschland" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinosportugal.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinos-portugal.png" alt="Casinos online em Portugal" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://bettingsite.cc/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/betting-site.png" alt="Betting Site" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.onlinecasinolegends.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/online-casino-legends.png" alt="Online Casino Nederland" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://nongamstopcasinos.net/gb/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/nongamstopcasinosnet.png" alt="UK Casinos not on GamStop 2025 - nongamstopcasinos.net" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://guidebook.betwinner.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/guidebook_betwinner_com.png" alt="Guidebook.BetWinner" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://zondercruks.net/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/zondercruksnet.png" alt="ZonderCruks - Online Gokken Zonder CRUKS" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinosinlicenciaespana.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/mejores-casinos-sin-licencia-en-espana1.png" alt="Mejores Casinos Sin Licencia en España" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://sanctionslawyers.net/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/sanctionslawyers-net.png" alt="SANCTIONS LAW FIRM" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://interpollawfirm.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/interpollawfirmcom.png" alt="Interpol Law Firm" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://nongamstopbookiesuk.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/try-bookmakers-not-on-gamstop.png" alt="try bookmakers not on GamStop" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://leofame.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/leofame.png" alt="Buy Instagram Followers & Likes" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.teravisiontech.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/teravisiontech.webp" alt="Accelerating Your Software Products | Teravision Technologies" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://onlinecasinosgr.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casino-magyar.png" alt="Casino Magyar" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://onlinecasinosgr.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/onlinecasinosgr-com.png" alt="Ta καλύτερα διαδικτυακά καζίνο στην Ελλάδα το 2024" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://bulkoid.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/bulkoid_com.png" alt="Bulkoid" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.gokken-online.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/gokken-online.png" alt="Gokken Online" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://greece-casinos.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/greece-casinos.png" alt="Greece Casinos" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.hellobonuses.com/nl/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casino-bonussen-nederland.png" alt="Casino Bonussen Nederland" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.ownedcore.com/casino/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casino-usa.png" alt="Casino No deposit Bonus 2024" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://blastup.com/buy-instagram-likes" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/blastup_com.png" alt="Buy Instagram Likes - Real Likes & Instant Delivery!" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://vedonlyontiyhtiot.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/vedonlyontiyhtiot-com.svg" alt="Vedonlyontiyhtiot.com - Parhaat Vedolyöntiyhtiöt & Bonukset" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://celebian.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/celebian.png" alt="Purchase TikTok followers, likes and views" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://views4you.com/buy-youtube-views/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/buy-youtube-views-views4you.png" alt="Buy Youtube Views" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.upgrow.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/upgrow.png" alt="UpGrow: #1 AI-Powered Instagram Growth | Real IG Followers" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.doublethebitcoin.net/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/doublethebitcoin.png" alt="Best Bitcoin Casinos" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://topnoaccountcasinos.com/nl/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/topnoaccountcasinos.png" alt="Topnoaccountcasinos casino zonder registratie" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.prointernet.in.ua/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/prointernet-2.png" alt="Prointernet" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://nexussmoke.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/nexus-smoke.png" alt="Nexus Smoke Premium E-Liquid and Luxury Vape Products" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.overlyzer.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/overlyzer_com.png" alt="Overlyzer » football betting analyzer & soccer predictions" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://spelpressen.se/casino-reportage/casino-utan-svensk-licens" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/spelpressen-se.png" alt="Casino utan Svensk Licens | Bästa Casinon utan Spelpaus 🎖️" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://betfans.nl/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/betfans.png" alt="BetFans - Alles over online wedden; Bookmakers Vergelijken" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.onlineunitedstatescasinos.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/online-united-states-casinos.png" alt="Top USA Online Casinos September 2023 | Online United States Casinos" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://philippinescasinos.ph/gcash/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/philippinescasinosph.png" alt="Best Online Casino in Philippines using GCash | 2023 Rank" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://cyberogism.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/cyberogism.png" alt="Technology, Security, Innovation, The Cyber World Now | Cyberogism" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://buycheapestfollowers.com/buy-instagram-reels-views" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/thebestsolution.png" alt="Buy Instagram Reels Views" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://onlinecasinosspelen.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/onlinecasinosspelen.png" alt="Onlinecasinosspelen.com site is dé nummer één gids, waardoor je gemakkelijk alle informatie van de top 10 online casino sites." width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://rotativka.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/rotativka.png" alt="Rotativka.com - Най-добрите онлайн казина в България" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.casinoaustraliaonline.com/under-1-hour-withdrawal-casinos/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinoaustraliaonline.png" alt="Under 1 Hour Withdrawal Casinos in Australia - 2022" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://betbetter-pa.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/betbetter.png" alt="PA Online Casino - List of Best Casinos in Pennsylvania" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinozonderregistratie.net/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/czrnet.png" alt="Casino Zonder Registratie 2022 | CZR's Top No Account Casino's Ranglijst" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://nieuwe-casinos.net/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/nieuwecasinos.png" alt="Nieuwe Online Casino's December 2022 | Overzicht van de top nieuwe casinos!" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://4rabet.com/app" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/4rabet.svg" alt="cricket betting app" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.wisergamblers.com/de/casino-bonus-ohne-einzahlung/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/wisergamblers.png" alt="WiserGamblers | Best Online Gambling Guide" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://betting-sider.net/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/betting-sider.png" alt="betting sider" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://thecasinowizard.com/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/thecasinowizard.png" alt="The Casino Wizard » Best Casinos & (No) Deposit Bonuses 2022" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://www.fast.bet/ca/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/fastbet-bet-ca.png" alt="Fastest Payout Casinos in Canada [2022]" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://cliquestudios.com" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/cliquestudios.png" alt="Clique Studios - Creative Digital Transformation" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://correctcasinos.com" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/correctcasinos.png" alt="Correct Casinos | The Ultimate Guide to the Legit Online Casinos" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://writingmetier.com/extended-essay-writing-service/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/writingmetier.png" alt="IB extended essay writing service" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.wizardslots.com" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/wizardslots.png" alt="Online Slots - UK Slot Games - 500 FREE Spins at Wizard Slots" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://www.fortunegames.com" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/fortunegames.png" alt="Fortune Games® | Free Spins No Deposit Slot Games | Online Slots" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://tankpenge.dk" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/tankpenge-dk.png" alt="LÅN PENGE NU | Hurtige Online lån 2021 | Klik her og Ansøg i dag" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://veepn.com/vpn-apps/vpn-for-chrome/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/veepn.png" alt="VPN for Chrome to Make Web Surfing 100% Safe" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinoexpo.se/casino-utan-registrering/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinoexpo.jpg" alt="CasinoExpo casino utan registrering" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://najlepsibukmacherzy.pl/ranking-legalnych-bukmacherow/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/netpositive.png" alt="Ranking Bukmacherów Legalnych 2020. Bukmacher nr 1 to..." width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://casinosters.com" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/casinosters.svg" alt="The Best Online Casinos in the UK » Gambling Sites by Casinosters" width="160">
      </a>
    </td>
    <td align="center" valign="middle">
      <a href="https://gamblizard.com/deposit-bonuses/deposit-10-pound/" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/gamblizard.png" alt="Deposit £10 Play with 30, 40, 50, 60, 70, or 80 Pounds✔️ GambLizard" width="160">
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="middle">
      <a href="https://goread.io/buy-instagram-likes" target="_blank">
        <img src="https://swiperjs.com/images/sponsors/goread.png" alt="Instagram likes" width="160">
      </a>
    </td>
    <td align="center" valign="middle"></td>
    <td align="center" valign="middle"></td>
    <td align="center" valign="middle"></td>
    <td align="center" valign="middle"></td>
    <td align="center" valign="middle"></td>
    <td align="center" valign="middle"></td>
    <td align="center" valign="middle"></td>
    <td align="center" valign="middle"></td>
    <td align="center" valign="middle"></td>
    <td align="center" valign="middle"></td>
    <td align="center" valign="middle"></td>
  </tr>
</table>
<!-- SPONSORS_TABLE_WRAP -->

### \$500 Platinum Sponsor

[Currently vacant. It could be you!](https://opencollective.com/swiper/contribute/platinum-sponsor-24468/checkout)

---

### \$250 Gold Sponsor

[Currently vacant. It could be you!](https://opencollective.com/swiper/contribute/gold-sponsor-24466/checkout)

---

### \$100 Silver Sponsor

<!-- SILVER_SPONSOR -->
- [Uudet Nettikasinot](https://fi.parhaatuudetkasinot.com/)
- [VanguardNGR France](https://www.vanguardngr.com/casino/fr/)
- [Marsbahis: Marsbahis Giriş - Marsbahis Güncel Adres ve Üyelik](https://marsbahis.com/tr/)
- [Casinos Sin Licencia En España](https://heinekenjazzaldia.eus/)
- [Skilled Writers for In-Depth Academic Papers](https://royalwriter.co.uk/)
- [Masterpapers - Qualified writers delivering excellence in every word!](https://www.masterpapers.com/)
- [Best Online Casinos Canada](https://casinosfest.com/)
- [Grademiners - Professional writers, original content, quality you can trust!](https://grademiners.com/)
- [Nettikasinot](https://www.nettikasinot.org/)
- [České Online Casino: Hrajte Bezpečně a Výhodně v 2024](https://nejlepsiceskacasina.com/)
- [Najlepšie Online Casino Slovensko 2024 | Október 2024](https://slovenskeonlinecasino.com/)
- [SS Market: Social Media Services Market](https://ssmarket.net/)
- [Automatenspieler](https://automatenspieler.net/)
- [Uudet nettikasinot 2024 » Listaamme Suomen uudet kasinot](https://uusimmatkasinot.com/)
- [Nettikasinot 2022 | Löydä Luotettava & Turvallinen Nettikasino!](https://www.kasinohai.com/nettikasinot)
- [NonGamStopOdds casino sites](https://www.nongamstopodds.com/casinos-not-on-gamstop/)
- [Online Casino Test 2022 » 90+ Casinos von Experten geprüft!](https://www.casinotest.de)
- [Online sports betting and casino at Parimatch India](https://parimatch.in/en/football/live)
- [Casinos not on GamStop | Casino-Wise.com](https://casino-wise.com/casinos-not-on-gamstop/)
- [Casinos not on GamStop UK 🏆 NonGamStopWager.com](https://www.nongamstopwager.com/casinos-not-on-gamstop/)
- [Online Casinos Cyprus - CasinoAuditor](https://casinoauditor.com/online-casinos-cyprus/)
- [Best Online Casinos in Canada](https://casinoshunter.com/online-casinos/)
<!-- SILVER_SPONSOR -->

[Join here!](https://opencollective.com/swiper/contribute/silver-sponsor-24464/checkout)

---

### \$50+ Sponsor

<!-- SPONSOR -->
- [Buy TikTok Followers - STL Today](https://www.stltoday.com/exclusive/3-top-rated-platforms-to-buy-tiktok-followers-for-fast-growth/article_74fb98eb-6019-5b74-9cda-803a7d4ac4a2.html)
- [Online Pokies in Australia](https://au.trustpilot.com/review/pokiesgambler.com)
- [No Deposit Casinos](https://topl.co)
- [Brecktic UK](https://brecktic.uk/)
- [fortune365](https://www.fortune365.com/)
- [CryptoCasino Guide](https://cryptocasino-guide.com/)
- [Buy Facebook Likes for Post & Page](https://www.fbpostlikes.com/)
- [SMM Panel](https://www.reddit.com/r/BusinessVault/comments/1nr32xk/whats_the_best_smm_panel_looking_for_suggestions/?utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button)
- [Yahoo Finance - Super Clone Watches](https://finance.yahoo.com/news/best-website-super-clone-watches-073500706.html)
- [superclonewatch](https://superclonereps.com/)
- [AI Detector & AI Checker for ChatGPT, Gemini, Claude, & More](https://detecting-ai.com/)
- [Buy Instagram Followers - IDS News](https://www.idsnews.com/article/2025/09/buy-instagram-followers)
- [gmkoutsi.com](https://gmkoutsi.com/)
- [Interac-casino.com - Canada](https://interac-casino.com/en-ca/)
- [Releaf - Medizinischer Cannabis Shop](https://releaf.com/de/)
- [Legit Casino](https://legitcasino.vip/)
- [EuroCommpr](https://www.eurocommpr.at/)
- [SnapInsta](https://snapinsta.vin/)
- [Brand New Online Casinos USA No Deposit Bonus](https://gpc.fm/)
- [fx取引とは](https://www.hfm.com/int/jp/trading-education/what-is-forex)
- [Bonustly: Best Crypto Casino Bonuses](https://bonustly.com/)
- [Migliori Casino non AAMS in Italia 2025](https://casinononaamsit.com/)
- [fx取引とは](https://www.hfm.com/int/jp/trading-education/what-is-forex)
- [online casino australia JokaCasino](https://opencollective.com/jokacasino)
- [Swipey AI - NSFW Chat](https://swipey.ai/)
- [Remove negative information from the Internet | NonDetected.com](https://nondetected.com/)
- [king Johnnie](https://opencollective.com/king-johnnie1)
- [buy YouTube subscribers](https://collegian.com/sponsored/2025/03/buy-youtube-subscribers/)
- [buy instagram followers](https://www.reddit.com/r/InstagramEmpire/comments/1o8v7zx/whats_the_best_site_to_buy_instagram_followers/?utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button)
- [Luotettavat nettikasinot 2025](https://www.kasinoranking.com/)
- [Best New Online Casinos in 2025](https://newcasinos.vip/)
- [Buy Backlinks - High Quality SEO Backlink Services](https://www.backlinksrocket.com/)
- [King Johnnie Casino Australia](https://kingjohnnie-au.casino/)
- [Nomaspin Casino Nederland](https://nomaspinn.com/)
- [Buy TikTok Followers](https://buytiktokfollowers.co/)
- [Buy TikTok Followers & Get Fame](https://tiktokfame.co/buy-tiktok-followers/)
- [SoftOrbits - Easiest Photo Editing Software for Beginners](https://www.softorbits.net/)
- [casinos sin licencia en España](https://casinossinlicencia.eu/)
- [someone to take my online class service](https://homeworkguy.org/someone-to-take-my-online-class)
- [AI ETFs](https://www.bestetf.net/list/artificial-intelligence/)
- [Super Clone Watches - Trusted Dealer For 1:1 Replica Watches](https://superluxuryreps.com/)
- [ゴールド取引](https://www.hfm.com/int/jp/trading-education/how-to-trade-gold)
- [Buy Instagram Followers ](https://www.reddit.com/r/MarketingMentor/comments/1cut7x5/where_to_buy_instagram_followers_likes/)
- [Super Clone Watches For Sale: Best Website for 1:1 Replica Watches](https://prestigewatches.co/)
- [humanize ai unaimytext](https://unaimytext.com/)
- [Casino online - Vi jämför casinon på nätet i Sverige](https://www.casinotopplistan.com/)
- [Parhaat kasinot - Valitse turvallinen nettikasino](https://www.kasinonetti.com/)
- [New Casinos Not on Gamstop - Best Non GamStop sites in 2025](https://nogamstopcasinos.uk/)
- [Casino not on GamStop](https://casinonotongamstop.uk/)
- [The Best Social Media Promotion Service Provider](https://socialfollowers.io/)
- [Trusted Source for Online Casino Info , Games, Guides , Reviews](https://casinotreasure.com/)
- [Buy Instagram Followers with Instant Delivery](https://www.mixx.com/buy-instagram-followers)
- [buy tiktok followers](https://expressfollowers.com/buy-tiktok-followers)
- [Buy YouTube Subscribers & Views UK](https://boostlikes.uk/buy-youtube-subscribers-views/)
- [Miramtech](https://miramtech.com/)
- [Uudet Nettikasinot Huhtikuu 2025 | Parhaat Uudet Kasinot](https://www.uudetkasinot.com/)
- [Goldstar Social](https://goldstarsocial.com/)
- [Pistolo Casino](https://pistolocasino.com/)
- [TikTok Likes](https://follower-boerse.de/product/tiktok-likes-kaufen/)
- [Buy Tiktok Followers](https://www.socialfollowers.uk/buy-tiktok-followers/)
- [Online Casino Ausland: Beste ausländische Online Casinos](https://www.palace-luzern.ch/)
- [Kasyno online w Polsce](https://kasynoplonline.com/)
- [Free Instagram Likes](https://buylikesservices.com/free-instagram-likes/)
- [Casino online Favbet](https://www.favbet.ro/ro/casino/)
- [Buy X Followers from TweSocial (Instant & Cheap)](https://twesocial.com/)
- [SidesMedia: Buy Followers, Views, Likes & More](https://sidesmedia.com/)
- [Mejores Casinos Internacionales Online de España 2025](https://casinosinternacionalesonline.com/)
- [CasinoKennis](https://www.casinokennis.com/)
- [casino online ellada](https://casinoonlineellada.com/)
- [БК Favbet](https://www.favbet.ua/uk/)
- [casinos not on Gamstop](https://www.vso.org.uk/)
- [Online Casinos mit deutscher Lizenz](https://bonusoid.com/)
- [Casinofy](https://www.casinofy.com/)
- [CasinoAllianz](https://casinoallianz.com/)
- [casinò online Italia](https://casinos.it.com/)
- [Top UK Casinos Not on GamStop in 2025](https://www.stjamestheatre.co.uk/)
- [nogamstopcasinos.org.uk](https://nogamstopcasinos.org.uk/)
- [My Social Following](https://mysocialfollowing.com/)
- [DashTickets New Zealand gambling magazine](https://dashtickets.nz/)
- [best tether casinos](https://tethercasinos.top/)
- [Buy TikTok Followers](https://www.socialboosting.com/buy-tiktok-followers)
- [Онлайн казино та БК (ставки на спорт) в Україні](https://betking.com.ua/)
- [O Καλύτερος Οδηγός Online Καζίνο](https://tychebets.gr/)
- [Top online casino's van Nederland](https://www.top-casino.nl/)
- [Polskie Sloty](https://polskiesloty.com/)
- [RoboCat Casino](https://robocat.casino/)
- [Zamsino.com 🎖️ Global Online Gambling Guide](https://zamsino.com/)
- [Betwinner Partner](https://betwinnerpartner.com/)
- [Online Casinos Deutschland](https://www.casinosdeutschlandonline.com/)
- [Casinos online em Portugal](https://casinosportugal.com/)
- [Betting Site](https://bettingsite.cc/)
- [Online Casino Nederland](https://www.onlinecasinolegends.com/)
- [UK Casinos not on GamStop 2025 - nongamstopcasinos.net](https://nongamstopcasinos.net/gb/)
- [Guidebook.BetWinner](https://guidebook.betwinner.com/)
- [ZonderCruks - Online Gokken Zonder CRUKS](https://zondercruks.net/)
- [Mejores Casinos Sin Licencia en España](https://casinosinlicenciaespana.com/)
- [SANCTIONS LAW FIRM](https://sanctionslawyers.net/)
- [Interpol Law Firm](https://interpollawfirm.com/)
- [try bookmakers not on GamStop](https://nongamstopbookiesuk.com/)
- [Buy Instagram Followers & Likes](https://leofame.com/)
- [Accelerating Your Software Products | Teravision Technologies](https://www.teravisiontech.com/)
- [Casino Magyar](https://onlinecasinosgr.com/)
- [Ta καλύτερα διαδικτυακά καζίνο στην Ελλάδα το 2024](https://onlinecasinosgr.com/)
- [Bulkoid](https://bulkoid.com/)
- [Gokken Online](https://www.gokken-online.com/)
- [Greece Casinos](https://greece-casinos.com/)
- [Casino Bonussen Nederland](https://www.hellobonuses.com/nl/)
- [Casino No deposit Bonus 2024](https://www.ownedcore.com/casino/)
- [Buy Instagram Likes - Real Likes & Instant Delivery!](https://blastup.com/buy-instagram-likes)
- [Vedonlyontiyhtiot.com - Parhaat Vedolyöntiyhtiöt & Bonukset](https://vedonlyontiyhtiot.com/)
- [Purchase TikTok followers, likes and views](https://celebian.com/)
- [Buy Youtube Views](https://views4you.com/buy-youtube-views/)
- [UpGrow: #1 AI-Powered Instagram Growth | Real IG Followers](https://www.upgrow.com/)
- [Best Bitcoin Casinos](https://www.doublethebitcoin.net/)
- [Topnoaccountcasinos casino zonder registratie](https://topnoaccountcasinos.com/nl/)
- [Prointernet](https://www.prointernet.in.ua/)
- [Nexus Smoke Premium E-Liquid and Luxury Vape Products](https://nexussmoke.com/)
- [Overlyzer » football betting analyzer & soccer predictions](https://www.overlyzer.com/)
- [Casino utan Svensk Licens | Bästa Casinon utan Spelpaus 🎖️](https://spelpressen.se/casino-reportage/casino-utan-svensk-licens)
- [BetFans - Alles over online wedden; Bookmakers Vergelijken](https://betfans.nl/)
- [Top USA Online Casinos September 2023 | Online United States Casinos](https://www.onlineunitedstatescasinos.com/)
- [Best Online Casino in Philippines using GCash | 2023 Rank](https://philippinescasinos.ph/gcash/)
- [Technology, Security, Innovation, The Cyber World Now | Cyberogism](https://cyberogism.com/)
- [Buy Instagram Reels Views](https://buycheapestfollowers.com/buy-instagram-reels-views)
- [Onlinecasinosspelen.com site is dé nummer één gids, waardoor je gemakkelijk alle informatie van de top 10 online casino sites.](https://onlinecasinosspelen.com/)
- [Rotativka.com - Най-добрите онлайн казина в България](https://rotativka.com/)
- [Under 1 Hour Withdrawal Casinos in Australia - 2022](https://www.casinoaustraliaonline.com/under-1-hour-withdrawal-casinos/)
- [PA Online Casino - List of Best Casinos in Pennsylvania](https://betbetter-pa.com/)
- [Casino Zonder Registratie 2022 | CZR's Top No Account Casino's Ranglijst](https://casinozonderregistratie.net/)
- [Nieuwe Online Casino's December 2022 | Overzicht van de top nieuwe casinos!](https://nieuwe-casinos.net/)
- [cricket betting app](https://4rabet.com/app)
- [WiserGamblers | Best Online Gambling Guide](https://www.wisergamblers.com/de/casino-bonus-ohne-einzahlung/)
- [betting sider](https://betting-sider.net/)
- [The Casino Wizard » Best Casinos & (No) Deposit Bonuses 2022](https://thecasinowizard.com/)
- [Fastest Payout Casinos in Canada [2022]](https://www.fast.bet/ca/)
- [Clique Studios - Creative Digital Transformation](https://cliquestudios.com)
- [Correct Casinos | The Ultimate Guide to the Legit Online Casinos](https://correctcasinos.com)
- [IB extended essay writing service](https://writingmetier.com/extended-essay-writing-service/)
- [Online Slots - UK Slot Games - 500 FREE Spins at Wizard Slots](https://www.wizardslots.com)
- [Fortune Games® | Free Spins No Deposit Slot Games | Online Slots](https://www.fortunegames.com)
- [LÅN PENGE NU | Hurtige Online lån 2021 | Klik her og Ansøg i dag](https://tankpenge.dk)
- [VPN for Chrome to Make Web Surfing 100% Safe](https://veepn.com/vpn-apps/vpn-for-chrome/)
- [CasinoExpo casino utan registrering](https://casinoexpo.se/casino-utan-registrering/)
- [Ranking Bukmacherów Legalnych 2020. Bukmacher nr 1 to...](https://najlepsibukmacherzy.pl/ranking-legalnych-bukmacherow/)
- [The Best Online Casinos in the UK » Gambling Sites by Casinosters](https://casinosters.com)
- [Deposit £10 Play with 30, 40, 50, 60, 70, or 80 Pounds✔️ GambLizard](https://gamblizard.com/deposit-bonuses/deposit-10-pound/)
- [Instagram likes](https://goread.io/buy-instagram-likes)
<!-- SPONSOR -->

[Join here!](https://opencollective.com/swiper/contribute/sponsor-24467/checkout)

---

### \$25+ Top Supporter

<!-- TOP_SUPPORTER -->

[easy-views.org](https://easy-views.org) - High Retention Youtube Views<br>

<!-- TOP_SUPPORTER -->

[Join here!](https://opencollective.com/swiper/contribute/top-supporter-24465/checkout)

---

### \$10+ Supporter

[Quicko](https://opencollective.com/quicko)<br>

[Instagram Stories Viewer](https://opencollective.com/instagram-stories-viewer)<br>

[Will Myers](https://opencollective.com/will-myers)<br>

[Join here!](https://opencollective.com/swiper/contribute/supporter-23766/checkout)

---

### \$5+ Thank You

[Fresh Engagements](https://opencollective.com/fresh-engagements)<br>

[Instagram Services](https://www.patreon.com/user?u=67523502)<br>


================================================
FILE: CHANGELOG.md
================================================
# Changelog

# [12.1.1](https://github.com/nolimits4web/Swiper/compare/v12.1.0...v12.1.1) (2026-02-13)

### Bug Fixes

- **a11y:** fix focus in virtual mode enabled ([3055008](https://github.com/nolimits4web/Swiper/commit/30550088fd089600aec2d7f8924b88cff13abbe9)), closes [#8147](https://github.com/nolimits4web/Swiper/issues/8147)
- **core:** avoid double-subtracting offsets in centerInsufficientSlides ([#8158](https://github.com/nolimits4web/Swiper/issues/8158)) ([60b0052](https://github.com/nolimits4web/Swiper/commit/60b005222a801029a4a00d319517028afba7af18))
- **core:** prevent duplicate module initialization in constructor ([#8155](https://github.com/nolimits4web/Swiper/issues/8155)) ([#8156](https://github.com/nolimits4web/Swiper/issues/8156)) ([07738a2](https://github.com/nolimits4web/Swiper/commit/07738a233b70535c36126c5b579f2bb40049da6c))
- **types:** support boolean as a11y value ([#8157](https://github.com/nolimits4web/Swiper/issues/8157)) ([6bf76d5](https://github.com/nolimits4web/Swiper/commit/6bf76d573196c61db1328350c11e2c44f5d3ec08))

# [12.1.0](https://github.com/nolimits4web/Swiper/compare/v12.0.3...v12.1.0) (2026-01-28)

### Bug Fixes

- **autoplay:** broken custom delay percentages with pause/resume ([#8133](https://github.com/nolimits4web/Swiper/issues/8133)) ([0afecde](https://github.com/nolimits4web/Swiper/commit/0afecde9781268a60a92f752ea3a3a92420e2dcf))
- **core:** Don't use `data-swiper-slide-index` for `realIndex` when virtual module is enabled ([#8142](https://github.com/nolimits4web/Swiper/issues/8142)) ([bd957f8](https://github.com/nolimits4web/Swiper/commit/bd957f8396f711b83dc1bc6b3d42a59e6d6539d2))
- **core:** Escape all CSS selector special characters ([d35f41a](https://github.com/nolimits4web/Swiper/commit/d35f41a85bd1793de58358d06300440e09187a6d)), closes [#8135](https://github.com/nolimits4web/Swiper/issues/8135)
- **core:** support slidesOffsetBefore and slidesOffsetAfert in cssMode ([45b98d0](https://github.com/nolimits4web/Swiper/commit/45b98d02b2235b0c425f8bd60ebdc04d7b1a4fbd)), closes [#7926](https://github.com/nolimits4web/Swiper/issues/7926)
- fix lazy preloader removal error in react in vue ([332f5c7](https://github.com/nolimits4web/Swiper/commit/332f5c77005921c8a260f199cdfe6d3aa5d209a1)), closes [#8149](https://github.com/nolimits4web/Swiper/issues/8149)
- **thumbs:** update slide classes on virtual swiper update ([#8141](https://github.com/nolimits4web/Swiper/issues/8141)) ([9752771](https://github.com/nolimits4web/Swiper/commit/975277111b73f389043cb0ed19feee0244a80f57))
- **types:** Add `autoScroll` to `thumbs.update` type signature ([#8146](https://github.com/nolimits4web/Swiper/issues/8146)) ([5d91e6e](https://github.com/nolimits4web/Swiper/commit/5d91e6edb4ce35d70019616b51f1e380feb9a082))
- **zoom:** initialize gesture state after programmatic zoom ([#8112](https://github.com/nolimits4web/Swiper/issues/8112)) ([71e9511](https://github.com/nolimits4web/Swiper/commit/71e9511802c34482bc8b66abda19a1a518d88d36))

### Features

- **keyboard:** add support for custom speed parameter in keyboard navigation ([#8148](https://github.com/nolimits4web/Swiper/issues/8148)) ([7a4a0e5](https://github.com/nolimits4web/Swiper/commit/7a4a0e5fc3c85710a37ab021328e083fc3b14e16))
- new snapToSlideEdge parameter ([de3131f](https://github.com/nolimits4web/Swiper/commit/de3131fbf72cccbf1d1473f787ddf15c74612584)), closes [#8021](https://github.com/nolimits4web/Swiper/issues/8021) [#4780](https://github.com/nolimits4web/Swiper/issues/4780)

# [12.0.3](https://github.com/nolimits4web/Swiper/compare/v12.0.2...v12.0.3) (2025-10-21)

### Bug Fixes

- **element:** fixed reference to nav arrows SVG ([0b17ecf](https://github.com/nolimits4web/Swiper/commit/0b17ecf56bf941e4a5da2a2c171d5e16a9e4552b)), closes [#8115](https://github.com/nolimits4web/Swiper/issues/8115)

### Features

- **core:** add 'getRotateFix' export to effect utils ([c97ae5d](https://github.com/nolimits4web/Swiper/commit/c97ae5d0069cf3d5c745efb63ced9924a64d2453)), closes [#8114](https://github.com/nolimits4web/Swiper/issues/8114)

# [12.0.2](https://github.com/nolimits4web/Swiper/compare/v12.0.1...v12.0.2) (2025-09-18)

### Features

- **navigation:** add styles for when buttons set before slider ([4588c57](https://github.com/nolimits4web/Swiper/commit/4588c5719d4d828548c34f456de099f621f4c709)), closes [#8085](https://github.com/nolimits4web/Swiper/issues/8085)
- **navigation:** new `addIcons` parameter to add SVG icons to nav buttons ([b955b0c](https://github.com/nolimits4web/Swiper/commit/b955b0c15c3b813bbda7a68cdd250f8a822015df)), closes [#8088](https://github.com/nolimits4web/Swiper/issues/8088) [#8087](https://github.com/nolimits4web/Swiper/issues/8087)

# [12.0.1](https://github.com/nolimits4web/Swiper/compare/v12.0.0...v12.0.1) (2025-09-11)

### Bug Fixes

- **navigation:** tweak nav styles when adjacent ([98440d9](https://github.com/nolimits4web/Swiper/commit/98440d9621c2b06c1c45edf8f4103ce5125e8231))

# [12.0.0](https://github.com/nolimits4web/Swiper/compare/v11.2.10...v12.0.0) (2025-09-11)

### Bug Fixes

- **core:** fixes issues when slidesOffsetBefore & slidesOffsetAfter are combinated with centeredSlides, slidesPerView & loop ([#8038](https://github.com/nolimits4web/Swiper/issues/8038)) ([74cc297](https://github.com/nolimits4web/Swiper/commit/74cc29713508bb48939ef9147a869979a8120cc4)), closes [#7298](https://github.com/nolimits4web/Swiper/issues/7298) [#7956](https://github.com/nolimits4web/Swiper/issues/7956) [#6916](https://github.com/nolimits4web/Swiper/issues/6916)
- **effect-cards:** fix offset in vertical direction when rotate is unset ([a248ca1](https://github.com/nolimits4web/Swiper/commit/a248ca1fc4fd070e02f65ca7afc55789c02f15c7)), closes [#8075](https://github.com/nolimits4web/Swiper/issues/8075)
- **get-device:** regexp tweak ([60bb79b](https://github.com/nolimits4web/Swiper/commit/60bb79b599895350da71212b05e3f89a0dabc447)), closes [#8057](https://github.com/nolimits4web/Swiper/issues/8057)
- **types:** correct types for getSlideTransformEl ([b34bdce](https://github.com/nolimits4web/Swiper/commit/b34bdce988a681a41778c95795e19787a19e754d)), closes [#8054](https://github.com/nolimits4web/Swiper/issues/8054)

### Features

- **a11y:** add wrapperLiveRegion param to disable wrapper live region in a11y module ([#8061](https://github.com/nolimits4web/Swiper/issues/8061)) ([d03044e](https://github.com/nolimits4web/Swiper/commit/d03044e8f8648946dfecf9b669df987a5a5e1925))
- move to SVG icons for navigation ([264603c](https://github.com/nolimits4web/Swiper/commit/264603cc36a54e7a4f39507b2fbdab7e38bb046e)), closes [#6652](https://github.com/nolimits4web/Swiper/issues/6652) [#4990](https://github.com/nolimits4web/Swiper/issues/4990)
- remove LESS and SCSS styles in favor of CSS ([118ec66](https://github.com/nolimits4web/Swiper/commit/118ec6616da1249b589f9c468076ec036234b36d))
- **virtual:** add slidesPerViewAutoSlideSize parameter for fixed slide dimensions with slidesPerView auto ([d472144](https://github.com/nolimits4web/Swiper/commit/d47214480e7b9155ce2203a9a21209e56c5c303b)), closes [#8041](https://github.com/nolimits4web/Swiper/issues/8041) [#7796](https://github.com/nolimits4web/Swiper/issues/7796)

# [11.2.10](https://github.com/nolimits4web/Swiper/compare/v11.2.9...v11.2.10) (2025-06-28)

### Bug Fixes

- **core:** fix clickedIndex with grid ([863d8bd](https://github.com/nolimits4web/Swiper/commit/863d8bdd750b5a5f5b6df8b1129656e8050bd615))

# [11.2.9](https://github.com/nolimits4web/Swiper/compare/v11.2.8...v11.2.9) (2025-06-27)

### Bug Fixes

- **core:** clear blank slides within loopCreate() ([#8033](https://github.com/nolimits4web/Swiper/issues/8033)) ([377d53c](https://github.com/nolimits4web/Swiper/commit/377d53cbcf7dfbaeab76e8bfa88e94795693b157))
- **core:** escape brackets when transforming classes to selector ([#8014](https://github.com/nolimits4web/Swiper/issues/8014)) ([0c53ee8](https://github.com/nolimits4web/Swiper/commit/0c53ee8bd9d606934e0e29d78b7088a58d9fba64))
- **core:** slideTo function does not work when grid.rows > 1 ([#8030](https://github.com/nolimits4web/Swiper/issues/8030)) ([1fde9d3](https://github.com/nolimits4web/Swiper/commit/1fde9d38090a858487ae9e000a8c164fecf81320))
- **core:** using loop and slideToClickedSlide / slideToLoop with centeredSlides ([b6692e2](https://github.com/nolimits4web/Swiper/commit/b6692e21de281685c6434368e5cac2180f9320fa)), closes [#8031](https://github.com/nolimits4web/Swiper/issues/8031)
- **element:** don't set subprops on boolean values ([090caa1](https://github.com/nolimits4web/Swiper/commit/090caa19764f16e44e89b8478e5737f1783eefa3)), closes [#8003](https://github.com/nolimits4web/Swiper/issues/8003)
- **keyboard:** detect contenteditable element in keyboard module ([#8006](https://github.com/nolimits4web/Swiper/issues/8006)) ([fcd434a](https://github.com/nolimits4web/Swiper/commit/fcd434aa53e957b516417865bddafdcb5533e863))
- **vue:** add missing event ([839cafb](https://github.com/nolimits4web/Swiper/commit/839cafb60fb68d8f4ef8b5a2ccf6648e895e8fe9)), closes [#8002](https://github.com/nolimits4web/Swiper/issues/8002)

# [11.2.8](https://github.com/nolimits4web/Swiper/compare/v11.2.7...v11.2.8) (2025-05-23)

### Bug Fixes

- **virtual:** fix error in Virtual slides ([7a53208](https://github.com/nolimits4web/Swiper/commit/7a53208899cbcc6efb3ec655a9de3a0b4871bbb8)), closes [#7997](https://github.com/nolimits4web/Swiper/issues/7997)

# [11.2.7](https://github.com/nolimits4web/Swiper/compare/v11.2.6...v11.2.7) (2025-05-19)

### Bug Fixes

- **core:** fix for slideResetTransition events ([#7989](https://github.com/nolimits4web/Swiper/issues/7989)) ([473ec25](https://github.com/nolimits4web/Swiper/commit/473ec25a74a9dfbf4366445034bd22aabc3f1889))
- **core:** set innerHTML using trusted type ([8a46954](https://github.com/nolimits4web/Swiper/commit/8a46954e43c976ea5dc0c6e3edf351f3a99a0d42)), closes [#7961](https://github.com/nolimits4web/Swiper/issues/7961)
- **react,vue:** fix not rendered slides in effects when Virtual is enabled ([e4e1680](https://github.com/nolimits4web/Swiper/commit/e4e1680cda676992ff2ff7b14d7c45db9aec304b)), closes [#7730](https://github.com/nolimits4web/Swiper/issues/7730)
- **types:** add enabled property on swiper-class.d.ts ([#7973](https://github.com/nolimits4web/Swiper/issues/7973)) ([ccd96dc](https://github.com/nolimits4web/Swiper/commit/ccd96dca508de2a72adb11cba3fce96d24596453))
- **types:** coverflow effect can be number or string with percentage ([#7931](https://github.com/nolimits4web/Swiper/issues/7931)) ([4d988d8](https://github.com/nolimits4web/Swiper/commit/4d988d8b0f5f646d881895c2934d82042fa1b120))
- **types:** fix `effect` param type ([#7945](https://github.com/nolimits4web/Swiper/issues/7945)) ([42eec07](https://github.com/nolimits4web/Swiper/commit/42eec0722c7a1d6dd943245282f4048ce7d4459d))
- **vue:** added missing props ([#7966](https://github.com/nolimits4web/Swiper/issues/7966)) ([6aa8d05](https://github.com/nolimits4web/Swiper/commit/6aa8d0585d29ff10abb9a4328ce6add240d4e55d))

# [11.2.6](https://github.com/nolimits4web/Swiper/compare/v11.2.5...v11.2.6) (2025-03-19)

### Bug Fixes

- **cards/loop:** improve loop behavior with cards effect ([9a258d4](https://github.com/nolimits4web/Swiper/commit/9a258d42324cce36026bd3e3367b069a64e9aa99)), closes [#7917](https://github.com/nolimits4web/Swiper/issues/7917)
- **core:** fix initialSlide in loop mode when it there are not enough slides to fill ([16818e2](https://github.com/nolimits4web/Swiper/commit/16818e2629d6afbbc1ef3778b3289d575e86d2ff)), closes [#7780](https://github.com/nolimits4web/Swiper/issues/7780)
- **core:** fix touchReleaseOnEdges in RTL ([d841428](https://github.com/nolimits4web/Swiper/commit/d841428af537f127f16584cf437ba4c6a912a82f)), closes [#7179](https://github.com/nolimits4web/Swiper/issues/7179)

# [11.2.5](https://github.com/nolimits4web/Swiper/compare/v11.2.4...v11.2.5) (2025-03-04)

### Bug Fixes

- **docs:** correct structure of pagination render functions ([b259723](https://github.com/nolimits4web/Swiper/commit/b25972397926ad0abb3bfa808e8621127a0f0e06)), closes [#7897](https://github.com/nolimits4web/Swiper/issues/7897) [#7896](https://github.com/nolimits4web/Swiper/issues/7896)
- **thumbs:** correct reinit thumbs ([1cf24d4](https://github.com/nolimits4web/Swiper/commit/1cf24d46472f1e0bbd73fa1ea6064fc5f793b7e6)), closes [#7880](https://github.com/nolimits4web/Swiper/issues/7880)
- **zoom:** fix transform origin of `zoom.in()` function ([#7904](https://github.com/nolimits4web/Swiper/issues/7904)) ([f7febe1](https://github.com/nolimits4web/Swiper/commit/f7febe10be5d38954a7b030234037a852b47b12d))

### Features

- check if slidesEl is defined in loopDestroy ([#7906](https://github.com/nolimits4web/Swiper/issues/7906)) ([ced30cb](https://github.com/nolimits4web/Swiper/commit/ced30cbd567700582aef5076c5e22dc3b4b571e1))

# [11.2.4](https://github.com/nolimits4web/Swiper/compare/v11.2.3...v11.2.4) (2025-02-14)

### Bug Fixes

- restore compatibility with ES2019 [#7891](https://github.com/nolimits4web/Swiper/issues/7891) ([#7892](https://github.com/nolimits4web/Swiper/issues/7892)) ([b4fbbb3](https://github.com/nolimits4web/Swiper/commit/b4fbbb3ceb1af1cecd5295a32f1e600876802e87))

# [11.2.3](https://github.com/nolimits4web/Swiper/compare/v11.2.2...v11.2.3) (2025-02-12)

### Bug Fixes

- **element:** remove infinite preloader in loop ([#7886](https://github.com/nolimits4web/Swiper/issues/7886)) ([c0d3ece](https://github.com/nolimits4web/Swiper/commit/c0d3ece2147e95f37154ee019402286f5b213712))

### Features

- **core:** export swiper-vars.scss for overwriteability ([#7883](https://github.com/nolimits4web/Swiper/issues/7883)) ([0b688a1](https://github.com/nolimits4web/Swiper/commit/0b688a1a40d9365ff0a696abf290bea6baf5a8f0)), closes [#7882](https://github.com/nolimits4web/Swiper/issues/7882)
- update ssr-window to latest ([c521888](https://github.com/nolimits4web/Swiper/commit/c521888d98863ededd3286543dac7e040bcf1ddc))

# [11.2.2](https://github.com/nolimits4web/Swiper/compare/v11.2.1...v11.2.2) (2025-01-31)

### Bug Fixes

- **cards:** fix slides swap issue in loop mode ([e012e34](https://github.com/nolimits4web/Swiper/commit/e012e34f6f926dcec6415f11912d23190ed85242)), closes [#7823](https://github.com/nolimits4web/Swiper/issues/7823)
- **core:** fix slidePrev issue in free-mode ([a3fee36](https://github.com/nolimits4web/Swiper/commit/a3fee3615eaf3daf3fad54445c3bdba29d9cd302)), closes [#7869](https://github.com/nolimits4web/Swiper/issues/7869)
- **virtual:** fix when Element not swiping in Safari ([5abdbfd](https://github.com/nolimits4web/Swiper/commit/5abdbfde1a4e796a6ed981105d02ca7b4b13d6ed)), closes [#7679](https://github.com/nolimits4web/Swiper/issues/7679)

# [11.2.1](https://github.com/nolimits4web/Swiper/compare/v11.2.0...v11.2.1) (2025-01-10)

### Bug Fixes

- **core:** add check for HTMLSlotElement support ([#7840](https://github.com/nolimits4web/Swiper/issues/7840)) ([56700e5](https://github.com/nolimits4web/Swiper/commit/56700e588e63da8a07ec25f096910cbef64e7dd1))
- **core:** typo in autoplay param ([#7848](https://github.com/nolimits4web/Swiper/issues/7848)) ([69113c9](https://github.com/nolimits4web/Swiper/commit/69113c99478921a52532daf2ba1ab994ed46b701))

# [11.2.0](https://github.com/nolimits4web/Swiper/compare/v11.1.15...v11.2.0) (2025-01-02)

### Bug Fixes

- **core:** Fixed elementIsChildOf returning false for nested web components ([#7762](https://github.com/nolimits4web/Swiper/issues/7762)) ([8136607](https://github.com/nolimits4web/Swiper/commit/8136607e0782646cd095b6e3ff8ece63033df390)), closes [#7761](https://github.com/nolimits4web/Swiper/issues/7761)
- **zoom:** Ensure the zoom module's array is cleared onTouchEnd to fix [#7304](https://github.com/nolimits4web/Swiper/issues/7304) ([#7830](https://github.com/nolimits4web/Swiper/issues/7830)) ([21610bd](https://github.com/nolimits4web/Swiper/commit/21610bde1d6537102fdcec62b86f2f2e0794540c))

### Features

- **core:** Allow using a CSS selector as breakpointsBase ([#7818](https://github.com/nolimits4web/Swiper/issues/7818)) ([44d3443](https://github.com/nolimits4web/Swiper/commit/44d3443f66d93c1dc6720bddb05780bea7406982))
- **zoom:** Add ability to pan around an image on mouse move ([#7831](https://github.com/nolimits4web/Swiper/issues/7831)) ([c4619bb](https://github.com/nolimits4web/Swiper/commit/c4619bb01dd929b29397afc7697958ca23c82c90)), closes [#7306](https://github.com/nolimits4web/Swiper/issues/7306)

# [11.1.15](https://github.com/nolimits4web/Swiper/compare/v11.1.14...v11.1.15) (2024-11-18)

### Bug Fixes

- **react:** react strict mode double initialization errors for thumbs ([#7789](https://github.com/nolimits4web/Swiper/issues/7789)) ([9dece7d](https://github.com/nolimits4web/Swiper/commit/9dece7dae34e6a7a0291cd0a05f8c804bfdd7b59))
- **scss:** Dart Sass 3.0.0 compatibility ([fbd2ba4](https://github.com/nolimits4web/Swiper/commit/fbd2ba4b9bc7c5ae6a3c8796e4ea790a2c5507b0)), closes [#7772](https://github.com/nolimits4web/Swiper/issues/7772) [#7771](https://github.com/nolimits4web/Swiper/issues/7771)
- **types:** remove 'Lazy' declaration ([#7739](https://github.com/nolimits4web/Swiper/issues/7739)) ([40a705e](https://github.com/nolimits4web/Swiper/commit/40a705e5bcadf2ee2ee90591ff9ed95c1aaf9026))
- **types:** type definitions for `slidesEl`, `slidesGrid`, and `slidesSizesGrid` ([#7768](https://github.com/nolimits4web/Swiper/issues/7768)) ([fb59a41](https://github.com/nolimits4web/Swiper/commit/fb59a41801629a25dc7f0738961e3aeeb60a9cc8))

# [11.1.14](https://github.com/nolimits4web/Swiper/compare/v11.1.12...v11.1.14) (2024-09-12)

### Bug Fixes

- **core:** fix mobile input blur on touchstart on different input ([66c5dd1](https://github.com/nolimits4web/Swiper/commit/66c5dd10dc3b75a645b17c5b06b193483c026a89)), closes [#7728](https://github.com/nolimits4web/Swiper/issues/7728)
- **element:** Query the swiper.hostEl for the navigation buttons ([#7714](https://github.com/nolimits4web/Swiper/issues/7714)) ([#7716](https://github.com/nolimits4web/Swiper/issues/7716)) ([d0b6abd](https://github.com/nolimits4web/Swiper/commit/d0b6abd74805398ac3cbf41aeebf141a805ec64b))
- **zoom:** add sanity check before allowTouchMove call in timeout ([#7723](https://github.com/nolimits4web/Swiper/issues/7723)) ([869bb84](https://github.com/nolimits4web/Swiper/commit/869bb843735718c3c77551644cfd717bbf9e264e))

# [11.1.12](https://github.com/nolimits4web/Swiper/compare/v11.1.11...v11.1.12) (2024-09-01)

### Bug Fixes

- **cards:** fix cards effect styles leak ([0be4c6a](https://github.com/nolimits4web/Swiper/commit/0be4c6aa785d5be34a8f33fde91b67ec25d5752a)), closes [#7712](https://github.com/nolimits4web/Swiper/issues/7712)

### Features

- **a11y:** add `containerRole` parameter ([#7708](https://github.com/nolimits4web/Swiper/issues/7708)) ([1542c01](https://github.com/nolimits4web/Swiper/commit/1542c01823fd233aa6159c13aec717360cb3c01c))

# [11.1.11](https://github.com/nolimits4web/Swiper/compare/v11.1.10...v11.1.11) (2024-08-28)

### Bug Fixes

- centeredSlides with centeredSlidesBounds don't work correct when slidesPerView: 'auto' and width of the swiper-container bigger then width of slides ([#7696](https://github.com/nolimits4web/Swiper/issues/7696)) ([c11172a](https://github.com/nolimits4web/Swiper/commit/c11172a50ae67d79a625ad35c9460feceff478c6))
- **element:** fix element styles to have correct order override ([f26036f](https://github.com/nolimits4web/Swiper/commit/f26036f3261bc9dad9f83a8c7145578b8ccf6ecc)), closes [#7704](https://github.com/nolimits4web/Swiper/issues/7704)
- **virtual:** fix bypassing initial translate check if Virtual is enabled ([df957bb](https://github.com/nolimits4web/Swiper/commit/df957bbdb81ffeb7ef752598f740d4e155f9840a)), closes [#7699](https://github.com/nolimits4web/Swiper/issues/7699)

# [11.1.10](https://github.com/nolimits4web/Swiper/compare/v11.1.9...v11.1.10) (2024-08-21)

### Bug Fixes

- **pagination:** fixed swiper Infinite loop scroll jumping ([#7690](https://github.com/nolimits4web/Swiper/issues/7690))
- **zoom:** fix zoomIn after currentScale is set to 1 ([#7663](https://github.com/nolimits4web/Swiper/issues/7663)) ([94173da](https://github.com/nolimits4web/Swiper/commit/94173dae058d18e3839d8f98584bce460eb49996))

# [11.1.9](https://github.com/nolimits4web/Swiper/compare/v11.1.8...v11.1.9) (2024-07-31)

### Bug Fixes

- **core:** fix loop missing slides with centeredSlides ([4847fcb](https://github.com/nolimits4web/Swiper/commit/4847fcba5dbe34caa91ea23b0bb72c8d40da0e63)), closes [#7584](https://github.com/nolimits4web/Swiper/issues/7584)
- **core:** fix types of swiper-effect-utils.d.ts ([#7655](https://github.com/nolimits4web/Swiper/issues/7655)) ([4875f26](https://github.com/nolimits4web/Swiper/commit/4875f26163c016469e599abd3d5e0a05b3838959))
- **mousewheel:** fix issue with event handling after Swiper was destroyed ([82ae434](https://github.com/nolimits4web/Swiper/commit/82ae4346800b96bdb435cb97bed34beebbb1f359)), closes [#7654](https://github.com/nolimits4web/Swiper/issues/7654)

### Features

- add types for minTranslate and maxTranslate functions ([#7647](https://github.com/nolimits4web/Swiper/issues/7647)) ([450c57a](https://github.com/nolimits4web/Swiper/commit/450c57a4c6d651207e4f79ffe7ac823ab2cfcb63))

# [11.1.8](https://github.com/nolimits4web/Swiper/compare/v11.1.7...v11.1.8) (2024-07-26)

### Bug Fixes

- **core:** fixed typo in utils/elementIsChildOf ([#7649](https://github.com/nolimits4web/Swiper/issues/7649)) ([575e715](https://github.com/nolimits4web/Swiper/commit/575e71593bac73f8db64730cce2323f660006489))

# [11.1.7](https://github.com/nolimits4web/Swiper/compare/v11.1.6...v11.1.7) (2024-07-24)

### Bug Fixes

- **core:** fix element child detection ([7ec975c](https://github.com/nolimits4web/Swiper/commit/7ec975c8550bfebacc7ecd032dc540e720f45175)), closes [#7636](https://github.com/nolimits4web/Swiper/issues/7636)

# [11.1.6](https://github.com/nolimits4web/Swiper/compare/v11.1.5...v11.1.6) (2024-07-23)

### Bug Fixes

- **controller:** fix 2 way control in element ([6eec16b](https://github.com/nolimits4web/Swiper/commit/6eec16bfe1f103bd19bad6dec0a7aa3fb3ee2bb1)), closes [#7628](https://github.com/nolimits4web/Swiper/issues/7628)

### Features

- **a11y:** added new prop for a11y module - `scrollOnFocus` ([#7632](https://github.com/nolimits4web/Swiper/issues/7632)) ([f4f7da0](https://github.com/nolimits4web/Swiper/commit/f4f7da0260f1b03ab5f168b84a3b74ef8e2a7a26))
- **element:** added support for using slots as swiper wrappers ([#7624](https://github.com/nolimits4web/Swiper/issues/7624)) ([e374e06](https://github.com/nolimits4web/Swiper/commit/e374e06a930bef74658614900bb1e11c5a54b189))

# [11.1.5](https://github.com/nolimits4web/Swiper/compare/v11.1.4...v11.1.5) (2024-07-15)

### Bug Fixes

- **element:** fix observer to watch for slides ([7cffede](https://github.com/nolimits4web/Swiper/commit/7cffedef190c6e75bf84adfa6dfddd64e1bfa0e6)), closes [#7598](https://github.com/nolimits4web/Swiper/issues/7598)
- improved 3d rotate fix in Safari ([cb83879](https://github.com/nolimits4web/Swiper/commit/cb83879894fca633844b5db76dfe1d9d82c816ea)), closes [#7532](https://github.com/nolimits4web/Swiper/issues/7532)
- update navigation.scss to remove SASS Deprecation Warning ([#7612](https://github.com/nolimits4web/Swiper/issues/7612)) ([a3e0bf8](https://github.com/nolimits4web/Swiper/commit/a3e0bf893da2af150a64b99c8d59b81249929a5a))
- **vue:** add breakpointsBase type ([4adb85b](https://github.com/nolimits4web/Swiper/commit/4adb85b081a0ed3e657da79d8f711e610335edba)), closes [#7607](https://github.com/nolimits4web/Swiper/issues/7607)

# [11.1.4](https://github.com/nolimits4web/Swiper/compare/v11.1.3...v11.1.4) (2024-05-30)

### Bug Fixes

- **a11y:** fix slide on focus when loop mode is enabled ([fc8ed1a](https://github.com/nolimits4web/Swiper/commit/fc8ed1a2de8f05b017e371763b1236e1eb2670c4)), closes [#7540](https://github.com/nolimits4web/Swiper/issues/7540)
- **core:** check for swiper.el in destroy queue ([39a3e53](https://github.com/nolimits4web/Swiper/commit/39a3e53ba7df00a0479e0748fff874703578c7df)), closes [#7530](https://github.com/nolimits4web/Swiper/issues/7530)
- **navigation:** prevent hide on click when clicking on navigation buttons ([c0f7bb6](https://github.com/nolimits4web/Swiper/commit/c0f7bb6f3612f42664eab60bbcfb7969bfeb16bf)), closes [#7559](https://github.com/nolimits4web/Swiper/issues/7559)
- **vue:** avoid rendering same slide vnode twice for small amount of slides in loop + virtual mode ([#7556](https://github.com/nolimits4web/Swiper/issues/7556)) ([5737f03](https://github.com/nolimits4web/Swiper/commit/5737f03d202ce0f22d390b2e9f94b8573f59472b))
- **zoom:** fix issue when slide change possible during zoom out ([f67308c](https://github.com/nolimits4web/Swiper/commit/f67308c8f4367817d9c60980276c922af9fcb654))

# [11.1.3](https://github.com/nolimits4web/Swiper/compare/v11.1.2...v11.1.3) (2024-05-13)

### Bug Fixes

- fix types import ([57923db](https://github.com/nolimits4web/Swiper/commit/57923db8f2cc7dae9f39011531147d68f26f834d)), closes [#7529](https://github.com/nolimits4web/Swiper/issues/7529)

# [11.1.2](https://github.com/nolimits4web/Swiper/compare/v11.1.1...v11.1.2) (2024-05-13)

### Bug Fixes

- **autoplay:** keep 0 transition on touchmove with 0 timeout delay ([8ccb08e](https://github.com/nolimits4web/Swiper/commit/8ccb08ef1c1adcb4ff53f91bf494a0bd221d5735)), closes [#7515](https://github.com/nolimits4web/Swiper/issues/7515)
- **core:** centerInsuffientSlides takes offsets into account ([#7437](https://github.com/nolimits4web/Swiper/issues/7437)) ([5a271ff](https://github.com/nolimits4web/Swiper/commit/5a271ff050376820cfe42e04730cd097f38496a1))
- **types:** fixed SwiperModule, slideTo, effectInit types ([#7428](https://github.com/nolimits4web/Swiper/issues/7428)) ([bc61bce](https://github.com/nolimits4web/Swiper/commit/bc61bce297bce8c38299671e9fe18f6a5b0fd77e))

### Performance Improvements

- do not remove and re-add visibility classes for unchanged slides to prevents unnecessary style recalculations (This performance difference is mostly noticable when moving a slide with a mouse or touchmove because updateSlidesProgress is triggered for every keyboard-/touchevent) ([#7505](https://github.com/nolimits4web/Swiper/issues/7505)) ([2c08227](https://github.com/nolimits4web/Swiper/commit/2c08227d3e81db744e2d6e1c9d87c9ff6236533d))

# [11.1.1](https://github.com/nolimits4web/Swiper/compare/v11.1.0...v11.1.1) (2024-04-09)

### Bug Fixes

- **zoom:** fix zoom pan not preventing slide changes using touch ([f73cc2a](https://github.com/nolimits4web/Swiper/commit/f73cc2a7a0bc4b9d094c33853e629785d1b5ddeb)), closes [#7308](https://github.com/nolimits4web/Swiper/issues/7308)

# [11.1.0](https://github.com/nolimits4web/Swiper/compare/v11.0.7...v11.1.0) (2024-03-28)

### Bug Fixes

- **a11y:** fixed issue with not working "enter" navigation on arrows ([aac2dcf](https://github.com/nolimits4web/Swiper/commit/aac2dcfc4cf6ddcef93933c75d3eab984f149a18)), closes [#7423](https://github.com/nolimits4web/Swiper/issues/7423)
- **a11y:** prevent falsy focus handlers ([a7c260a](https://github.com/nolimits4web/Swiper/commit/a7c260a9d93405a0adce304b4ccf4f5309dfedda)), closes [#7406](https://github.com/nolimits4web/Swiper/issues/7406)
- **core:** add/remove slide classes only when changed ([3312fba](https://github.com/nolimits4web/Swiper/commit/3312fba06de686e48cf0c138ea7bba20fc7842e5)), closes [#7356](https://github.com/nolimits4web/Swiper/issues/7356)
- **core:** don't fix the loop on simple resize ([641793f](https://github.com/nolimits4web/Swiper/commit/641793ff459527c4c1efc9f72b447b87c8939f5f)), closes [#7325](https://github.com/nolimits4web/Swiper/issues/7325)
- **core:** fixed thrown error on calling slideTo methods on destroyed swiper ([8c6a3c6](https://github.com/nolimits4web/Swiper/commit/8c6a3c6f63915db82415e2d7829ece6c624ace1e)), closes [#7416](https://github.com/nolimits4web/Swiper/issues/7416)
- **core:** handle grabCursor within breakpoints ([e853908](https://github.com/nolimits4web/Swiper/commit/e853908c2ff93dc944ba045c9c0fce83efe46288)), closes [#7364](https://github.com/nolimits4web/Swiper/issues/7364)
- **core:** reset animating flag on translateTo call ([7da50bf](https://github.com/nolimits4web/Swiper/commit/7da50bf1bcfe86f5af646e7d53c7d0414211da60)), closes [#7403](https://github.com/nolimits4web/Swiper/issues/7403)
- **scrollbar:** fix warning ([e5371f7](https://github.com/nolimits4web/Swiper/commit/e5371f7656c4e828d87e7497edc73f9b6311f91d)), closes [#7415](https://github.com/nolimits4web/Swiper/issues/7415)
- **thumbs:** fix thumbs .swiper type prop to accept string ([5b0fa84](https://github.com/nolimits4web/Swiper/commit/5b0fa84ac14022dd1ca39d387267a8d9125cb13a)), closes [#7421](https://github.com/nolimits4web/Swiper/issues/7421)
- **virtual:** don't render first slides when initialSlide set ([bab9230](https://github.com/nolimits4web/Swiper/commit/bab92305c5a69b9b9f33615fa5df61fbfda39700)), closes [#7353](https://github.com/nolimits4web/Swiper/issues/7353)
- **zoom:** fix panning on SVG elements ([eed8a5b](https://github.com/nolimits4web/Swiper/commit/eed8a5bf727163cf2da343490c09fc248b658e5e)), closes [#7352](https://github.com/nolimits4web/Swiper/issues/7352)

# [11.0.7](https://github.com/nolimits4web/Swiper/compare/v11.0.6...v11.0.7) (2024-02-27)

### Bug Fixes

- **core:** fix initial slide index shift with centeredSlides and slidesPerView auto ([#7319](https://github.com/nolimits4web/Swiper/issues/7319)) ([cae9c2d](https://github.com/nolimits4web/Swiper/commit/cae9c2dc192dafc0f35cb03e919dd1151dca88da))
- **history:** fix setting history in virtual slides ([d4de17b](https://github.com/nolimits4web/Swiper/commit/d4de17b278b57760cfc9953d1da7892b44f0fc22)), closes [#7327](https://github.com/nolimits4web/Swiper/issues/7327)
- **react:** make sure the key is unique in virtual mode ([829a253](https://github.com/nolimits4web/Swiper/commit/829a2536b5d4f4ed86cb31d9c73d4d9b3be656c3)), closes [#7329](https://github.com/nolimits4web/Swiper/issues/7329)

### Features

- add swiper-effect-utils ([df5f873](https://github.com/nolimits4web/Swiper/commit/df5f8731b795419534420bf4d567c75bfd475656)), closes [#7336](https://github.com/nolimits4web/Swiper/issues/7336)
- **zoom:** add ability to constrain max zoom to 100% of original image size ([#7311](https://github.com/nolimits4web/Swiper/issues/7311)) ([645f266](https://github.com/nolimits4web/Swiper/commit/645f266c6b8dea5d43e14cace925ad86236ecc75))

# [11.0.6](https://github.com/nolimits4web/Swiper/compare/v11.0.5...v11.0.6) (2024-02-05)

### Bug Fixes

- add optional swiperElementNodeName param to allow more flexible web component usage ([#7284](https://github.com/nolimits4web/Swiper/issues/7284)) ([178511f](https://github.com/nolimits4web/Swiper/commit/178511fe8ac37b590b92ff081379074e340436fa))
- fixed behavior where the combination of 'initialSlide:0' and 'slidesPerView:auto' would shift the first slide position ([e5c04c3](https://github.com/nolimits4web/Swiper/commit/e5c04c38e4261f4afb195bc15ea7417e7c1190dd)), closes [#7216](https://github.com/nolimits4web/Swiper/issues/7216)
- Safari 3D fix for webview ([d42ce05](https://github.com/nolimits4web/Swiper/commit/d42ce05380c4a8f1848ad409b2ac8ed848723399)), closes [#7167](https://github.com/nolimits4web/Swiper/issues/7167)
- **scrollbar:** correctly update scrollbar on changeDirection ([6bbb73d](https://github.com/nolimits4web/Swiper/commit/6bbb73d84f684e711250664d1eb7017b1b02ec3a)), closes [#7263](https://github.com/nolimits4web/Swiper/issues/7263)
- SwiperOptions documentation for loopAddBlankSlides ([#7289](https://github.com/nolimits4web/Swiper/issues/7289)) ([cbc3dba](https://github.com/nolimits4web/Swiper/commit/cbc3dba7b4869c82f87c920e519f334fe9dc9880))

### Features

- **core:** prevent running .slideTo methods when Swiper is destroyed ([05f9c64](https://github.com/nolimits4web/Swiper/commit/05f9c6493081666f0458a67715271fc728827731)), closes [#7265](https://github.com/nolimits4web/Swiper/issues/7265)

# [11.0.5](https://github.com/nolimits4web/Swiper/compare/v11.0.4...v11.0.5) (2023-11-22)

### Bug Fixes

- **core:** swipe to last with slidesPerView: auto ([#7183](https://github.com/nolimits4web/Swiper/issues/7183)) ([2e3f47d](https://github.com/nolimits4web/Swiper/commit/2e3f47d5fcd37707be18180f35c9955c0bcc915e))
- **modules/a11y:** filter out falsy pagination elems ([#7201](https://github.com/nolimits4web/Swiper/issues/7201)) ([a044626](https://github.com/nolimits4web/Swiper/commit/a0446261bdbd9d538e31c02d3248d3bec0328c55))

### Features

- **core:** new `slidesUpdated` event ([8a0c7c4](https://github.com/nolimits4web/Swiper/commit/8a0c7c43ad5931d22a20a9b33152f6befc5bcb59))

# [11.0.4](https://github.com/nolimits4web/Swiper/compare/v11.0.3...v11.0.4) (2023-11-09)

### Bug Fixes

- **effectx:** fix Safari issue with rotates even to 90deg ([e005b69](https://github.com/nolimits4web/Swiper/commit/e005b699e7dbd7c343a56f19fca384b28c37cb97)), closes [#7167](https://github.com/nolimits4web/Swiper/issues/7167)

# [11.0.3](https://github.com/nolimits4web/Swiper/compare/v11.0.2...v11.0.3) (2023-10-26)

### Bug Fixes

- **core:** fixed legacy condition preventing touch move when zoom enabled ([2f64043](https://github.com/nolimits4web/Swiper/commit/2f64043bc2abfe13a6b3a2a24b082c9627c20ee7)), closes [#7137](https://github.com/nolimits4web/Swiper/issues/7137)
- **core:** prevent observer updates on loop fix ([7a5eacc](https://github.com/nolimits4web/Swiper/commit/7a5eaccb5e6ee1a867a3c2f30e9a44400e6c341c)), closes [#7135](https://github.com/nolimits4web/Swiper/issues/7135)

# [11.0.2](https://github.com/nolimits4web/Swiper/compare/v11.0.1...v11.0.2) (2023-10-25)

### Bug Fixes

- **core:** correctly handle loopAdditionalSlides parameter ([3f5e05d](https://github.com/nolimits4web/Swiper/commit/3f5e05d59a776e2cfc3a709e4b230ff23191266c))

# [11.0.1](https://github.com/nolimits4web/Swiper/compare/v11.0.0...v11.0.1) (2023-10-24)

### Bug Fixes

- **types:** fix eventsPrefix type ([fd0f601](https://github.com/nolimits4web/Swiper/commit/fd0f601fb08af7a72d3c582cf88e06e6a8bed9f8))

# [11.0.0](https://github.com/nolimits4web/Swiper/compare/v10.3.1...v11.0.0) (2023-09-24)

### Bug Fixes

- **autoplay:** fix negative autoplay values after stop/start, fix autoplay with free mode ([8bef84d](https://github.com/nolimits4web/Swiper/commit/8bef84d68c44b93757585cb037f7448cc99f7c71)), closes [#7084](https://github.com/nolimits4web/Swiper/issues/7084)
- **autoplay:** fix pauseOnPointerEnter if hovered during transition ([5080d95](https://github.com/nolimits4web/Swiper/commit/5080d9569fc1ac77c0cb01812567f8035cc780bb)), closes [#7107](https://github.com/nolimits4web/Swiper/issues/7107)
- **core:** remove grid class on rows change ([2f65e89](https://github.com/nolimits4web/Swiper/commit/2f65e89cb5758b44ceced212d4be905e0ed0f4c3)), closes [#7053](https://github.com/nolimits4web/Swiper/issues/7053)
- **element:** correctly respond to object params assignment ([f23c742](https://github.com/nolimits4web/Swiper/commit/f23c74250c7d4fd56ea4d5abfe2e031504c86d91))
- **scrollbar:** allow multiple classes in scrollbar parameters ([89a6f71](https://github.com/nolimits4web/Swiper/commit/89a6f7192f7da120487c224dc1b1a7668422321a)), closes [#7096](https://github.com/nolimits4web/Swiper/issues/7096)

### Features

- **core:** add fully visible slides classes ([902a4c4](https://github.com/nolimits4web/Swiper/commit/902a4c4adbff3af1188427d6cfef50d537c1bcef)), closes [#6773](https://github.com/nolimits4web/Swiper/issues/6773)
- **core:** add handling for native touch events ([74bb1cc](https://github.com/nolimits4web/Swiper/commit/74bb1ccf4c6f31ffdb7419d5a58a4f592aa6006b)), closes [#6478](https://github.com/nolimits4web/Swiper/issues/6478) [#6381](https://github.com/nolimits4web/Swiper/issues/6381) [#6897](https://github.com/nolimits4web/Swiper/issues/6897)
- **core:** loop support for grid, new `loopAddBlankSlides` parameter ([b5db223](https://github.com/nolimits4web/Swiper/commit/b5db22392f6c6609de292c00d163f9230d0925ee))
- **core:** remove `loopedSlides` parameter, add `loopAdditionalSlides` parameter ([d647985](https://github.com/nolimits4web/Swiper/commit/d647985faa9c8e3d551270e96692b2bd135bc92a))
- **core:** reworked loop mode ([2a99dbd](https://github.com/nolimits4web/Swiper/commit/2a99dbd383ca6880dd60ce35c70d7337bb1f38c8))
- **core:** update loop mode logic and lowered requirements ([703ede6](https://github.com/nolimits4web/Swiper/commit/703ede6ea1e490ee0200edf18c6857f534101827))
- **element:** make`eventPrefix` parameter default to `swiper` ([88d463a](https://github.com/nolimits4web/Swiper/commit/88d463aef9b74e6de637470c4c7c024e5f3ca6b9))
- **core:** move default container overflow back to `hidden` ([88941a8](https://github.com/nolimits4web/Swiper/commit/88941a82491b289faed24508db8b90e3c5506ba1))

# [10.3.1](https://github.com/nolimits4web/Swiper/compare/v10.3.0...v10.3.1) (2023-09-28)

### Bug Fixes

- **autoplay:** fix autoplay stop when disableOnInteraction is active ([ecfb3fb](https://github.com/nolimits4web/Swiper/commit/ecfb3fb06b7214e87332e41a6b96dc7a721a8313)), closes [#7060](https://github.com/nolimits4web/Swiper/issues/7060) [#7059](https://github.com/nolimits4web/Swiper/issues/7059)
- **types:** detection of custom html tags ([#7055](https://github.com/nolimits4web/Swiper/issues/7055)) ([c55f76d](https://github.com/nolimits4web/Swiper/commit/c55f76d51cadb3b9835b6c45537da30d2c3b298e))

# [10.3.0](https://github.com/nolimits4web/Swiper/compare/v10.2.0...v10.3.0) (2023-09-21)

### Bug Fixes

- **core:** correctly destroyor create loop on breakpoints ([12a44fb](https://github.com/nolimits4web/Swiper/commit/12a44fb995313c58cde37395a654493e2d42c694)), closes [#6967](https://github.com/nolimits4web/Swiper/issues/6967)
- **core:** don't call `realIndexChange` on initialIndex if runCallbacksOnInit is disalbed ([48c4e0a](https://github.com/nolimits4web/Swiper/commit/48c4e0a76736ac124a0d6e878f840208f31b8b09)), closes [#6976](https://github.com/nolimits4web/Swiper/issues/6976)
- **core:** fix `slideToClickedSlide` when using Element slide slots ([af0519c](https://github.com/nolimits4web/Swiper/commit/af0519c22513ec4a7bad2c80896d421fe07012f8)), closes [#6958](https://github.com/nolimits4web/Swiper/issues/6958)
- **core:** fix lazy preloader in later initialized slides ([e4fddc0](https://github.com/nolimits4web/Swiper/commit/e4fddc076f69bdf267559c70a489474bc311c02c)), closes [#6946](https://github.com/nolimits4web/Swiper/issues/6946)
- **core:** fix loop on centeredSlides slide to beginning ([c496835](https://github.com/nolimits4web/Swiper/commit/c496835a2ce49065a9b282bbafe5629797bb3da4)), closes [#7011](https://github.com/nolimits4web/Swiper/issues/7011)
- **core:** fix loopFix in loop and cssMode ([8180a52](https://github.com/nolimits4web/Swiper/commit/8180a52f386301147dae286994119693f6231202)), closes [#6919](https://github.com/nolimits4web/Swiper/issues/6919)
- **core:** fixed ignored allowSlidePrev/Next in loop mode ([1b74619](https://github.com/nolimits4web/Swiper/commit/1b74619f5d74073cf387201c5715c29c8115f770)), closes [#6987](https://github.com/nolimits4web/Swiper/issues/6987)
- **core:** remove grid class on rows change ([908becc](https://github.com/nolimits4web/Swiper/commit/908becc6ffbf5b5a050e2fde522867289073cf4a)), closes [#7053](https://github.com/nolimits4web/Swiper/issues/7053)
- **element:** correctly respond to object params assignment ([2ef1ff5](https://github.com/nolimits4web/Swiper/commit/2ef1ff5d42cea985556c54f79b8a52305294d21e))
- **element:** do not bubble `hashchange` event ([106a3d7](https://github.com/nolimits4web/Swiper/commit/106a3d7da4967bbf1ba705c1bb8a0547307bb2f9)), closes [#6943](https://github.com/nolimits4web/Swiper/issues/6943)
- **element:** fix issue updating with boolean module params ([1cc359e](https://github.com/nolimits4web/Swiper/commit/1cc359e45d637c209ce97ebffb917ae8587fdcf2)), closes [#6947](https://github.com/nolimits4web/Swiper/issues/6947)
- **navigation:** fix lock class on enable ([ea39c33](https://github.com/nolimits4web/Swiper/commit/ea39c3353ccd74d37444692cf01f38724aaff6b7)), closes [#7009](https://github.com/nolimits4web/Swiper/issues/7009)
- **react:** add breakpointsBase param ([0eb4122](https://github.com/nolimits4web/Swiper/commit/0eb4122e45558efe9209f3b72ae9c30524424183)), closes [#7014](https://github.com/nolimits4web/Swiper/issues/7014)
- **react:** fix react components props type ([1cd412e](https://github.com/nolimits4web/Swiper/commit/1cd412ecf22a38ff6c3c63bb7dc49fc1f92ca16f)), closes [#7000](https://github.com/nolimits4web/Swiper/issues/7000)
- **scrollbar:** add 'touch-action: none' to swiper-scrollbar ([#7024](https://github.com/nolimits4web/Swiper/issues/7024)) ([9542d09](https://github.com/nolimits4web/Swiper/commit/9542d094faa61d9a4837a6ec40c331e8172324ab))
- **virtual:** fix issue with loop mode and initialSlide enabled ([f4afd9d](https://github.com/nolimits4web/Swiper/commit/f4afd9d0fec3be48c17ab75c462c23e69e98a571)), closes [#6945](https://github.com/nolimits4web/Swiper/issues/6945)
- **virtual:** fix removing nested slides ([c3321e1](https://github.com/nolimits4web/Swiper/commit/c3321e1645015e2ea053c72edbe60b6351030bcb)), closes [#7005](https://github.com/nolimits4web/Swiper/issues/7005)
- **virtual:** recalc cache on removeSlide ([96e5166](https://github.com/nolimits4web/Swiper/commit/96e5166c9e01a8ca3e18ee236adee0566ad0969e)), closes [#7020](https://github.com/nolimits4web/Swiper/issues/7020)
- **vue:** add breakpointsBase param ([6800dbb](https://github.com/nolimits4web/Swiper/commit/6800dbba2f006d1ff2206cd7ac2068cfc6429089))
- **zoom:** fix scale origin when document is scrolled ([2cf3fc2](https://github.com/nolimits4web/Swiper/commit/2cf3fc26c2a2d9e5dc29b02427c73e8559ab896d)), closes [#6950](https://github.com/nolimits4web/Swiper/issues/6950) [#6955](https://github.com/nolimits4web/Swiper/issues/6955)

### Features

- **core:** allow createElements to process object params with `{enabled: true}` ([abf8405](https://github.com/nolimits4web/Swiper/commit/abf840506aa4c4f2c60cadb9dcdd4223fa071352))
- **core:** make slidesPerViewDynamic public ([ae434b0](https://github.com/nolimits4web/Swiper/commit/ae434b0a5d76fd0d2659cd2dffc27d19c1f14a9e)), closes [#7036](https://github.com/nolimits4web/Swiper/issues/7036)

# [10.2.0](https://github.com/nolimits4web/Swiper/compare/v10.1.0...v10.2.0) (2023-08-17)

### Bug Fixes

- **autoplay:** fix autoplay pause during transition ([db9b17f](https://github.com/nolimits4web/Swiper/commit/db9b17ffc627bafaa912b31e6336b4c366be3021)), closes [#6896](https://github.com/nolimits4web/Swiper/issues/6896)
- **controller:** fix issues with loop mode ([fbb84fe](https://github.com/nolimits4web/Swiper/commit/fbb84fed425f8341c0bd927e5a658962b130abdf)), closes [#6659](https://github.com/nolimits4web/Swiper/issues/6659)
- **core:** fix touch move and loop behavior when transition-delay enabled on swiper-wrapper ([ac27d02](https://github.com/nolimits4web/Swiper/commit/ac27d0204dfa3e6cc2059e19d5f6ff836d77c4d0))
- **core:** handle `contextmenu` event ([721ccaf](https://github.com/nolimits4web/Swiper/commit/721ccaf292de538e479c33668abf30ae86278d2b)), closes [#6692](https://github.com/nolimits4web/Swiper/issues/6692)
- **element:** fix missing elements `part` when added dynamically ([db5b5d6](https://github.com/nolimits4web/Swiper/commit/db5b5d6c337b4e8615b7e6ec2acb1694213a2311)), closes [#6899](https://github.com/nolimits4web/Swiper/issues/6899)
- **element:** fix parallax on elements passed to component root ([265e466](https://github.com/nolimits4web/Swiper/commit/265e466a043efc750964c397d262736923e58040))
- **element:** fixed issue with incorrect lookup for lazy prelader and images ([64513ac](https://github.com/nolimits4web/Swiper/commit/64513ac899c843b745e33813126ab6c52af650a4)), closes [#6901](https://github.com/nolimits4web/Swiper/issues/6901)
- **element:** fixed issue with pointer-events:none in fade effect ([2dcb802](https://github.com/nolimits4web/Swiper/commit/2dcb802ea5192c1f4b47fed4b20242983e06c6cb)), closes [#6908](https://github.com/nolimits4web/Swiper/issues/6908)
- **pagination:** fixed issue in loop mode when sometimes it switches slides with transiton ([3d7dc58](https://github.com/nolimits4web/Swiper/commit/3d7dc5834f12a8ed518c9a79a58fe13777f9298f)), closes [#6856](https://github.com/nolimits4web/Swiper/issues/6856)

### Features

- **pagination:** allow multiple `clickableClass` ([703d13b](https://github.com/nolimits4web/Swiper/commit/703d13b1aeb234d0f72ab0a61572af6a8bb94ab7)), closes [#6741](https://github.com/nolimits4web/Swiper/issues/6741)

# [10.1.0](https://github.com/nolimits4web/Swiper/compare/v10.0.4...v10.1.0) (2023-08-01)

### Bug Fixes

- **core:** fix flickering in loop mode edge positions ([bf29843](https://github.com/nolimits4web/Swiper/commit/bf298437039168611853cc7b7f92624f5f2726c6)), closes [#6673](https://github.com/nolimits4web/Swiper/issues/6673)
- **core:** set `isElement` on swiper-containers only ([#6870](https://github.com/nolimits4web/Swiper/issues/6870)) ([2f61fda](https://github.com/nolimits4web/Swiper/commit/2f61fda721232f78b1b8ed16f57953442d70384b))
- **package:** fix source maps for ES modules ([#6866](https://github.com/nolimits4web/Swiper/issues/6866)) ([5e88c4b](https://github.com/nolimits4web/Swiper/commit/5e88c4b2a88fb2158bc89ebb3f30ad738078530a)), closes [#6863](https://github.com/nolimits4web/Swiper/issues/6863)
- **modules:** filter out falsy elements ([#6823](https://github.com/nolimits4web/Swiper/issues/6823)) ([e1b7254](https://github.com/nolimits4web/Swiper/commit/e1b725476eb90e2bbf719a344e57a92530f779ce))
- **mousewheel:** fix `releaseOnEdges` for freeMode ([8a83360](https://github.com/nolimits4web/Swiper/commit/8a83360ea780d63dd5a95d9f62a364c5f4ab0f3f)), closes [#6770](https://github.com/nolimits4web/Swiper/issues/6770) [#6799](https://github.com/nolimits4web/Swiper/issues/6799)
- **zoom:** fix image move in element ([89d9aa5](https://github.com/nolimits4web/Swiper/commit/89d9aa57531c4675611842378519025a926de34f)), closes [#6847](https://github.com/nolimits4web/Swiper/issues/6847)

### Features

- **element:** support slides as slots ([697b028](https://github.com/nolimits4web/Swiper/commit/697b02843f5feaf1968aefa07ec7e389dcd478cc))
- **types:** make VirtualOptions generic ([#6852](https://github.com/nolimits4web/Swiper/issues/6852)) ([068ee68](https://github.com/nolimits4web/Swiper/commit/068ee68c55d8f62167af015fc2d57db8af439003))

# [10.0.4](https://github.com/nolimits4web/Swiper/compare/v10.0.3...v10.0.4) (2023-07-08)

### Bug Fixes

- **element:** fix in Safari < 16.4 ([e53fc07](https://github.com/nolimits4web/Swiper/commit/e53fc07dffca2a2ef3e929e120d4af6b41540cd7)), closes [#6831](https://github.com/nolimits4web/Swiper/issues/6831)

# [v10.0.3](https://github.com/nolimits4web/Swiper/compare/v10.0.2...v10.0.3) (2023-07-03)

### Features

- added overflow:hidden for fallback if clip is not supported in target… ([#6807](https://github.com/nolimits4web/Swiper/issues/6807)) ([5d8d6f9](https://github.com/nolimits4web/Swiper/commit/5d8d6f933146c8c80792c4892c54cb769b21a005))
- **element:** use usual `<style>` tag if adopted stylesheet are not supported ([18613df](https://github.com/nolimits4web/Swiper/commit/18613dfaa7719983db059e694753262956905504))

# [v10.0.2](https://github.com/nolimits4web/Swiper/compare/v10.0.1...v10.0.2) (2023-07-03)

### Bug Fixes

- **types:** fix modules imports ([a1b4cf6](https://github.com/nolimits4web/Swiper/commit/a1b4cf61c0a1b14b25a293443c1f336e8a8fa321)), closes [#6803](https://github.com/nolimits4web/Swiper/issues/6803)

# [v10.0.1](https://github.com/nolimits4web/Swiper/compare/v10.0.0...v10.0.1) (2023-07-03)

### Bug Fixes

- **types:** fix types for swiper/modules ([fa6e597](https://github.com/nolimits4web/Swiper/commit/fa6e5976856304aff8e13620f09d99e8697b24a8))

# [10.0.0](https://github.com/nolimits4web/Swiper/compare/v9.4.1...v10.0.0) (2023-07-03)

### Features

- tweak browserslist to iOS >= 15 ([96a4e7e](https://github.com/nolimits4web/Swiper/commit/96a4e7e50a430d70817d90916c8412adfbc33f74))
- rework package to use .mjs files and all scripts and styles are minified ([a267785](https://github.com/nolimits4web/Swiper/commit/a267785a09fa228d99ede0173fdbe5506238b19a))
- fully rework scripts structure in package ([2c87f13](https://github.com/nolimits4web/Swiper/commit/2c87f13f56a480ddbbfd43f97516a0775ceb8d19))
- rename package files `.esm.js` to `.mjs` ([7a17821](https://github.com/nolimits4web/Swiper/commit/7a1782128125bda394b40ea9d1235d789964bfa3))
- browser ES modules ([ab20bd1](https://github.com/nolimits4web/Swiper/commit/ab20bd1f3a4204ef83831976746cc4a4e5b4b8d9))
- change swiper container overflow to clip ([#6738](https://github.com/nolimits4web/Swiper/issues/6738)) ([a8447b7](https://github.com/nolimits4web/Swiper/commit/a8447b7d5550bb144b842b4c5b1c61ef96e64ab1))
- **element:** attributes can accept JSON stringified strings ([5b93954](https://github.com/nolimits4web/Swiper/commit/5b9395424d591ab90c391ab5b9573d09c69536c7))
- **element:** highly reworked Swiper web component ([a6f8a0f](https://github.com/nolimits4web/Swiper/commit/a6f8a0fab4d4daae8b37b274a6c548393b2a11df))
  - navigation arrows use SVGs instead of font
  - changed shadow DOM layout to have `<div class="swiper">` inside
  - component styles now added using adoptedStylesheets
  - no more global styles injection
- set transform 3d on wrapper for iOS devices ([90c590d](https://github.com/nolimits4web/Swiper/commit/90c590d1879f39a3fed290a003fe7fd0205d9033))
- tweak types exports to be Node 16+ compatible ([30ce8e0](https://github.com/nolimits4web/Swiper/commit/30ce8e0c9c7ce32025275469e9480ca8c81f30a7))

### Bug Fixes

- package.json exports for typescript ([#6626](https://github.com/nolimits4web/Swiper/issues/6626)) ([e9e8039](https://github.com/nolimits4web/Swiper/commit/e9e8039db557c5fbeab33472ced9ab9dc823280b))

# [10.0.0-beta.5](https://github.com/nolimits4web/Swiper/compare/v10.0.0-beta.4...v10.0.0-beta.5) (2023-06-26)

### Features

- tweak browserslist to iOS >= 15 ([96a4e7e](https://github.com/nolimits4web/Swiper/commit/96a4e7e50a430d70817d90916c8412adfbc33f74))

# [10.0.0-beta.3](https://github.com/nolimits4web/Swiper/compare/v10.0.0-beta.2...v10.0.0-beta.3) (2023-06-23)

### Features

- rework package to use .mjs files and all scripts and styles are minified ([a267785](https://github.com/nolimits4web/Swiper/commit/a267785a09fa228d99ede0173fdbe5506238b19a))

# [10.0.0-beta.2](https://github.com/nolimits4web/Swiper/compare/v10.0.0-beta.1...v10.0.0-beta.2) (2023-06-23)

### Features

- fully rework scripts structure in package ([2c87f13](https://github.com/nolimits4web/Swiper/commit/2c87f13f56a480ddbbfd43f97516a0775ceb8d19))
- rename package files `.esm.js` to `.mjs` ([7a17821](https://github.com/nolimits4web/Swiper/commit/7a1782128125bda394b40ea9d1235d789964bfa3))

# [10.0.0-beta.1](https://github.com/nolimits4web/Swiper/compare/v9.4.1...v10.0.0-beta.1) (2023-06-23)

### Bug Fixes

- package.json exports for typescript ([#6626](https://github.com/nolimits4web/Swiper/issues/6626)) ([e9e8039](https://github.com/nolimits4web/Swiper/commit/e9e8039db557c5fbeab33472ced9ab9dc823280b))

### Features

- browser ES modules ([ab20bd1](https://github.com/nolimits4web/Swiper/commit/ab20bd1f3a4204ef83831976746cc4a4e5b4b8d9))
- change swiper container overflow to clip ([#6738](https://github.com/nolimits4web/Swiper/issues/6738)) ([a8447b7](https://github.com/nolimits4web/Swiper/commit/a8447b7d5550bb144b842b4c5b1c61ef96e64ab1))
- **element:** attributes can accept JSON stringified strings ([5b93954](https://github.com/nolimits4web/Swiper/commit/5b9395424d591ab90c391ab5b9573d09c69536c7))
- **element:** highly reworked Swiper web component ([a6f8a0f](https://github.com/nolimits4web/Swiper/commit/a6f8a0fab4d4daae8b37b274a6c548393b2a11df))
  - navigation arrows use SVGs instead of font
  - changed shadow DOM layout to have `<div class="swiper">` inside
  - component styles now added using adoptedStylesheets
  - no more global styles injection
- set transform 3d on wrapper for iOS devices ([90c590d](https://github.com/nolimits4web/Swiper/commit/90c590d1879f39a3fed290a003fe7fd0205d9033))
- tweak types exports to be Node 16+ compatible ([30ce8e0](https://github.com/nolimits4web/Swiper/commit/30ce8e0c9c7ce32025275469e9480ca8c81f30a7))

# [9.4.1](https://github.com/nolimits4web/Swiper/compare/v9.4.0...v9.4.1) (2023-06-13)

### Bug Fixes

- **core:** fix issue with calling freeMode introduced in 9.4.0 ([581eea8](https://github.com/nolimits4web/Swiper/commit/581eea828b11e79d17d8ad16430acb0823f2049a)), closes [#6751](https://github.com/nolimits4web/Swiper/issues/6751)

# [9.4.0](https://github.com/nolimits4web/Swiper/compare/v9.3.2...v9.3.3) (2023-06-12)

### Bug Fixes

- **core:** lazyPreloadPrevNext not working with grid ([883f006](https://github.com/nolimits4web/Swiper/commit/883f0066089ed3fccd24424e548c4ebb85d92756)), closes [#6725](https://github.com/nolimits4web/Swiper/issues/6725)
- **core:** fix case with not enough slides with `centeredSlidesBounds` ([93b4279](https://github.com/nolimits4web/Swiper/commit/93b4279abed90d5f668fd48c9124392fbb516fdb)), closes [#6689](https://github.com/nolimits4web/Swiper/issues/6689)
- **core:** fix error for `swiperSlideSize` in hidden slider ([36ef2e6](https://github.com/nolimits4web/Swiper/commit/36ef2e608843b4c83a5dc7ecde30aa71794f639e)), closes [#6718](https://github.com/nolimits4web/Swiper/issues/6718)
- **core:** fix issue with `allowSlideNext` in RTL mode ([d61da52](https://github.com/nolimits4web/Swiper/commit/d61da526a4568f39aa37bdf9ba60078b25d0ee20)), closes [#6737](https://github.com/nolimits4web/Swiper/issues/6737)
- **core:** fix navigation can be disabled in breakpoints ([1fd36ad](https://github.com/nolimits4web/Swiper/commit/1fd36ad9d33714df6cff9383e156279867137429)), closes [#6746](https://github.com/nolimits4web/Swiper/issues/6746)
- **core:** fix to preload lazyPreloadPrevNext prior to active slide ([d2f718c](https://github.com/nolimits4web/Swiper/commit/d2f718ce428d0d7c9bbd1c4102f1c4970d4f772b)), closes [#6684](https://github.com/nolimits4web/Swiper/issues/6684)
- **core:** lazyPreloadPrevNext not working with loop mode [#6724](https://github.com/nolimits4web/Swiper/issues/6724) ([#6726](https://github.com/nolimits4web/Swiper/issues/6726)) ([69acab4](https://github.com/nolimits4web/Swiper/commit/69acab4a9b024af1f164f2388070fec68f906c16))
- **effect-cards:** fixed in RTL mode ([e402f05](https://github.com/nolimits4web/Swiper/commit/e402f056a4ace5c7a73cebf414659fe40b46c06f)), closes [#5534](https://github.com/nolimits4web/Swiper/issues/5534)
- **hash-navigation:** get active slide element using the old method if Virtual is not being… ([#6704](https://github.com/nolimits4web/Swiper/issues/6704)) ([db7e72f](https://github.com/nolimits4web/Swiper/commit/db7e72f8f3b67049395302d25f2548062f094d54))

### Features

- **core:** cssMode now supports freeMode ([abe1ec7](https://github.com/nolimits4web/Swiper/commit/abe1ec74a4da0e471af8304616af705e3614106e))
- **element:** add `part="bullet[-active]"` to pagination bullets ([8b4cccd](https://github.com/nolimits4web/Swiper/commit/8b4cccdec6cf75c06cc27117f5f33268da19851c)), closes [#6717](https://github.com/nolimits4web/Swiper/issues/6717)

## [9.3.2](https://github.com/nolimits4web/Swiper/compare/v9.3.1...v9.3.2) (2023-05-15)

### Bug Fixes

- **core:** don't call update() on lazy loaded if spv !== auto and no autoHeight ([378a3c6](https://github.com/nolimits4web/Swiper/commit/378a3c627d8e3845c2949d2c4fff506905d8d9cd))
- **core:** don't call update() on lazy loaded in css mode ([efc294c](https://github.com/nolimits4web/Swiper/commit/efc294c45b0bcd022109e913cd2df165360cfabd))
- **core:** fix for `smoothScroll` check in Support module ([e0f4ae4](https://github.com/nolimits4web/Swiper/commit/e0f4ae4484d2b305dbee9a437d6ca07fbbe15297))
- **element:** fix not working correctly `injectStylesUrls` ([6a50d45](https://github.com/nolimits4web/Swiper/commit/6a50d455801e2d925e4591ac75f70a39b93eaabd)), closes [#6662](https://github.com/nolimits4web/Swiper/issues/6662)
- **element:** remove/re-add navigation, pagination, scrollbar elements based on prop value ([45f8d4a](https://github.com/nolimits4web/Swiper/commit/45f8d4a3dd5b76c8f8426e93696b20aadc74306e)), closes [#6672](https://github.com/nolimits4web/Swiper/issues/6672)
- **hash-navigation:** handle slide to none existing hash ([#6681](https://github.com/nolimits4web/Swiper/issues/6681)) ([7f3fa96](https://github.com/nolimits4web/Swiper/commit/7f3fa96c502964311a012cf6ecea96536c7b46af))

### Features

- add `string` type for `effect` param ([7340629](https://github.com/nolimits4web/Swiper/commit/734062914c3deaf4baa556d966634f50c870bb28)), closes [#6676](https://github.com/nolimits4web/Swiper/issues/6676)
- **mousewheel:** add `noMousewheelClass` param ([0fcd210](https://github.com/nolimits4web/Swiper/commit/0fcd21050fb793fdaa7f9b2950a48e8a3986753a))
- **mousewheel:** support for `swiper-no-mousewheel` ignore class ([#6671](https://github.com/nolimits4web/Swiper/issues/6671)) ([c9130c3](https://github.com/nolimits4web/Swiper/commit/c9130c341c2da0f3bd83a5c688fcd22fc51fb348))
- **react:** export `SwiperClass` type from 'swiper/react' ([6768efe](https://github.com/nolimits4web/Swiper/commit/6768efe557d9829d51a3265cf6b31cfd75f8ef89)), closes [#5500](https://github.com/nolimits4web/Swiper/issues/5500)

# [9.3.1](https://github.com/nolimits4web/Swiper/compare/v9.3.0...v9.3.1) (2023-05-10)

### Bug Fixes

- **element:** correct extending of HTMLElementEventMap in types ([d6a0aca](https://github.com/nolimits4web/Swiper/commit/d6a0aca0f24f19403a424655b4ceb2a1e81529ea)), closes [#6657](https://github.com/nolimits4web/Swiper/issues/6657)

### Features

- **element:** added all events arguments in TS declarations ([abb0688](https://github.com/nolimits4web/Swiper/commit/abb068845b26ace91ab5b10908a2f1f52cf0929e))

# [9.3.0](https://github.com/nolimits4web/Swiper/compare/v9.3.0...v9.2.4) (2023-05-08)

### Bug Fixes

- **a11y:** add notification span to shadow root in Swiper Element ([aa83a03](https://github.com/nolimits4web/Swiper/commit/aa83a03545bb5fbd2469e0e096fb9fb42e57bdd6)), closes [#6634](https://github.com/nolimits4web/Swiper/issues/6634)
- **core:** fix cases when spaceBetween set in `%` ([446af7e](https://github.com/nolimits4web/Swiper/commit/446af7ece1ec7042f5dad6bc550eb344132c0e88)), closes [#6647](https://github.com/nolimits4web/Swiper/issues/6647)
- **element:** don't reinit nested swipers rearranged by parent swiper loop ([926828a](https://github.com/nolimits4web/Swiper/commit/926828aa9d1b301b04f2715a17b94971cfc25b42)), closes [#6642](https://github.com/nolimits4web/Swiper/issues/6642)
- **element:** don't render swiper on every `connected` ([5a5ebb4](https://github.com/nolimits4web/Swiper/commit/5a5ebb4162666eb44c1a3e09893309d734289a98))

### Features

- **element:** element events types ([83774fa](https://github.com/nolimits4web/Swiper/commit/83774fae3585aa2c2883038f5978b576dcc5c0d5))
- **element:** add shadow parts ([e4f3def](https://github.com/nolimits4web/Swiper/commit/e4f3defe5bcd3ab7b9e7dad5513bcb68482a4b9e)), closes [#6594](https://github.com/nolimits4web/Swiper/issues/6594)
- **element:** more complex ts definitions ([4cab52d](https://github.com/nolimits4web/Swiper/commit/4cab52d29b8ca535622d73ddb52c192d282c65fa))

# [9.3.0-beta.1](https://github.com/nolimits4web/Swiper/compare/v9.2.4...v9.3.0-beta.1) (2023-05-08)

### Bug Fixes

- **a11y:** add notification span to shadow root in Swiper Element ([aa83a03](https://github.com/nolimits4web/Swiper/commit/aa83a03545bb5fbd2469e0e096fb9fb42e57bdd6)), closes [#6634](https://github.com/nolimits4web/Swiper/issues/6634)
- **core:** fix cases when spaceBetween set in `%` ([446af7e](https://github.com/nolimits4web/Swiper/commit/446af7ece1ec7042f5dad6bc550eb344132c0e88)), closes [#6647](https://github.com/nolimits4web/Swiper/issues/6647)
- **element:** don't reinit nested swipers rearranged by parent swiper loop ([926828a](https://github.com/nolimits4web/Swiper/commit/926828aa9d1b301b04f2715a17b94971cfc25b42)), closes [#6642](https://github.com/nolimits4web/Swiper/issues/6642)
- **element:** don't render swiper on every `connected` ([5a5ebb4](https://github.com/nolimits4web/Swiper/commit/5a5ebb4162666eb44c1a3e09893309d734289a98))

### Features

- **element:** add shadow parts ([e4f3def](https://github.com/nolimits4web/Swiper/commit/e4f3defe5bcd3ab7b9e7dad5513bcb68482a4b9e)), closes [#6594](https://github.com/nolimits4web/Swiper/issues/6594)
- **element:** more complex ts definitions ([4cab52d](https://github.com/nolimits4web/Swiper/commit/4cab52d29b8ca535622d73ddb52c192d282c65fa))

# [9.2.4](https://github.com/nolimits4web/Swiper/compare/v9.2.3...v9.2.4) (2023-04-21)

### Bug Fixes

- **core:** fix autoHeight in virtual slides ([dd30829](https://github.com/nolimits4web/Swiper/commit/dd308291a46db86bf7b88416587d2d8a1cdcabd5)), closes [#6570](https://github.com/nolimits4web/Swiper/issues/6570)
- **loop:** update slides grids before loop fix when spv is "auto" ([035e79d](https://github.com/nolimits4web/Swiper/commit/035e79d6eb3e07d78824322bc6412df3d09cafbe)), closes [#6599](https://github.com/nolimits4web/Swiper/issues/6599)
- **virtual:** fix last slide index check in virtual slides ([154f048](https://github.com/nolimits4web/Swiper/commit/154f048436726a5a3219ace6b00bebc3bb51ab07)), closes [#6595](https://github.com/nolimits4web/Swiper/issues/6595)

### Features

- **hash-navigation:** new `getSlideIndex` to specify slide index by hash ([3eb0ae2](https://github.com/nolimits4web/Swiper/commit/3eb0ae2dfa6911f7c13fe85fd48cac22a91af451)), closes [#6588](https://github.com/nolimits4web/Swiper/issues/6588)

# [9.2.3](https://github.com/nolimits4web/Swiper/compare/v9.2.2...v9.2.3) (2023-04-17)

### Bug Fixes

- **autoplay:** use local scope for autoplay resize timeot ([4f665bd](https://github.com/nolimits4web/Swiper/commit/4f665bde1871ca05780c1666b5b8072a48786e18)), closes [#6590](https://github.com/nolimits4web/Swiper/issues/6590)
- made defineProperty configurable as it broke when minified. ([#6586](https://github.com/nolimits4web/Swiper/issues/6586)) ([26cfbaa](https://github.com/nolimits4web/Swiper/commit/26cfbaa5a992dc5f4e0f6b12f85e9c7b6308db8c))
- **pagination:** fix clickable pagination in loop ([479a7f5](https://github.com/nolimits4web/Swiper/commit/479a7f5d042492171af15b1bd1001c7f89341eb0)), closes [#6518](https://github.com/nolimits4web/Swiper/issues/6518) [#6460](https://github.com/nolimits4web/Swiper/issues/6460) [#6587](https://github.com/nolimits4web/Swiper/issues/6587) [#6451](https://github.com/nolimits4web/Swiper/issues/6451)

# [9.2.2](https://github.com/nolimits4web/Swiper/compare/v9.2.1...v9.2.2) (2023-04-14)

### Bug Fixes

- **element:** fix redefining `injectStyles` ([36ddaf2](https://github.com/nolimits4web/Swiper/commit/36ddaf26e230878bd8da3bd20b86c2b972ae8228)), closes [#6584](https://github.com/nolimits4web/Swiper/issues/6584)

# [9.2.1](https://github.com/nolimits4web/Swiper/compare/v9.2.0...v9.2.1) (2023-04-14)

### Bug Fixes

- **controller:** add a conditional to early return if the swiper controller is destroyed ([#6555](https://github.com/nolimits4web/Swiper/issues/6555)) ([3fbec6e](https://github.com/nolimits4web/Swiper/commit/3fbec6e5a730f073575f57422262585471eaae5b))
- **controller:** correct interpolation per slider ([706fdf8](https://github.com/nolimits4web/Swiper/commit/706fdf8a962ccd4750bf018e85a6ab9f9e51cf86)), closes [#6506](https://github.com/nolimits4web/Swiper/issues/6506)
- **controller:** fix controllers multiplier on 0 translates ([4b8bd02](https://github.com/nolimits4web/Swiper/commit/4b8bd029fb3f63d897860e489c713d5f223df89c)), closes [#6498](https://github.com/nolimits4web/Swiper/issues/6498)
- **element:** add `injectStyles` to be acceptable as props ([7c1c5d3](https://github.com/nolimits4web/Swiper/commit/7c1c5d35997eba2ba9b6c4d14e11e587b722610b)), closes [#6578](https://github.com/nolimits4web/Swiper/issues/6578)
- **pagination:** update pagination direction class on direction change ([e6247d9](https://github.com/nolimits4web/Swiper/commit/e6247d98a11e7d9c5a23fbef7d60a70edac8100c)), closes [#6511](https://github.com/nolimits4web/Swiper/issues/6511)
- **vue:** fix deep slots ([642b455](https://github.com/nolimits4web/Swiper/commit/642b455fc7f02b82d8e534e51405a2bbe70d0b2c)), closes [#6574](https://github.com/nolimits4web/Swiper/issues/6574)

### Features

- **virtual:** patch for very large sliders using virtual slides ([#6533](https://github.com/nolimits4web/Swiper/issues/6533)) ([e48daa5](https://github.com/nolimits4web/Swiper/commit/e48daa51e1d728be1751a7bf5f726a0fc777d36a))

# [9.2.0](https://github.com/nolimits4web/Swiper/compare/v9.1.1...v9.2.0) (2023-03-31)

### Bug Fixes

- **controller:** add `null` type ([3177936](https://github.com/nolimits4web/Swiper/commit/3177936a725ece8d076a5f481ae927325f41c0ec)), closes [#6505](https://github.com/nolimits4web/Swiper/issues/6505)
- **controller:** prevent controlled swipers from being called when destroyed ([#6501](https://github.com/nolimits4web/Swiper/issues/6501)) ([a266b78](https://github.com/nolimits4web/Swiper/commit/a266b78f918babee0850e6e9cce49341052ee94c)), closes [#6491](https://github.com/nolimits4web/Swiper/issues/6491)
- **mousewheel:** Initialize lastClickTime to very old time ([#6497](https://github.com/nolimits4web/Swiper/issues/6497)) ([0983ded](https://github.com/nolimits4web/Swiper/commit/0983ded1dfc716efacc0c67e047fd0ac9c027439)), closes [#6496](https://github.com/nolimits4web/Swiper/issues/6496)
- **pagination:** fix pagination.d.ts render functions return types ([#6499](https://github.com/nolimits4web/Swiper/issues/6499)) ([34973a1](https://github.com/nolimits4web/Swiper/commit/34973a1555a38c4588a7f8554bdc983d601dc654))
- **zoom:** fix zoom out on double tap on sensitive touch screens ([7f5c626](https://github.com/nolimits4web/Swiper/commit/7f5c6264c3b143d87fa939bfb54644bc1858bc27))
- **zoom:** reset transform origin on zoom out ([7f7f57e](https://github.com/nolimits4web/Swiper/commit/7f7f57e17736219d1856f35a444a1b73b8e2087d))

### Features

- **core:** lazyPreloadPrevNext option to preload prev/next images ([#6544](https://github.com/nolimits4web/Swiper/issues/6544)) ([1cb3233](https://github.com/nolimits4web/Swiper/commit/1cb3233b112d756a111dc8cacb3f37d32b461ca5))
- lazyPreloadPrevNext option to preload prev/next images ([6d08635](https://github.com/nolimits4web/Swiper/commit/6d086359206ed936b991dde0ce7552ba0e65b6b2))
- **zoom:** highly improve pinch-zoom gestures handling ([6016a50](https://github.com/nolimits4web/Swiper/commit/6016a50ddc9fb29bb21e2656abea82ba1f6b90bd))

# [9.1.1](https://github.com/nolimits4web/Swiper/compare/v9.1.0...v9.1.1) (2023-03-16)

### Bug Fixes

- **core:** fixed loop when using custom `slideActiveClass` ([#6495](https://github.com/nolimits4web/Swiper/issues/6495)) ([756ecdb](https://github.com/nolimits4web/Swiper/commit/756ecdbd3e510a29d298f40a167cbdeb26d72508))
- **element:** reset initialized flag on disconnectedCallback ([#6474](https://github.com/nolimits4web/Swiper/issues/6474)) ([1e4a235](https://github.com/nolimits4web/Swiper/commit/1e4a235587c32fcd4be5910917cc60a9743193c6))
- **loop:** fix loopFix for controlled swipers ([d7c0ef7](https://github.com/nolimits4web/Swiper/commit/d7c0ef70625a6306879611ea6f5a756b38c1f78e)), closes [#6491](https://github.com/nolimits4web/Swiper/issues/6491)
- **loop:** fix slides closure when removing last slide ([1a02271](https://github.com/nolimits4web/Swiper/commit/1a02271005473c65c190f009fe9a5c5987129d18)), closes [#6477](https://github.com/nolimits4web/Swiper/issues/6477)
- **pagination:** correctly support multiple bullets paginations ([e24bd8c](https://github.com/nolimits4web/Swiper/commit/e24bd8c60eb2cc2af7b0bd25c109f6e150008819)), closes [#6462](https://github.com/nolimits4web/Swiper/issues/6462)
- **pagination:** escape `+` char in pagination classes ([d0beb9f](https://github.com/nolimits4web/Swiper/commit/d0beb9feb99cc121f0a38ba9f40e1a77d81e9911)), closes [#6486](https://github.com/nolimits4web/Swiper/issues/6486)
- **pagination:** support bulle multiple classes ([20b05fa](https://github.com/nolimits4web/Swiper/commit/20b05fa498eb86a1cc1fae849fce200233121cf3)), closes [#6447](https://github.com/nolimits4web/Swiper/issues/6447)
- **react:** fix virtual loop when not enough slides ([57d8eea](https://github.com/nolimits4web/Swiper/commit/57d8eea78df4908051962041c995fb96ec956cfe)), closes [#6487](https://github.com/nolimits4web/Swiper/issues/6487)

### Features

- **element:** add `eventsPrefix` prop to avoid collision with native events ([d5df91f](https://github.com/nolimits4web/Swiper/commit/d5df91f93421676764c916926c258eda5027dead)), closes [#6450](https://github.com/nolimits4web/Swiper/issues/6450)
- **pagination:** add border-radius variable ([#6476](https://github.com/nolimits4web/Swiper/issues/6476)) ([c912590](https://github.com/nolimits4web/Swiper/commit/c912590af23f1e5190a5c8d6ade5855907288e3f))

# [9.1.0](https://github.com/nolimits4web/Swiper/compare/v9.0.5...v9.1.0) (2023-02-28)

### Bug Fixes

- **autoplay:** fix a crash with resize when the autoplay has gone away during timeout ([#6431](https://github.com/nolimits4web/Swiper/issues/6431)) ([ad
Download .txt
gitextract_z4g623hj/

├── .all-contributorsrc
├── .browserslistrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.cjs
├── .gitattributes
├── .github/
│   ├── CONTRIBUTING.md
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── config.yml
│   │   ├── feature-request.yml
│   │   ├── swiper_core_issue.yml
│   │   ├── swiper_element_issue.yml
│   │   ├── swiper_react_issue.yml
│   │   └── vue_issue.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   ├── lock.yml
│   ├── stale.yml
│   └── workflows/
│       ├── build.yml
│       ├── formatting.yml
│       ├── issue-close-require.yml
│       ├── issue-labeled.yml
│       └── lint.yml
├── .gitignore
├── .lintstagedrc
├── .npmignore
├── .prettierignore
├── .prettierrc
├── .vscode/
│   └── settings.json
├── BACKERS.md
├── CHANGELOG.md
├── CODE_CONTRIBUTORS.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── TODO.md
├── babel.config.json
├── demos/
│   ├── 010-default.html
│   ├── 020-navigation.html
│   ├── 030-pagination.html
│   ├── 040-pagination-dynamic.html
│   ├── 050-pagination-progress.html
│   ├── 060-pagination-fraction.html
│   ├── 070-pagination-custom.html
│   ├── 080-scrollbar.html
│   ├── 090-vertical.html
│   ├── 100-space-between.html
│   ├── 110-slides-per-view.html
│   ├── 120-slides-per-view-auto.html
│   ├── 125-snap-to-slide-edge.html
│   ├── 130-centered.html
│   ├── 140-centered-auto.html
│   ├── 145-css-mode.html
│   ├── 150-freemode.html
│   ├── 160-scroll-container.html
│   ├── 170-slides-per-column.html
│   ├── 180-nested.html
│   ├── 190-grab-cursor.html
│   ├── 200-infinite-loop.html
│   ├── 210-infinite-loop-with-slides-per-group.html
│   ├── 211-slides-per-group-skip.html
│   ├── 220-effect-fade.html
│   ├── 230-effect-cube.html
│   ├── 240-effect-coverflow.html
│   ├── 250-effect-flip.html
│   ├── 255-effect-cards.html
│   ├── 257-effect-creative.html
│   ├── 260-keyboard-control.html
│   ├── 270-mousewheel-control.html
│   ├── 280-autoplay.html
│   ├── 290-dynamic-slides.html
│   ├── 300-thumbs-gallery.html
│   ├── 310-thumbs-gallery-loop.html
│   ├── 320-multiple-swipers.html
│   ├── 330-hash-navigation.html
│   ├── 340-history.html
│   ├── 350-rtl.html
│   ├── 360-parallax.html
│   ├── 370-lazy-load-images.html
│   ├── 380-responsive-breakpoints.html
│   ├── 381-ratio-breakpoints.html
│   ├── 390-autoheight.html
│   ├── 400-zoom.html
│   ├── 410-virtual-slides.html
│   ├── 420-custom-plugin.html
│   ├── 430-slideable-menu.html
│   ├── 440-change-direction.html
│   ├── 450-watchSlidesVisibility.html
│   ├── index.html
│   └── vite.config.js
├── package.json
├── playground/
│   ├── core/
│   │   ├── index.html
│   │   └── vite.config.js
│   ├── element/
│   │   ├── index.html
│   │   └── vite.config.js
│   ├── react/
│   │   ├── App.jsx
│   │   ├── index.html
│   │   ├── main.js
│   │   └── vite.config.js
│   └── vue/
│       ├── App.vue
│       ├── index.html
│       ├── innerComp.vue
│       ├── main.js
│       └── vite.config.js
├── scripts/
│   ├── build-config.js
│   ├── build-modules.js
│   ├── build-sponsors.js
│   ├── build-styles.js
│   ├── build-types.js
│   ├── build.js
│   ├── release.js
│   ├── utils/
│   │   ├── autoprefixer.js
│   │   ├── banner.js
│   │   ├── get-element-styles.js
│   │   ├── helper.js
│   │   ├── isProd.js
│   │   ├── less.js
│   │   ├── minify-css.js
│   │   ├── minify.js
│   │   ├── output-dir.js
│   │   └── unwrap-css.js
│   └── watch.js
└── src/
    ├── components-shared/
    │   ├── get-changed-params.mjs
    │   ├── get-element-params.mjs
    │   ├── get-params.mjs
    │   ├── mount-swiper.mjs
    │   ├── params-list.mjs
    │   ├── update-on-virtual-data.mjs
    │   ├── update-swiper.mjs
    │   └── utils.mjs
    ├── copy/
    │   ├── LICENSE
    │   ├── README.md
    │   └── package.json
    ├── core/
    │   ├── breakpoints/
    │   │   ├── getBreakpoint.mjs
    │   │   ├── index.mjs
    │   │   └── setBreakpoint.mjs
    │   ├── check-overflow/
    │   │   └── index.mjs
    │   ├── classes/
    │   │   ├── addClasses.mjs
    │   │   ├── index.mjs
    │   │   └── removeClasses.mjs
    │   ├── core.mjs
    │   ├── defaults.mjs
    │   ├── events/
    │   │   ├── index.mjs
    │   │   ├── onClick.mjs
    │   │   ├── onDocumentTouchStart.mjs
    │   │   ├── onLoad.mjs
    │   │   ├── onResize.mjs
    │   │   ├── onScroll.mjs
    │   │   ├── onTouchEnd.mjs
    │   │   ├── onTouchMove.mjs
    │   │   └── onTouchStart.mjs
    │   ├── events-emitter.mjs
    │   ├── grab-cursor/
    │   │   ├── index.mjs
    │   │   ├── setGrabCursor.mjs
    │   │   └── unsetGrabCursor.mjs
    │   ├── loop/
    │   │   ├── index.mjs
    │   │   ├── loopCreate.mjs
    │   │   ├── loopDestroy.mjs
    │   │   └── loopFix.mjs
    │   ├── moduleExtendParams.mjs
    │   ├── modules/
    │   │   ├── observer/
    │   │   │   └── observer.mjs
    │   │   └── resize/
    │   │       └── resize.mjs
    │   ├── slide/
    │   │   ├── index.mjs
    │   │   ├── slideNext.mjs
    │   │   ├── slidePrev.mjs
    │   │   ├── slideReset.mjs
    │   │   ├── slideTo.mjs
    │   │   ├── slideToClickedSlide.mjs
    │   │   ├── slideToClosest.mjs
    │   │   └── slideToLoop.mjs
    │   ├── transition/
    │   │   ├── index.mjs
    │   │   ├── setTransition.mjs
    │   │   ├── transitionEmit.mjs
    │   │   ├── transitionEnd.mjs
    │   │   └── transitionStart.mjs
    │   ├── translate/
    │   │   ├── getTranslate.mjs
    │   │   ├── index.mjs
    │   │   ├── maxTranslate.mjs
    │   │   ├── minTranslate.mjs
    │   │   ├── setTranslate.mjs
    │   │   └── translateTo.mjs
    │   └── update/
    │       ├── index.mjs
    │       ├── updateActiveIndex.mjs
    │       ├── updateAutoHeight.mjs
    │       ├── updateClickedSlide.mjs
    │       ├── updateProgress.mjs
    │       ├── updateSize.mjs
    │       ├── updateSlides.mjs
    │       ├── updateSlidesClasses.mjs
    │       ├── updateSlidesOffset.mjs
    │       └── updateSlidesProgress.mjs
    ├── modules/
    │   ├── a11y/
    │   │   ├── a11y.css
    │   │   └── a11y.mjs
    │   ├── autoplay/
    │   │   ├── autoplay.css
    │   │   └── autoplay.mjs
    │   ├── controller/
    │   │   ├── controller.css
    │   │   └── controller.mjs
    │   ├── effect-cards/
    │   │   ├── effect-cards.css
    │   │   └── effect-cards.mjs
    │   ├── effect-coverflow/
    │   │   ├── effect-coverflow.css
    │   │   └── effect-coverflow.mjs
    │   ├── effect-creative/
    │   │   ├── effect-creative.css
    │   │   └── effect-creative.mjs
    │   ├── effect-cube/
    │   │   ├── effect-cube.css
    │   │   └── effect-cube.mjs
    │   ├── effect-fade/
    │   │   ├── effect-fade.css
    │   │   └── effect-fade.mjs
    │   ├── effect-flip/
    │   │   ├── effect-flip.css
    │   │   └── effect-flip.mjs
    │   ├── free-mode/
    │   │   ├── free-mode.css
    │   │   └── free-mode.mjs
    │   ├── grid/
    │   │   ├── grid.css
    │   │   └── grid.mjs
    │   ├── hash-navigation/
    │   │   ├── hash-navigation.css
    │   │   └── hash-navigation.mjs
    │   ├── history/
    │   │   ├── history.css
    │   │   └── history.mjs
    │   ├── keyboard/
    │   │   ├── keyboard.css
    │   │   └── keyboard.mjs
    │   ├── manipulation/
    │   │   ├── manipulation.css
    │   │   ├── manipulation.mjs
    │   │   └── methods/
    │   │       ├── addSlide.mjs
    │   │       ├── appendSlide.mjs
    │   │       ├── prependSlide.mjs
    │   │       ├── removeAllSlides.mjs
    │   │       └── removeSlide.mjs
    │   ├── mousewheel/
    │   │   ├── mousewheel.css
    │   │   └── mousewheel.mjs
    │   ├── navigation/
    │   │   ├── navigation.css
    │   │   └── navigation.mjs
    │   ├── pagination/
    │   │   ├── pagination.css
    │   │   └── pagination.mjs
    │   ├── parallax/
    │   │   ├── parallax.css
    │   │   └── parallax.mjs
    │   ├── scrollbar/
    │   │   ├── scrollbar.css
    │   │   └── scrollbar.mjs
    │   ├── thumbs/
    │   │   ├── thumbs.css
    │   │   └── thumbs.mjs
    │   ├── virtual/
    │   │   ├── virtual.css
    │   │   └── virtual.mjs
    │   └── zoom/
    │       ├── zoom.css
    │       └── zoom.mjs
    ├── react/
    │   ├── context.mjs
    │   ├── get-children.mjs
    │   ├── swiper-slide.mjs
    │   ├── swiper.mjs
    │   ├── use-isomorphic-layout-effect.mjs
    │   └── virtual.mjs
    ├── shared/
    │   ├── classes-to-selector.mjs
    │   ├── classes-to-tokens.mjs
    │   ├── create-element-if-not-defined.mjs
    │   ├── create-shadow.mjs
    │   ├── effect-init.mjs
    │   ├── effect-target.mjs
    │   ├── effect-virtual-transition-end.mjs
    │   ├── get-browser.mjs
    │   ├── get-device.mjs
    │   ├── get-support.mjs
    │   ├── process-lazy-preloader.mjs
    │   └── utils.mjs
    ├── swiper-bundle.mjs
    ├── swiper-effect-utils.d.ts
    ├── swiper-effect-utils.mjs
    ├── swiper-element.d.ts
    ├── swiper-element.mjs
    ├── swiper-react.d.ts
    ├── swiper-react.mjs
    ├── swiper-vars.less
    ├── swiper-vue.d.ts
    ├── swiper-vue.mjs
    ├── swiper.css
    ├── swiper.d.ts
    ├── swiper.mjs
    ├── types/
    │   ├── index.d.ts
    │   ├── modules/
    │   │   ├── a11y.d.ts
    │   │   ├── autoplay.d.ts
    │   │   ├── controller.d.ts
    │   │   ├── effect-cards.d.ts
    │   │   ├── effect-coverflow.d.ts
    │   │   ├── effect-creative.d.ts
    │   │   ├── effect-cube.d.ts
    │   │   ├── effect-fade.d.ts
    │   │   ├── effect-flip.d.ts
    │   │   ├── free-mode.d.ts
    │   │   ├── grid.d.ts
    │   │   ├── hash-navigation.d.ts
    │   │   ├── history.d.ts
    │   │   ├── index.d.ts
    │   │   ├── keyboard.d.ts
    │   │   ├── manipulation.d.ts
    │   │   ├── mousewheel.d.ts
    │   │   ├── navigation.d.ts
    │   │   ├── pagination.d.ts
    │   │   ├── parallax.d.ts
    │   │   ├── public-api.d.ts
    │   │   ├── scrollbar.d.ts
    │   │   ├── thumbs.d.ts
    │   │   ├── virtual.d.ts
    │   │   └── zoom.d.ts
    │   ├── shared.d.ts
    │   ├── swiper-class.d.ts
    │   ├── swiper-events.d.ts
    │   └── swiper-options.d.ts
    └── vue/
        ├── context.mjs
        ├── get-children.mjs
        ├── swiper-slide.mjs
        ├── swiper.mjs
        └── virtual.mjs
Download .txt
SYMBOL INDEX (320 symbols across 142 files)

FILE: scripts/build-modules.js
  function buildModules (line 16) | async function buildModules() {

FILE: scripts/build-styles.js
  function buildStyles (line 45) | async function buildStyles() {

FILE: scripts/build-types.js
  function buildTypes (line 11) | async function buildTypes() {

FILE: scripts/build.js
  class Build (line 10) | class Build {
    method constructor (line 11) | constructor() {
    method add (line 17) | add(flag, buildFn) {
    method run (line 22) | async run() {

FILE: scripts/release.js
  function release (line 12) | async function release() {

FILE: scripts/utils/banner.js
  function banner (line 12) | function banner(name = null) {
  function addBannerToFile (line 27) | async function addBannerToFile(file, name) {

FILE: scripts/utils/get-element-styles.js
  function getElementStyles (line 111) | async function getElementStyles() {

FILE: scripts/utils/helper.js
  function capitalizeString (line 1) | function capitalizeString(str) {
  function parseSwiperBuildModulesEnv (line 10) | function parseSwiperBuildModulesEnv() {

FILE: scripts/utils/isProd.js
  function isProd (line 1) | function isProd() {

FILE: src/components-shared/get-changed-params.mjs
  function getChangedParams (line 4) | function getChangedParams(swiperParams, oldParams, children, oldChildren...

FILE: src/components-shared/get-element-params.mjs
  function getParams (line 49) | function getParams(element, propName, propValue) {

FILE: src/components-shared/get-params.mjs
  function getParams (line 5) | function getParams(obj = {}, splitEvents = true) {

FILE: src/components-shared/mount-swiper.mjs
  function mountSwiper (line 3) | function mountSwiper({ el, nextEl, prevEl, paginationEl, scrollbarEl, sw...

FILE: src/components-shared/update-swiper.mjs
  function updateSwiper (line 4) | function updateSwiper({

FILE: src/components-shared/utils.mjs
  function isObject (line 1) | function isObject(o) {
  function extend (line 11) | function extend(target, src) {
  function needsNavigation (line 26) | function needsNavigation(params = {}) {
  function needsPagination (line 33) | function needsPagination(params = {}) {
  function needsScrollbar (line 36) | function needsScrollbar(params = {}) {
  function uniqueClasses (line 39) | function uniqueClasses(classNames = '') {
  function attrToProp (line 51) | function attrToProp(attrName = '') {
  function wrapperClass (line 55) | function wrapperClass(className = '') {

FILE: src/core/breakpoints/getBreakpoint.mjs
  function getBreakpoint (line 3) | function getBreakpoint(breakpoints, base = 'window', containerEl) {

FILE: src/core/breakpoints/setBreakpoint.mjs
  function setBreakpoint (line 8) | function setBreakpoint() {

FILE: src/core/check-overflow/index.mjs
  function checkOverflow (line 1) | function checkOverflow() {

FILE: src/core/classes/addClasses.mjs
  function prepareClasses (line 1) | function prepareClasses(entries, prefix) {
  function addClasses (line 17) | function addClasses() {

FILE: src/core/classes/removeClasses.mjs
  function removeClasses (line 1) | function removeClasses() {

FILE: src/core/core.mjs
  class Swiper (line 51) | class Swiper {
    method constructor (line 52) | constructor(...args) {
    method getDirectionLabel (line 235) | getDirectionLabel(property) {
    method getSlideIndex (line 252) | getSlideIndex(slideEl) {
    method getSlideIndexByData (line 259) | getSlideIndexByData(index) {
    method getSlideIndexWhenGrid (line 265) | getSlideIndexWhenGrid(index) {
    method recalcSlides (line 276) | recalcSlides() {
    method enable (line 282) | enable() {
    method disable (line 292) | disable() {
    method setProgress (line 302) | setProgress(progress, speed) {
    method emitContainerClasses (line 313) | emitContainerClasses() {
    method getSlideClasses (line 325) | getSlideClasses(slideEl) {
    method emitSlidesClasses (line 340) | emitSlidesClasses() {
    method slidesPerViewDynamic (line 352) | slidesPerViewDynamic(view = 'current', exact = false) {
    method update (line 399) | update() {
    method changeDirection (line 457) | changeDirection(newDirection, needUpdate = true) {
    method changeLanguageDirection (line 491) | changeLanguageDirection(direction) {
    method mount (line 506) | mount(element) {
    method init (line 568) | init(el) {
    method destroy (line 647) | destroy(deleteInstance = true, cleanStyles = true) {
    method extendDefaults (line 710) | static extendDefaults(newDefaults) {
    method extendedDefaults (line 714) | static get extendedDefaults() {
    method defaults (line 718) | static get defaults() {
    method installModule (line 722) | static installModule(mod) {
    method use (line 731) | static use(module) {

FILE: src/core/events-emitter.mjs
  method on (line 4) | on(events, handler, priority) {
  method once (line 16) | once(events, handler, priority) {
  method onAny (line 31) | onAny(handler, priority) {
  method offAny (line 42) | offAny(handler) {
  method off (line 53) | off(events, handler) {
  method emit (line 74) | emit(...args) {

FILE: src/core/events/index.mjs
  function attachEvents (line 59) | function attachEvents() {
  function detachEvents (line 78) | function detachEvents() {

FILE: src/core/events/onClick.mjs
  function onClick (line 1) | function onClick(e) {

FILE: src/core/events/onDocumentTouchStart.mjs
  function onDocumentTouchStart (line 1) | function onDocumentTouchStart() {

FILE: src/core/events/onLoad.mjs
  function onLoad (line 3) | function onLoad(e) {

FILE: src/core/events/onResize.mjs
  function onResize (line 1) | function onResize() {

FILE: src/core/events/onScroll.mjs
  function onScroll (line 1) | function onScroll() {

FILE: src/core/events/onTouchEnd.mjs
  function onTouchEnd (line 3) | function onTouchEnd(event) {

FILE: src/core/events/onTouchMove.mjs
  function onTouchMove (line 4) | function onTouchMove(event) {

FILE: src/core/events/onTouchStart.mjs
  function closestElement (line 5) | function closestElement(selector, base = this) {
  function preventEdgeSwipe (line 18) | function preventEdgeSwipe(swiper, event, startX) {
  function onTouchStart (line 36) | function onTouchStart(event) {

FILE: src/core/grab-cursor/setGrabCursor.mjs
  function setGrabCursor (line 1) | function setGrabCursor(moving) {

FILE: src/core/grab-cursor/unsetGrabCursor.mjs
  function unsetGrabCursor (line 1) | function unsetGrabCursor() {

FILE: src/core/loop/loopCreate.mjs
  function loopCreate (line 3) | function loopCreate(slideRealIndex, initial) {

FILE: src/core/loop/loopDestroy.mjs
  function loopDestroy (line 1) | function loopDestroy() {

FILE: src/core/loop/loopFix.mjs
  function loopFix (line 3) | function loopFix({

FILE: src/core/moduleExtendParams.mjs
  function moduleExtendParams (line 3) | function moduleExtendParams(params, allModulesParams) {

FILE: src/core/modules/observer/observer.mjs
  function Observer (line 4) | function Observer({ swiper, extendParams, on, emit }) {

FILE: src/core/modules/resize/resize.mjs
  function Resize (line 3) | function Resize({ swiper, on, emit }) {

FILE: src/core/slide/slideNext.mjs
  function slideNext (line 2) | function slideNext(speed, runCallbacks = true, internal) {

FILE: src/core/slide/slidePrev.mjs
  function slidePrev (line 2) | function slidePrev(speed, runCallbacks = true, internal) {

FILE: src/core/slide/slideReset.mjs
  function slideReset (line 2) | function slideReset(speed, runCallbacks = true, internal) {

FILE: src/core/slide/slideTo.mjs
  function slideTo (line 4) | function slideTo(index = 0, speed, runCallbacks = true, internal, initia...

FILE: src/core/slide/slideToClickedSlide.mjs
  function slideToClickedSlide (line 3) | function slideToClickedSlide() {

FILE: src/core/slide/slideToClosest.mjs
  function slideToClosest (line 2) | function slideToClosest(speed, runCallbacks = true, internal, threshold ...

FILE: src/core/slide/slideToLoop.mjs
  function slideToLoop (line 1) | function slideToLoop(index = 0, speed, runCallbacks = true, internal) {

FILE: src/core/transition/setTransition.mjs
  function setTransition (line 1) | function setTransition(duration, byController) {

FILE: src/core/transition/transitionEmit.mjs
  function transitionEmit (line 1) | function transitionEmit({ swiper, runCallbacks, direction, step }) {

FILE: src/core/transition/transitionEnd.mjs
  function transitionEnd (line 3) | function transitionEnd(runCallbacks = true, direction) {

FILE: src/core/transition/transitionStart.mjs
  function transitionStart (line 3) | function transitionStart(runCallbacks = true, direction) {

FILE: src/core/translate/getTranslate.mjs
  function getSwiperTranslate (line 3) | function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {

FILE: src/core/translate/maxTranslate.mjs
  function maxTranslate (line 1) | function maxTranslate() {

FILE: src/core/translate/minTranslate.mjs
  function minTranslate (line 1) | function minTranslate() {

FILE: src/core/translate/setTranslate.mjs
  function setTranslate (line 1) | function setTranslate(translate, byController) {

FILE: src/core/translate/translateTo.mjs
  function translateTo (line 3) | function translateTo(

FILE: src/core/update/updateActiveIndex.mjs
  function getActiveIndexByTranslate (line 3) | function getActiveIndexByTranslate(swiper) {
  function updateActiveIndex (line 27) | function updateActiveIndex(newActiveIndex) {

FILE: src/core/update/updateAutoHeight.mjs
  function updateAutoHeight (line 1) | function updateAutoHeight(speed) {

FILE: src/core/update/updateClickedSlide.mjs
  function updateClickedSlide (line 1) | function updateClickedSlide(el, path) {

FILE: src/core/update/updateProgress.mjs
  function updateProgress (line 1) | function updateProgress(translate) {

FILE: src/core/update/updateSize.mjs
  function updateSize (line 3) | function updateSize() {

FILE: src/core/update/updateSlides.mjs
  function updateSlides (line 8) | function updateSlides() {

FILE: src/core/update/updateSlidesClasses.mjs
  function updateSlidesClasses (line 11) | function updateSlidesClasses() {

FILE: src/core/update/updateSlidesOffset.mjs
  function updateSlidesOffset (line 1) | function updateSlidesOffset() {

FILE: src/core/update/updateSlidesProgress.mjs
  function updateSlidesProgress (line 9) | function updateSlidesProgress(translate = (this && this.translate) || 0) {

FILE: src/modules/a11y/a11y.mjs
  function A11y (line 10) | function A11y({ swiper, extendParams, on }) {

FILE: src/modules/autoplay/autoplay.mjs
  function Autoplay (line 5) | function Autoplay({ swiper, extendParams, on, emit, params }) {

FILE: src/modules/controller/controller.mjs
  function Controller (line 4) | function Controller({ swiper, extendParams, on }) {

FILE: src/modules/effect-cards/effect-cards.mjs
  function EffectCards (line 7) | function EffectCards({ swiper, extendParams, on }) {

FILE: src/modules/effect-coverflow/effect-coverflow.mjs
  function EffectCoverflow (line 6) | function EffectCoverflow({ swiper, extendParams, on }) {

FILE: src/modules/effect-creative/effect-creative.mjs
  function EffectCreative (line 7) | function EffectCreative({ swiper, extendParams, on }) {

FILE: src/modules/effect-cube/effect-cube.mjs
  function EffectCube (line 4) | function EffectCube({ swiper, extendParams, on }) {

FILE: src/modules/effect-fade/effect-fade.mjs
  function EffectFade (line 6) | function EffectFade({ swiper, extendParams, on }) {

FILE: src/modules/effect-flip/effect-flip.mjs
  function EffectFlip (line 7) | function EffectFlip({ swiper, extendParams, on }) {

FILE: src/modules/free-mode/free-mode.mjs
  function freeMode (line 3) | function freeMode({ swiper, extendParams, emit, once }) {

FILE: src/modules/grid/grid.mjs
  function Grid (line 1) | function Grid({ swiper, extendParams, on }) {

FILE: src/modules/hash-navigation/hash-navigation.mjs
  function HashNavigation (line 4) | function HashNavigation({ swiper, extendParams, emit, on }) {

FILE: src/modules/history/history.mjs
  function History (line 3) | function History({ swiper, extendParams, on }) {

FILE: src/modules/keyboard/keyboard.mjs
  function Keyboard (line 5) | function Keyboard({ swiper, extendParams, on, emit }) {

FILE: src/modules/manipulation/manipulation.mjs
  function Manipulation (line 7) | function Manipulation({ swiper }) {

FILE: src/modules/manipulation/methods/addSlide.mjs
  function addSlide (line 1) | function addSlide(index, slides) {

FILE: src/modules/manipulation/methods/appendSlide.mjs
  function appendSlide (line 3) | function appendSlide(slides) {

FILE: src/modules/manipulation/methods/prependSlide.mjs
  function prependSlide (line 3) | function prependSlide(slides) {

FILE: src/modules/manipulation/methods/removeAllSlides.mjs
  function removeAllSlides (line 1) | function removeAllSlides() {

FILE: src/modules/manipulation/methods/removeSlide.mjs
  function removeSlide (line 1) | function removeSlide(slidesIndexes) {

FILE: src/modules/mousewheel/mousewheel.mjs
  function Mousewheel (line 5) | function Mousewheel({ swiper, extendParams, on, emit }) {

FILE: src/modules/navigation/navigation.mjs
  function Navigation (line 6) | function Navigation({ swiper, extendParams, on, emit }) {

FILE: src/modules/pagination/pagination.mjs
  function Pagination (line 11) | function Pagination({ swiper, extendParams, on, emit }) {

FILE: src/modules/parallax/parallax.mjs
  function Parallax (line 3) | function Parallax({ swiper, extendParams, on }) {

FILE: src/modules/scrollbar/scrollbar.mjs
  function Scrollbar (line 7) | function Scrollbar({ swiper, extendParams, on, emit }) {

FILE: src/modules/thumbs/thumbs.mjs
  function Thumb (line 4) | function Thumb({ swiper, extendParams, on }) {

FILE: src/modules/virtual/virtual.mjs
  function Virtual (line 9) | function Virtual({ swiper, extendParams, on, emit }) {

FILE: src/modules/zoom/zoom.mjs
  function Zoom (line 9) | function Zoom({ swiper, extendParams, on, emit }) {

FILE: src/react/get-children.mjs
  function isChildSwiperSlide (line 3) | function isChildSwiperSlide(child) {
  function processChildren (line 7) | function processChildren(c) {
  function getChildren (line 19) | function getChildren(c) {

FILE: src/react/swiper-slide.mjs
  function updateClasses (line 24) | function updateClasses(_s, el, classNames) {

FILE: src/react/swiper.mjs
  method _containerClasses (line 57) | _containerClasses(swiper, classes) {
  function renderSlides (line 185) | function renderSlides() {

FILE: src/react/use-isomorphic-layout-effect.mjs
  function useIsomorphicLayoutEffect (line 3) | function useIsomorphicLayoutEffect(callback, deps) {

FILE: src/react/virtual.mjs
  function renderVirtual (line 3) | function renderVirtual(swiper, slides, virtualData) {

FILE: src/shared/classes-to-selector.mjs
  function classesToSelector (line 1) | function classesToSelector(classes = '') {

FILE: src/shared/classes-to-tokens.mjs
  function classesToTokens (line 1) | function classesToTokens(classes = '') {

FILE: src/shared/create-element-if-not-defined.mjs
  function createElementIfNotDefined (line 3) | function createElementIfNotDefined(swiper, originalParams, params, check...

FILE: src/shared/create-shadow.mjs
  function createShadow (line 3) | function createShadow(suffix, slideEl, side) {

FILE: src/shared/effect-init.mjs
  function effectInit (line 1) | function effectInit(params) {

FILE: src/shared/effect-target.mjs
  function effectTarget (line 3) | function effectTarget(effectParams, slideEl) {

FILE: src/shared/effect-virtual-transition-end.mjs
  function effectVirtualTransitionEnd (line 3) | function effectVirtualTransitionEnd({

FILE: src/shared/get-browser.mjs
  function calcBrowser (line 6) | function calcBrowser() {
  function getBrowser (line 37) | function getBrowser() {

FILE: src/shared/get-device.mjs
  function calcDevice (line 6) | function calcDevice({ userAgent } = {}) {
  function getDevice (line 67) | function getDevice(overrides = {}) {

FILE: src/shared/get-support.mjs
  function calcSupport (line 5) | function calcSupport() {
  function getSupport (line 22) | function getSupport() {

FILE: src/shared/utils.mjs
  function deleteProps (line 4) | function deleteProps(obj) {
  function nextTick (line 19) | function nextTick(callback, delay = 0) {
  function now (line 22) | function now() {
  function getComputedStyle (line 25) | function getComputedStyle(el) {
  function getTranslate (line 40) | function getTranslate(el, axis = 'x') {
  function isObject (line 88) | function isObject(o) {
  function isNode (line 96) | function isNode(node) {
  function extend (line 103) | function extend(...args) {
  function setCSSProperty (line 138) | function setCSSProperty(el, varName, varValue) {
  function animateCSSModeScroll (line 142) | function animateCSSModeScroll({ swiper, targetPosition, side }) {
  function getSlideTransformEl (line 191) | function getSlideTransformEl(slideEl) {
  function findElementsInElements (line 199) | function findElementsInElements(elements = [], selector = '') {
  function elementChildren (line 206) | function elementChildren(element, selector = '') {
  function elementIsChildOfSlot (line 218) | function elementIsChildOfSlot(el, slot) {
  function elementIsChildOf (line 233) | function elementIsChildOf(el, parent) {
  function showWarning (line 246) | function showWarning(text) {
  function createElement (line 254) | function createElement(tag, classes = []) {
  function elementOffset (line 259) | function elementOffset(el) {
  function elementPrevAll (line 273) | function elementPrevAll(el, selector) {
  function elementNextAll (line 284) | function elementNextAll(el, selector) {
  function elementStyle (line 295) | function elementStyle(el, prop) {
  function elementIndex (line 299) | function elementIndex(el) {
  function elementParents (line 313) | function elementParents(el, selector) {
  function elementTransitionEnd (line 327) | function elementTransitionEnd(el, callback) {
  function elementOuterSize (line 338) | function elementOuterSize(el, size, includeMargins) {
  function makeElementsArray (line 357) | function makeElementsArray(el) {
  function getRotateFix (line 360) | function getRotateFix(swiper) {
  function setInnerHTML (line 369) | function setInnerHTML(el, html = '') {

FILE: src/swiper-element.d.ts
  type SwiperContainerEventMap (line 7) | interface SwiperContainerEventMap extends Omit<HTMLElementEventMap, 'cli...
  type SwiperContainer (line 13) | interface SwiperContainer extends HTMLElement {}
  type SwiperContainer (line 14) | interface SwiperContainer extends SwiperOptions {
  type SwiperSlide (line 42) | interface SwiperSlide extends HTMLElement {
  type HTMLElementTagNameMap (line 47) | interface HTMLElementTagNameMap {

FILE: src/swiper-element.mjs
  class DummyHTMLElement (line 17) | class DummyHTMLElement {}
  class SwiperContainer (line 37) | class SwiperContainer extends ClassToExtend {
    method constructor (line 38) | constructor() {
    method cssStyles (line 44) | cssStyles() {
    method cssLinks (line 51) | cssLinks() {
    method calcSlideSlots (line 55) | calcSlideSlots() {
    method render (line 82) | render() {
    method initialize (line 136) | initialize() {
    method connectedCallback (line 167) | connectedCallback() {
    method disconnectedCallback (line 183) | disconnectedCallback() {
    method updateSwiperOnPropChange (line 196) | updateSwiperOnPropChange(propName, propValue) {
    method attributeChangedCallback (line 226) | attributeChangedCallback(attr, prevValue, newValue) {
    method observedAttributes (line 234) | static get observedAttributes() {
  method get (line 252) | get() {
  method set (line 255) | set(value) {
  class SwiperSlide (line 264) | class SwiperSlide extends ClassToExtend {
    method constructor (line 265) | constructor() {
    method render (line 270) | render() {
    method initialize (line 283) | initialize() {
    method connectedCallback (line 287) | connectedCallback() {

FILE: src/swiper-react.d.ts
  type SwiperProps (line 5) | type SwiperProps = Omit<
  type SlideData (line 42) | interface SlideData {
  type SwiperSlideProps (line 49) | type SwiperSlideProps = Omit<React.HTMLAttributes<HTMLElement>, 'childre...
  type SwiperRef (line 86) | interface SwiperRef extends React.HTMLAttributes<HTMLElement> {

FILE: src/types/modules/a11y.d.ts
  type A11yMethods (line 1) | interface A11yMethods {}
  type A11yEvents (line 3) | interface A11yEvents {}
  type A11yOptions (line 5) | interface A11yOptions {

FILE: src/types/modules/autoplay.d.ts
  type AutoplayMethods (line 3) | interface AutoplayMethods {
  type AutoplayEvents (line 40) | interface AutoplayEvents {
  type AutoplayOptions (line 79) | interface AutoplayOptions {

FILE: src/types/modules/controller.d.ts
  type ControllerMethods (line 3) | interface ControllerMethods {
  type ControllerEvents (line 11) | interface ControllerEvents {}
  type ControllerOptions (line 13) | interface ControllerOptions {

FILE: src/types/modules/effect-cards.d.ts
  type CardsEffectMethods (line 1) | interface CardsEffectMethods {}
  type CardsEffectEvents (line 3) | interface CardsEffectEvents {}
  type CardsEffectOptions (line 5) | interface CardsEffectOptions {

FILE: src/types/modules/effect-coverflow.d.ts
  type CoverflowEffectMethods (line 1) | interface CoverflowEffectMethods {}
  type CoverflowEffectEvents (line 3) | interface CoverflowEffectEvents {}
  type CoverflowEffectOptions (line 5) | interface CoverflowEffectOptions {

FILE: src/types/modules/effect-creative.d.ts
  type CreativeEffectTransform (line 1) | interface CreativeEffectTransform {
  type CreativeEffectMethods (line 10) | interface CreativeEffectMethods {}
  type CreativeEffectEvents (line 12) | interface CreativeEffectEvents {}
  type CreativeEffectOptions (line 14) | interface CreativeEffectOptions {

FILE: src/types/modules/effect-cube.d.ts
  type CubeEffectMethods (line 1) | interface CubeEffectMethods {}
  type CubeEffectEvents (line 3) | interface CubeEffectEvents {}
  type CubeEffectOptions (line 5) | interface CubeEffectOptions {

FILE: src/types/modules/effect-fade.d.ts
  type FadeEffectMethods (line 1) | interface FadeEffectMethods {}
  type FadeEffectEvents (line 3) | interface FadeEffectEvents {}
  type FadeEffectOptions (line 5) | interface FadeEffectOptions {

FILE: src/types/modules/effect-flip.d.ts
  type FlipEffectMethods (line 1) | interface FlipEffectMethods {}
  type FlipEffectEvents (line 3) | interface FlipEffectEvents {}
  type FlipEffectOptions (line 5) | interface FlipEffectOptions {

FILE: src/types/modules/free-mode.d.ts
  type FreeModeMethods (line 1) | interface FreeModeMethods {
  type FreeModeEvents (line 6) | interface FreeModeEvents {}
  type FreeModeOptions (line 8) | interface FreeModeOptions {

FILE: src/types/modules/grid.d.ts
  type GridMethods (line 1) | interface GridMethods {}
  type GridEvents (line 3) | interface GridEvents {}
  type GridOptions (line 5) | interface GridOptions {

FILE: src/types/modules/hash-navigation.d.ts
  type HashNavigationMethods (line 3) | interface HashNavigationMethods {}
  type HashNavigationEvents (line 5) | interface HashNavigationEvents {
  type HashNavigationOptions (line 16) | interface HashNavigationOptions {

FILE: src/types/modules/history.d.ts
  type HistoryMethods (line 1) | interface HistoryMethods {}
  type HistoryEvents (line 3) | interface HistoryEvents {}
  type HistoryOptions (line 5) | interface HistoryOptions {

FILE: src/types/modules/keyboard.d.ts
  type KeyboardMethods (line 3) | interface KeyboardMethods {
  type KeyboardEvents (line 20) | interface KeyboardEvents {
  type KeyboardOptions (line 27) | interface KeyboardOptions {

FILE: src/types/modules/manipulation.d.ts
  type ManipulationMethods (line 1) | interface ManipulationMethods {
  type ManipulationEvents (line 68) | interface ManipulationEvents {}
  type ManipulationOptions (line 70) | interface ManipulationOptions {}

FILE: src/types/modules/mousewheel.d.ts
  type MousewheelMethods (line 4) | interface MousewheelMethods {
  type MousewheelEvents (line 21) | interface MousewheelEvents {
  type MousewheelOptions (line 28) | interface MousewheelOptions {

FILE: src/types/modules/navigation.d.ts
  type NavigationMethods (line 4) | interface NavigationMethods {
  type NavigationEvents (line 31) | interface NavigationEvents {
  type NavigationOptions (line 50) | interface NavigationOptions {

FILE: src/types/modules/pagination.d.ts
  type PaginationMethods (line 4) | interface PaginationMethods {
  type PaginationEvents (line 38) | interface PaginationEvents {
  type PaginationOptions (line 60) | interface PaginationOptions {

FILE: src/types/modules/parallax.d.ts
  type ParallaxMethods (line 1) | interface ParallaxMethods {}
  type ParallaxEvents (line 3) | interface ParallaxEvents {}
  type ParallaxOptions (line 5) | interface ParallaxOptions {

FILE: src/types/modules/scrollbar.d.ts
  type ScrollbarMethods (line 4) | interface ScrollbarMethods {
  type ScrollbarEvents (line 36) | interface ScrollbarEvents {
  type ScrollbarOptions (line 66) | interface ScrollbarOptions {

FILE: src/types/modules/thumbs.d.ts
  type ThumbsMethods (line 3) | interface ThumbsMethods {
  type ThumbsEvents (line 20) | interface ThumbsEvents {}
  type ThumbsOptions (line 22) | interface ThumbsOptions {

FILE: src/types/modules/virtual.d.ts
  type VirtualMethods (line 1) | interface VirtualMethods<T = any> {
  type VirtualEvents (line 60) | interface VirtualEvents {}
  type VirtualData (line 62) | interface VirtualData<T> {
  type VirtualOptions (line 81) | interface VirtualOptions<T = any> {

FILE: src/types/modules/zoom.d.ts
  type ZoomMethods (line 3) | interface ZoomMethods {
  type ZoomEvents (line 40) | interface ZoomEvents {
  type ZoomOptions (line 47) | interface ZoomOptions {

FILE: src/types/shared.d.ts
  type CSSSelector (line 3) | interface CSSSelector extends String {}
  type SwiperModule (line 5) | type SwiperModule = (options: {

FILE: src/types/swiper-class.d.ts
  type SwiperClass (line 28) | interface SwiperClass<Events> {
  type Swiper (line 41) | interface Swiper extends SwiperClass<SwiperEvents> {
  type Swiper (line 491) | interface Swiper extends ManipulationMethods {}
  class Swiper (line 493) | class Swiper implements Swiper {

FILE: src/types/swiper-events.d.ts
  type SwiperEvents (line 26) | interface SwiperEvents {
  type SwiperEvents (line 339) | interface SwiperEvents extends A11yEvents {}
  type SwiperEvents (line 340) | interface SwiperEvents extends AutoplayEvents {}
  type SwiperEvents (line 341) | interface SwiperEvents extends ControllerEvents {}
  type SwiperEvents (line 342) | interface SwiperEvents extends CoverflowEffectEvents {}
  type SwiperEvents (line 343) | interface SwiperEvents extends CubeEffectEvents {}
  type SwiperEvents (line 344) | interface SwiperEvents extends FadeEffectEvents {}
  type SwiperEvents (line 345) | interface SwiperEvents extends FlipEffectEvents {}
  type SwiperEvents (line 346) | interface SwiperEvents extends CreativeEffectEvents {}
  type SwiperEvents (line 347) | interface SwiperEvents extends CardsEffectEvents {}
  type SwiperEvents (line 348) | interface SwiperEvents extends HashNavigationEvents {}
  type SwiperEvents (line 349) | interface SwiperEvents extends HistoryEvents {}
  type SwiperEvents (line 350) | interface SwiperEvents extends KeyboardEvents {}
  type SwiperEvents (line 351) | interface SwiperEvents extends MousewheelEvents {}
  type SwiperEvents (line 352) | interface SwiperEvents extends NavigationEvents {}
  type SwiperEvents (line 353) | interface SwiperEvents extends PaginationEvents {}
  type SwiperEvents (line 354) | interface SwiperEvents extends ParallaxEvents {}
  type SwiperEvents (line 355) | interface SwiperEvents extends ScrollbarEvents {}
  type SwiperEvents (line 356) | interface SwiperEvents extends ThumbsEvents {}
  type SwiperEvents (line 357) | interface SwiperEvents extends VirtualEvents {}
  type SwiperEvents (line 358) | interface SwiperEvents extends ZoomEvents {}
  type SwiperEvents (line 359) | interface SwiperEvents extends FreeModeEvents {}

FILE: src/types/swiper-options.d.ts
  type SwiperOptions (line 27) | interface SwiperOptions {

FILE: src/vue/get-children.mjs
  function getChildren (line 1) | function getChildren(originalSlots = {}, slidesRef, oldSlidesRef) {

FILE: src/vue/swiper-slide.mjs
  method setup (line 29) | setup(props, { slots }) {

FILE: src/vue/swiper.mjs
  method setup (line 233) | setup(props, { slots: originalSlots, emit }) {

FILE: src/vue/virtual.mjs
  function renderVirtual (line 3) | function renderVirtual(swiperRef, slides, virtualData) {
Condensed preview — 309 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,270K chars).
[
  {
    "path": ".all-contributorsrc",
    "chars": 42420,
    "preview": "{\n  \"projectName\": \"swiper\",\n  \"projectOwner\": \"nolimits4web\",\n  \"repoType\": \"github\",\n  \"repoHost\": \"https://github.com"
  },
  {
    "path": ".browserslistrc",
    "chars": 408,
    "preview": "# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.\n\n# For addi"
  },
  {
    "path": ".editorconfig",
    "chars": 147,
    "preview": "root = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ni"
  },
  {
    "path": ".eslintignore",
    "chars": 81,
    "preview": "build\nplayground/index.html\nnode_modules\ndist\nsrc/swiper.js\nsrc/swiper-bundle.js\n"
  },
  {
    "path": ".eslintrc.cjs",
    "chars": 1700,
    "preview": "const rules = {\n  'no-nested-ternary': 'off',\n  'no-lonely-if': 'off',\n  'no-param-reassign': 'off',\n  'no-underscore-da"
  },
  {
    "path": ".gitattributes",
    "chars": 10,
    "preview": "* text=LF\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 1792,
    "preview": "# How to contribute\n\nSwiper loves to welcome your contributions. There are several ways to help out:\n\n- Create an [issue"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 63,
    "preview": "patreon: swiperjs\nopen_collective: swiper\ngithub: nolimits4web\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 299,
    "preview": "contact_links:\n  - name: 🙏 Open Collective\n    url: https://opencollective.com/swiper/\n    about: Love Swiper? Please co"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.yml",
    "chars": 1952,
    "preview": "name: \"\\U0001F680 New feature proposal\"\ndescription: Propose a new feature to be added to Swiper\nlabels: ['feature reque"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/swiper_core_issue.yml",
    "chars": 3166,
    "preview": "name: '🐞 Swiper Core Issue'\ndescription: Report an issue with Swiper\nlabels: []\nbody:\n  - type: markdown\n    attributes:"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/swiper_element_issue.yml",
    "chars": 3186,
    "preview": "name: '🐞 Swiper Element Issue'\ndescription: Report an issue with Swiper Element\nlabels: ['Element']\nbody:\n  - type: mark"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/swiper_react_issue.yml",
    "chars": 3188,
    "preview": "name: '🐞 Swiper React Issue'\ndescription: Create a report for Swiper React components\nlabels: 'React'\nbody:\n  - type: ma"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/vue_issue.yml",
    "chars": 3180,
    "preview": "name: 🐞 Swiper Vue Issue\ndescription: Create a report for Swiper Vue components\nlabels: 'Vue'\nbody:\n  - type: markdown\n "
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 461,
    "preview": "Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. "
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 213,
    "preview": " - package-ecosystem: npm\n    directory: \"/\"\n    schedule:\n      interval: monthly\n    versioning-strategy: increase\n\n  "
  },
  {
    "path": ".github/lock.yml",
    "chars": 108,
    "preview": "daysUntilLock: 240\nexemptLabels:\n  - feature request\n  - in progress\nlockLabel: outdated\nlockComment: false\n"
  },
  {
    "path": ".github/stale.yml",
    "chars": 475,
    "preview": "daysUntilStale: 180\ndaysUntilClose: 60\nexemptLabels:\n  - feature request\n  - probably bug\n  - bug confirmed\n  - in progr"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 487,
    "preview": "name: Build\non:\n  push:\n    branches: [master, Swiper6, Swiper7, Swiper8]\n  pull_request:\n    branches: [master, Swiper6"
  },
  {
    "path": ".github/workflows/formatting.yml",
    "chars": 503,
    "preview": "name: Formatting\non:\n  push:\n    branches: [master, Swiper6, Swiper7, Swiper8]\n  pull_request:\n    branches: [master, Sw"
  },
  {
    "path": ".github/workflows/issue-close-require.yml",
    "chars": 355,
    "preview": "name: Issue Close Require\n\non:\n  schedule:\n    - cron: '0 0 * * *'\n\njobs:\n  close-issues:\n    runs-on: ubuntu-latest\n   "
  },
  {
    "path": ".github/workflows/issue-labeled.yml",
    "chars": 765,
    "preview": "name: Issue Labeled\n\non:\n  issues:\n    types: [labeled]\n\njobs:\n  reply-labeled:\n    runs-on: ubuntu-latest\n    steps:\n  "
  },
  {
    "path": ".github/workflows/lint.yml",
    "chars": 481,
    "preview": "name: Lint\non:\n  push:\n    branches: [master, Swiper6, Swiper7, Swiper8]\n  pull_request:\n    branches: [master, Swiper6,"
  },
  {
    "path": ".gitignore",
    "chars": 252,
    "preview": ".DS_Store\nnode_modules\ncustom\n*.log\n\n.versions\n.idea\ndist\n\n\n# local env files\n.env.local\n.env.development.local\n.env.tes"
  },
  {
    "path": ".lintstagedrc",
    "chars": 101,
    "preview": "{\n  \"*.+(js)\": [\n    \"eslint\"\n  ],\n  \"*.+(js|json|scss|css|less|ts)\": [\n    \"prettier --write\"\n  ]\n}\n"
  },
  {
    "path": ".npmignore",
    "chars": 57,
    "preview": ".git\n.github\nbuild\ndemos\nnode_modules\nplayground\nscripts\n"
  },
  {
    "path": ".prettierignore",
    "chars": 92,
    "preview": "build\nnode_modules\ndist\n.nova\npackage.json\n.claude\n.agents\n.cursor\n.gemini\n.codex\n.opencode\n"
  },
  {
    "path": ".prettierrc",
    "chars": 410,
    "preview": "{\n  \"arrowParens\": \"always\",\n  \"bracketSpacing\": true,\n  \"htmlWhitespaceSensitivity\": \"css\",\n  \"insertPragma\": false,\n  "
  },
  {
    "path": ".vscode/settings.json",
    "chars": 114,
    "preview": "{\n  \"editor.formatOnSave\": true,\n  \"eslint.enable\": true,\n  \"editor.defaultFormatter\": \"esbenp.prettier-vscode\"\n}\n"
  },
  {
    "path": "BACKERS.md",
    "chars": 59883,
    "preview": "# Backers\n\nSupport Swiper development by [pledging on Open Collective](http://opencollective.com/swiper)!\n\n<!-- SPONSORS"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 217321,
    "preview": "# Changelog\n\n# [12.1.1](https://github.com/nolimits4web/Swiper/compare/v12.1.0...v12.1.1) (2026-02-13)\n\n### Bug Fixes\n\n-"
  },
  {
    "path": "CODE_CONTRIBUTORS.md",
    "chars": 55394,
    "preview": "## Code Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3375,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1801,
    "preview": "# How to contribute\n\nSwiper loves to welcome your contributions. There are several ways to help out:\n\n* Create an [issue"
  },
  {
    "path": "LICENSE",
    "chars": 1087,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2019 Vladimir Kharlampidi\n\nPermission is hereby granted, free of charge, to any per"
  },
  {
    "path": "README.md",
    "chars": 51688,
    "preview": "<p align=\"center\">\n  <img src=\"https://swiperjs.com/images/share-banner.jpg\"/>\n</p>\n\n<p align=\"center\">\n  <a href=\"https"
  },
  {
    "path": "TODO.md",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "babel.config.json",
    "chars": 101,
    "preview": "{\n  \"presets\": [\"@babel/preset-react\", [\"@babel/preset-env\", { \"modules\": false, \"loose\": true }]]\n}\n"
  },
  {
    "path": "demos/010-default.html",
    "chars": 1747,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n</head>\n\n<body>\n  <!-- Sw"
  },
  {
    "path": "demos/020-navigation.html",
    "chars": 2078,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/030-pagination.html",
    "chars": 1994,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/040-pagination-dynamic.html",
    "chars": 2024,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/050-pagination-progress.html",
    "chars": 2135,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n</head>\n\n<body>\n  <!-- Sw"
  },
  {
    "path": "demos/060-pagination-fraction.html",
    "chars": 2132,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n</head>\n\n<body>\n  <!-- Sw"
  },
  {
    "path": "demos/070-pagination-custom.html",
    "chars": 2480,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/080-scrollbar.html",
    "chars": 2010,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/090-vertical.html",
    "chars": 2048,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/100-space-between.html",
    "chars": 2043,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/110-slides-per-view.html",
    "chars": 2067,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/120-slides-per-view-auto.html",
    "chars": 2208,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/125-snap-to-slide-edge.html",
    "chars": 3243,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo - Snap To Slide Edge</title>\n  <m"
  },
  {
    "path": "demos/130-centered.html",
    "chars": 2093,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/140-centered-auto.html",
    "chars": 2236,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/145-css-mode.html",
    "chars": 2277,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/150-freemode.html",
    "chars": 2089,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/160-scroll-container.html",
    "chars": 8145,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/170-slides-per-column.html",
    "chars": 2196,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/180-nested.html",
    "chars": 2557,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/190-grab-cursor.html",
    "chars": 2119,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/200-infinite-loop.html",
    "chars": 2353,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/210-infinite-loop-with-slides-per-group.html",
    "chars": 2363,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/211-slides-per-group-skip.html",
    "chars": 3364,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/220-effect-fade.html",
    "chars": 1928,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/230-effect-cube.html",
    "chars": 1868,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/240-effect-coverflow.html",
    "chars": 2284,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/250-effect-flip.html",
    "chars": 1958,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/255-effect-cards.html",
    "chars": 2532,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/257-effect-creative.html",
    "chars": 6949,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/260-keyboard-control.html",
    "chars": 2385,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/270-mousewheel-control.html",
    "chars": 2268,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\" />\n  <title>Swiper demo</title>\n  <meta name=\"viewport\""
  },
  {
    "path": "demos/280-autoplay.html",
    "chars": 2374,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/290-dynamic-slides.html",
    "chars": 3667,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/300-thumbs-gallery.html",
    "chars": 3819,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/310-thumbs-gallery-loop.html",
    "chars": 3955,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/320-multiple-swipers.html",
    "chars": 3656,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/330-hash-navigation.html",
    "chars": 2510,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/340-history.html",
    "chars": 2380,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Swiper Playground</title>\n  <meta name=\"viewp"
  },
  {
    "path": "demos/350-rtl.html",
    "chars": 2250,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/360-parallax.html",
    "chars": 4475,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/370-lazy-load-images.html",
    "chars": 3008,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/380-responsive-breakpoints.html",
    "chars": 2365,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/381-ratio-breakpoints.html",
    "chars": 2462,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/390-autoheight.html",
    "chars": 2010,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/400-zoom.html",
    "chars": 1790,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/410-virtual-slides.html",
    "chars": 3549,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/420-custom-plugin.html",
    "chars": 4259,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/430-slideable-menu.html",
    "chars": 4840,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/440-change-direction.html",
    "chars": 2618,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n  <meta name=\"viewport\" c"
  },
  {
    "path": "demos/450-watchSlidesVisibility.html",
    "chars": 1722,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demo</title>\n</head>\n\n<body>\n  <!-- Sw"
  },
  {
    "path": "demos/index.html",
    "chars": 3833,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>Swiper demos</title>\n  <meta name=\"viewport\" "
  },
  {
    "path": "demos/vite.config.js",
    "chars": 173,
    "preview": "import path from 'path';\n\nexport default {\n  server: {\n    host: '0.0.0.0',\n  },\n  resolve: {\n    alias: {\n      swiper:"
  },
  {
    "path": "package.json",
    "chars": 3496,
    "preview": "{\n  \"name\": \"swiper-src\",\n  \"version\": \"12.1.2\",\n  \"description\": \"Most modern mobile touch slider and framework with ha"
  },
  {
    "path": "playground/core/index.html",
    "chars": 1850,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"UTF-8\" />\n  <title>Swiper Playground</title>\n  <meta name=\"vie"
  },
  {
    "path": "playground/core/vite.config.js",
    "chars": 176,
    "preview": "import path from 'path';\n\nexport default {\n  server: {\n    host: '0.0.0.0',\n  },\n  resolve: {\n    alias: {\n      swiper:"
  },
  {
    "path": "playground/element/index.html",
    "chars": 970,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"UTF-8\" />\n  <title>Swiper Playground</title>\n  <meta name=\"vie"
  },
  {
    "path": "playground/element/vite.config.js",
    "chars": 434,
    "preview": "import path from 'path';\n\nexport default {\n  server: {\n    host: '0.0.0.0',\n  },\n  resolve: {\n    alias: {\n      'swiper"
  },
  {
    "path": "playground/react/App.jsx",
    "chars": 974,
    "preview": "/* eslint-disable no-restricted-globals */\nimport React from 'react';\n// eslint-disable-next-line\nimport { A11y, Navigat"
  },
  {
    "path": "playground/react/index.html",
    "chars": 614,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, i"
  },
  {
    "path": "playground/react/main.js",
    "chars": 291,
    "preview": "import React from 'react';\nimport { createRoot } from 'react-dom/client';\n// eslint-disable-next-line\nimport 'swiper/swi"
  },
  {
    "path": "playground/react/vite.config.js",
    "chars": 138,
    "preview": "import path from 'path';\n\nexport default {\n  resolve: {\n    alias: {\n      swiper: path.resolve(__dirname, '../../dist/'"
  },
  {
    "path": "playground/vue/App.vue",
    "chars": 1241,
    "preview": "<template>\n  <main>\n    <swiper\n      @swiper=\"onSwiper\"\n      :slidesPerView=\"3\"\n      :spaceBetween=\"50\"\n      navigat"
  },
  {
    "path": "playground/vue/index.html",
    "chars": 612,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, i"
  },
  {
    "path": "playground/vue/innerComp.vue",
    "chars": 442,
    "preview": "<template>\n  test - {{ swiperSlide.isActive }} - {{ swiperSlide.isNext }}\n  <button @click=\"swiper.slideNext()\">Next</bu"
  },
  {
    "path": "playground/vue/main.js",
    "chars": 174,
    "preview": "// eslint-disable-next-line\nimport 'swiper/swiper-bundle.css';\nimport { createApp } from 'vue';\nimport App from './App.v"
  },
  {
    "path": "playground/vue/vite.config.js",
    "chars": 196,
    "preview": "import path from 'path';\nimport vue from '@vitejs/plugin-vue';\n\nexport default {\n  plugins: [vue()],\n  resolve: {\n    al"
  },
  {
    "path": "scripts/build-config.js",
    "chars": 554,
    "preview": "import { parseSwiperBuildModulesEnv } from './utils/helper.js';\n\nconst envBuildModules = parseSwiperBuildModulesEnv();\n\n"
  },
  {
    "path": "scripts/build-modules.js",
    "chars": 8359,
    "preview": "/* eslint-disable no-shadow */\nimport fs from 'fs';\nimport { rollup } from 'rollup';\nimport { nodeResolve } from '@rollu"
  },
  {
    "path": "scripts/build-sponsors.js",
    "chars": 4116,
    "preview": "import fs from 'fs';\nimport path from 'path';\nimport https from 'https';\nimport * as url from 'url';\n\nconst __dirname = "
  },
  {
    "path": "scripts/build-styles.js",
    "chars": 4037,
    "preview": "import fs from 'fs-extra';\nimport path from 'path';\nimport { globby } from 'globby';\nimport * as url from 'url';\nimport "
  },
  {
    "path": "scripts/build-types.js",
    "chars": 4621,
    "preview": "import path from 'path';\nimport { globby } from 'globby';\nimport elapsed from 'elapsed-time-logger';\nimport chalk from '"
  },
  {
    "path": "scripts/build.js",
    "chars": 1179,
    "preview": "import chalk from 'chalk';\nimport fs from 'fs-extra';\nimport elapsed from 'elapsed-time-logger';\nimport buildTypes from "
  },
  {
    "path": "scripts/release.js",
    "chars": 2821,
    "preview": "import exec from 'exec-sh';\nimport inquirer from 'inquirer';\nimport fs from 'fs';\nimport path from 'path';\nimport { rimr"
  },
  {
    "path": "scripts/utils/autoprefixer.js",
    "chars": 496,
    "preview": "import postcss from 'postcss';\nimport autoprefixer from 'autoprefixer';\n\nexport default async (content, { from = undefin"
  },
  {
    "path": "scripts/utils/banner.js",
    "chars": 916,
    "preview": "import fs from 'fs-extra';\n\nconst pkg = JSON.parse(fs.readFileSync(new URL('../../package.json', import.meta.url)));\ncon"
  },
  {
    "path": "scripts/utils/get-element-styles.js",
    "chars": 5439,
    "preview": "import fs from 'fs';\nimport path from 'path';\nimport * as url from 'url';\nimport autoprefixer from './autoprefixer.js';\n"
  },
  {
    "path": "scripts/utils/helper.js",
    "chars": 578,
    "preview": "export function capitalizeString(str) {\n  return str.replace(/(?:^|-)([a-z])/g, (m, char) => char.toUpperCase());\n}\n\n/**"
  },
  {
    "path": "scripts/utils/isProd.js",
    "chars": 147,
    "preview": "function isProd() {\n  const argv = process.argv.slice(2).map((v) => v.toLowerCase());\n  return argv.includes('--prod');\n"
  },
  {
    "path": "scripts/utils/less.js",
    "chars": 472,
    "preview": "import less from 'less';\nimport path from 'path';\nimport * as url from 'url';\n\nconst __dirname = url.fileURLToPath(new U"
  },
  {
    "path": "scripts/utils/minify-css.js",
    "chars": 621,
    "preview": "import postcss from 'postcss';\nimport cssnano from 'cssnano';\n\nexport default (content) => {\n  return new Promise((resol"
  },
  {
    "path": "scripts/utils/minify.js",
    "chars": 874,
    "preview": "import { minify } from 'terser';\nimport fs from 'fs';\nimport { banner } from './banner.js';\n\nexport default async (fileN"
  },
  {
    "path": "scripts/utils/output-dir.js",
    "chars": 33,
    "preview": "export const outputDir = 'dist';\n"
  },
  {
    "path": "scripts/utils/unwrap-css.js",
    "chars": 625,
    "preview": "import postcss from 'postcss';\nimport nested from 'postcss-nested';\n\nexport default (content) => {\n  return new Promise("
  },
  {
    "path": "scripts/watch.js",
    "chars": 1126,
    "preview": "import fs from 'fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport * as url from 'url';\nimport buildTypes f"
  },
  {
    "path": "src/components-shared/get-changed-params.mjs",
    "chars": 1499,
    "preview": "import { paramsList } from './params-list.mjs';\nimport { isObject } from './utils.mjs';\n\nfunction getChangedParams(swipe"
  },
  {
    "path": "src/components-shared/get-element-params.mjs",
    "chars": 3731,
    "preview": "import { attrToProp, extend, isObject } from './utils.mjs';\nimport { paramsList } from './params-list.mjs';\nimport defau"
  },
  {
    "path": "src/components-shared/get-params.mjs",
    "chars": 1461,
    "preview": "import { isObject, extend } from './utils.mjs';\nimport { paramsList } from './params-list.mjs';\nimport defaults from '.."
  },
  {
    "path": "src/components-shared/mount-swiper.mjs",
    "chars": 806,
    "preview": "import { needsNavigation, needsPagination, needsScrollbar } from './utils.mjs';\n\nfunction mountSwiper({ el, nextEl, prev"
  },
  {
    "path": "src/components-shared/params-list.mjs",
    "chars": 2409,
    "preview": "/* underscore in name -> watch for changes */\nconst paramsList = [\n  'eventsPrefix',\n  'injectStyles',\n  'injectStylesUr"
  },
  {
    "path": "src/components-shared/update-on-virtual-data.mjs",
    "chars": 449,
    "preview": "export const updateOnVirtualData = (swiper) => {\n  if (\n    !swiper ||\n    swiper.destroyed ||\n    !swiper.params.virtua"
  },
  {
    "path": "src/components-shared/update-swiper.mjs",
    "chars": 6858,
    "preview": "import { setInnerHTML } from '../shared/utils.mjs';\nimport { isObject } from './utils.mjs';\n\nfunction updateSwiper({\n  s"
  },
  {
    "path": "src/components-shared/utils.mjs",
    "chars": 1849,
    "preview": "function isObject(o) {\n  return (\n    typeof o === 'object' &&\n    o !== null &&\n    o.constructor &&\n    Object.prototy"
  },
  {
    "path": "src/copy/LICENSE",
    "chars": 1087,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2019 Vladimir Kharlampidi\n\nPermission is hereby granted, free of charge, to any per"
  },
  {
    "path": "src/copy/README.md",
    "chars": 570,
    "preview": "Swiper\n==========\n\nSwiper - is the free and most modern mobile touch slider with hardware accelerated transitions and am"
  },
  {
    "path": "src/copy/package.json",
    "chars": 5402,
    "preview": "{\n  \"name\": \"swiper\",\n  \"version\": \"12.1.2\",\n  \"description\": \"Most modern mobile touch slider and framework with hardwa"
  },
  {
    "path": "src/core/breakpoints/getBreakpoint.mjs",
    "chars": 1064,
    "preview": "import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl"
  },
  {
    "path": "src/core/breakpoints/index.mjs",
    "chars": 148,
    "preview": "import setBreakpoint from './setBreakpoint.mjs';\nimport getBreakpoint from './getBreakpoint.mjs';\n\nexport default { setB"
  },
  {
    "path": "src/core/breakpoints/setBreakpoint.mjs",
    "chars": 3959,
    "preview": "import { getDocument } from 'ssr-window';\nimport { extend } from '../../shared/utils.mjs';\n\nconst isGridEnabled = (swipe"
  },
  {
    "path": "src/core/check-overflow/index.mjs",
    "chars": 893,
    "preview": "function checkOverflow() {\n  const swiper = this;\n  const { isLocked: wasLocked, params } = swiper;\n  const { slidesOffs"
  },
  {
    "path": "src/core/classes/addClasses.mjs",
    "chars": 1262,
    "preview": "function prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach((item) => {\n    if (typeof item"
  },
  {
    "path": "src/core/classes/index.mjs",
    "chars": 139,
    "preview": "import addClasses from './addClasses.mjs';\nimport removeClasses from './removeClasses.mjs';\n\nexport default { addClasses"
  },
  {
    "path": "src/core/classes/removeClasses.mjs",
    "chars": 221,
    "preview": "export default function removeClasses() {\n  const swiper = this;\n  const { el, classNames } = swiper;\n  if (!el || typeo"
  },
  {
    "path": "src/core/core.mjs",
    "chars": 20277,
    "preview": "/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport {\n  extend,\n  deleteProps,\n  crea"
  },
  {
    "path": "src/core/defaults.mjs",
    "chars": 3094,
    "preview": "export default {\n  init: true,\n  direction: 'horizontal',\n  oneWayMovement: false,\n  swiperElementNodeName: 'SWIPER-CONT"
  },
  {
    "path": "src/core/events/index.mjs",
    "chars": 2899,
    "preview": "import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.mjs';\nimport onTouchMove from './onT"
  },
  {
    "path": "src/core/events/onClick.mjs",
    "chars": 321,
    "preview": "export default function onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n  if (!swiper.allowClick) {\n "
  },
  {
    "path": "src/core/events/onDocumentTouchStart.mjs",
    "chars": 262,
    "preview": "export default function onDocumentTouchStart() {\n  const swiper = this;\n  if (swiper.documentTouchHandlerProceeded) retu"
  },
  {
    "path": "src/core/events/onLoad.mjs",
    "chars": 335,
    "preview": "import { processLazyPreloader } from '../../shared/process-lazy-preloader.mjs';\n\nexport default function onLoad(e) {\n  c"
  },
  {
    "path": "src/core/events/onResize.mjs",
    "chars": 1640,
    "preview": "export default function onResize() {\n  const swiper = this;\n\n  const { params, el } = swiper;\n\n  if (el && el.offsetWidt"
  },
  {
    "path": "src/core/events/onScroll.mjs",
    "chars": 889,
    "preview": "export default function onScroll() {\n  const swiper = this;\n  const { wrapperEl, rtlTranslate, enabled } = swiper;\n  if "
  },
  {
    "path": "src/core/events/onTouchEnd.mjs",
    "chars": 5803,
    "preview": "import { now, nextTick } from '../../shared/utils.mjs';\n\nexport default function onTouchEnd(event) {\n  const swiper = th"
  },
  {
    "path": "src/core/events/onTouchMove.mjs",
    "chars": 10591,
    "preview": "import { getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.mjs';\n\nexport default function onTouch"
  },
  {
    "path": "src/core/events/onTouchStart.mjs",
    "chars": 4917,
    "preview": "import { getWindow, getDocument } from 'ssr-window';\nimport { now, elementIsChildOf } from '../../shared/utils.mjs';\n\n//"
  },
  {
    "path": "src/core/events-emitter.mjs",
    "chars": 3333,
    "preview": "/* eslint-disable no-underscore-dangle */\n\nexport default {\n  on(events, handler, priority) {\n    const self = this;\n   "
  },
  {
    "path": "src/core/grab-cursor/index.mjs",
    "chars": 159,
    "preview": "import setGrabCursor from './setGrabCursor.mjs';\nimport unsetGrabCursor from './unsetGrabCursor.mjs';\n\nexport default {\n"
  },
  {
    "path": "src/core/grab-cursor/setGrabCursor.mjs",
    "chars": 568,
    "preview": "export default function setGrabCursor(moving) {\n  const swiper = this;\n  if (\n    !swiper.params.simulateTouch ||\n    (s"
  },
  {
    "path": "src/core/grab-cursor/unsetGrabCursor.mjs",
    "chars": 449,
    "preview": "export default function unsetGrabCursor() {\n  const swiper = this;\n  if ((swiper.params.watchOverflow && swiper.isLocked"
  },
  {
    "path": "src/core/loop/index.mjs",
    "chars": 186,
    "preview": "import loopCreate from './loopCreate.mjs';\nimport loopFix from './loopFix.mjs';\nimport loopDestroy from './loopDestroy.m"
  },
  {
    "path": "src/core/loop/loopCreate.mjs",
    "chars": 2790,
    "preview": "import { createElement, elementChildren, showWarning } from '../../shared/utils.mjs';\n\nexport default function loopCreat"
  },
  {
    "path": "src/core/loop/loopDestroy.mjs",
    "chars": 746,
    "preview": "export default function loopDestroy() {\n  const swiper = this;\n  const { params, slidesEl } = swiper;\n  if (!params.loop"
  },
  {
    "path": "src/core/loop/loopFix.mjs",
    "chars": 9492,
    "preview": "import { showWarning } from '../../shared/utils.mjs';\n\nexport default function loopFix({\n  slideRealIndex,\n  slideTo = t"
  },
  {
    "path": "src/core/moduleExtendParams.mjs",
    "chars": 1385,
    "preview": "import { extend } from '../shared/utils.mjs';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n  "
  },
  {
    "path": "src/core/modules/observer/observer.mjs",
    "chars": 2172,
    "preview": "import { getWindow } from 'ssr-window';\nimport { elementParents } from '../../../shared/utils.mjs';\n\nexport default func"
  },
  {
    "path": "src/core/modules/resize/resize.mjs",
    "chars": 2064,
    "preview": "import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n  const window = getWind"
  },
  {
    "path": "src/core/slide/index.mjs",
    "chars": 447,
    "preview": "import slideTo from './slideTo.mjs';\nimport slideToLoop from './slideToLoop.mjs';\nimport slideNext from './slideNext.mjs"
  },
  {
    "path": "src/core/slide/slideNext.mjs",
    "chars": 1331,
    "preview": "/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks = true, internal) {\n  const swi"
  },
  {
    "path": "src/core/slide/slidePrev.mjs",
    "chars": 2539,
    "preview": "/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks = true, internal) {\n  const swi"
  },
  {
    "path": "src/core/slide/slideReset.mjs",
    "chars": 318,
    "preview": "/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks = true, internal) {\n  const sw"
  },
  {
    "path": "src/core/slide/slideTo.mjs",
    "chars": 5682,
    "preview": "import { getBrowser } from '../../shared/get-browser.mjs';\nimport { animateCSSModeScroll } from '../../shared/utils.mjs'"
  },
  {
    "path": "src/core/slide/slideToClickedSlide.mjs",
    "chars": 1346,
    "preview": "import { elementChildren, nextTick } from '../../shared/utils.mjs';\n\nexport default function slideToClickedSlide() {\n  c"
  },
  {
    "path": "src/core/slide/slideToClosest.mjs",
    "chars": 1482,
    "preview": "/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks = true, internal, threshol"
  },
  {
    "path": "src/core/slide/slideToLoop.mjs",
    "chars": 3006,
    "preview": "export default function slideToLoop(index = 0, speed, runCallbacks = true, internal) {\n  if (typeof index === 'string') "
  },
  {
    "path": "src/core/transition/index.mjs",
    "chars": 225,
    "preview": "import setTransition from './setTransition.mjs';\nimport transitionStart from './transitionStart.mjs';\nimport transitionE"
  },
  {
    "path": "src/core/transition/setTransition.mjs",
    "chars": 322,
    "preview": "export default function setTransition(duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n"
  },
  {
    "path": "src/core/transition/transitionEmit.mjs",
    "chars": 692,
    "preview": "export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n  const { activeIndex, previousIndex"
  },
  {
    "path": "src/core/transition/transitionEnd.mjs",
    "chars": 332,
    "preview": "import transitionEmit from './transitionEmit.mjs';\n\nexport default function transitionEnd(runCallbacks = true, direction"
  },
  {
    "path": "src/core/transition/transitionStart.mjs",
    "chars": 343,
    "preview": "import transitionEmit from './transitionEmit.mjs';\n\nexport default function transitionStart(runCallbacks = true, directi"
  },
  {
    "path": "src/core/translate/getTranslate.mjs",
    "chars": 559,
    "preview": "import { getTranslate } from '../../shared/utils.mjs';\n\nexport default function getSwiperTranslate(axis = this.isHorizon"
  },
  {
    "path": "src/core/translate/index.mjs",
    "chars": 333,
    "preview": "import getTranslate from './getTranslate.mjs';\nimport setTranslate from './setTranslate.mjs';\nimport minTranslate from '"
  },
  {
    "path": "src/core/translate/maxTranslate.mjs",
    "chars": 94,
    "preview": "export default function maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n"
  },
  {
    "path": "src/core/translate/minTranslate.mjs",
    "chars": 71,
    "preview": "export default function minTranslate() {\n  return -this.snapGrid[0];\n}\n"
  },
  {
    "path": "src/core/translate/setTranslate.mjs",
    "chars": 1274,
    "preview": "export default function setTranslate(translate, byController) {\n  const swiper = this;\n  const { rtlTranslate: rtl, para"
  },
  {
    "path": "src/core/translate/translateTo.mjs",
    "chars": 2460,
    "preview": "import { animateCSSModeScroll } from '../../shared/utils.mjs';\n\nexport default function translateTo(\n  translate = 0,\n  "
  },
  {
    "path": "src/core/update/index.mjs",
    "chars": 696,
    "preview": "import updateSize from './updateSize.mjs';\nimport updateSlides from './updateSlides.mjs';\nimport updateAutoHeight from '"
  },
  {
    "path": "src/core/update/updateActiveIndex.mjs",
    "chars": 4015,
    "preview": "import { preload } from '../../shared/process-lazy-preloader.mjs';\n\nexport function getActiveIndexByTranslate(swiper) {\n"
  },
  {
    "path": "src/core/update/updateAutoHeight.mjs",
    "chars": 1485,
    "preview": "export default function updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = "
  },
  {
    "path": "src/core/update/updateClickedSlide.mjs",
    "chars": 1261,
    "preview": "export default function updateClickedSlide(el, path) {\n  const swiper = this;\n  const params = swiper.params;\n  let slid"
  },
  {
    "path": "src/core/update/updateProgress.mjs",
    "chars": 2220,
    "preview": "export default function updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n   "
  },
  {
    "path": "src/core/update/updateSize.mjs",
    "chars": 1089,
    "preview": "import { elementStyle } from '../../shared/utils.mjs';\n\nexport default function updateSize() {\n  const swiper = this;\n  "
  },
  {
    "path": "src/core/update/updateSlides.mjs",
    "chars": 13644,
    "preview": "import {\n  elementChildren,\n  elementOuterSize,\n  elementStyle,\n  setCSSProperty,\n} from '../../shared/utils.mjs';\n\nexpo"
  },
  {
    "path": "src/core/update/updateSlidesClasses.mjs",
    "chars": 2439,
    "preview": "import { elementChildren, elementNextAll, elementPrevAll } from '../../shared/utils.mjs';\n\nconst toggleSlideClasses = (s"
  },
  {
    "path": "src/core/update/updateSlidesOffset.mjs",
    "chars": 501,
    "preview": "export default function updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  // eslint-disabl"
  },
  {
    "path": "src/core/update/updateSlidesProgress.mjs",
    "chars": 2476,
    "preview": "const toggleSlideClasses = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className"
  },
  {
    "path": "src/modules/a11y/a11y.css",
    "chars": 143,
    "preview": "/* a11y */\n.swiper .swiper-notification {\n  position: absolute;\n  left: 0;\n  top: 0;\n  pointer-events: none;\n  opacity: "
  },
  {
    "path": "src/modules/a11y/a11y.mjs",
    "chars": 12855,
    "preview": "import { getDocument } from 'ssr-window';\nimport classesToSelector from '../../shared/classes-to-selector.mjs';\nimport {"
  },
  {
    "path": "src/modules/autoplay/autoplay.css",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/modules/autoplay/autoplay.mjs",
    "chars": 9273,
    "preview": "/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-windo"
  },
  {
    "path": "src/modules/controller/controller.css",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/modules/controller/controller.mjs",
    "chars": 6876,
    "preview": "/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { elementTransitionEnd, nextTick } from '../../shared/uti"
  },
  {
    "path": "src/modules/effect-cards/effect-cards.css",
    "chars": 178,
    "preview": ".swiper.swiper-cards {\n  overflow: visible;\n}\n.swiper-cards {\n  .swiper-slide {\n    transform-origin: center bottom;\n   "
  },
  {
    "path": "src/modules/effect-cards/effect-cards.mjs",
    "chars": 4730,
    "preview": "import createShadow from '../../shared/create-shadow.mjs';\nimport effectInit from '../../shared/effect-init.mjs';\nimport"
  }
]

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

About this extraction

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

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

Copied to clipboard!