diff --git a/build/assets/css/style.css b/build/assets/css/style.css new file mode 100644 index 0000000..dade4ae --- /dev/null +++ b/build/assets/css/style.css @@ -0,0 +1,4784 @@ +/* +! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com +*//* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; /* 1 */ + border-width: 0; /* 2 */ + border-style: solid; /* 2 */ + border-color: currentColor; /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +*/ + +html { + line-height: 1.5; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -moz-tab-size: 4; /* 3 */ + -o-tab-size: 4; + tab-size: 4; /* 3 */ + font-family: Standard, sans-serif; /* 4 */ + font-feature-settings: normal; /* 5 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; /* 1 */ + line-height: inherit; /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + font-weight: inherit; /* 1 */ + line-height: inherit; /* 1 */ + color: inherit; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; /* 1 */ + background-color: transparent; /* 2 */ + background-image: none; /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ +[hidden] { + display: none; +} + +*, ::before, ::after{ + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +::backdrop{ + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} +/** +* Non-graphical global CSS rules +*/ +html{ + min-height: 100vh; +} +.content{ + /* @apply overflow-hidden; */ +} +/** Mockup **/ +body{ +} +:root{ + --vh: 100vh; + --spacing-size: 0.625rem; +} +/* 10px */ +@media (min-width: 62rem){ +:root{ + --spacing-size: var(--grid-gutter) +} + } +/** +* Graphical global CSS rules +*/ +html{ +} +body{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.content{ + height: 100%; +} +body.has-menu-toggled #site-content-wrapper{ + position: fixed; + top: var(--header-height); + left: 0px; + width: 100%; +} +.skip-link{ + position: absolute; + top: -9999px; + left: -9999px; + display: block; + height: 0px; +} +.skip-link a:focus{ + position: fixed; + top: 1.25rem; + left: 1.25rem; + z-index: 50; + height: auto; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + padding: 1rem; + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} +@font-face { + font-family: 'Standard'; + src: url('../fonts/standard-book-webfont.woff2') format('woff2'), + url('../fonts/standard-book-webfont.woff') format('woff'), + url('../fonts/standard-book-webfont.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: 'Standard'; + src: url('../fonts/standard-book-italic-webfont.woff2') format('woff2'), + url('../fonts/standard-book-italic-webfont.woff') format('woff'), + url('../fonts/standard-book-italic-webfont.ttf') format('truetype'); + font-weight: normal; + font-style: italic; +} +@font-face { + font-family: 'Standard'; + src: url('../fonts/standard-bold-webfont.woff2') format('woff2'), + url('../fonts/standard-bold-webfont.woff') format('woff'), + url('../fonts/standard-bold-webfont.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} +@font-face { + font-family: 'Standard'; + src: url('../fonts/standard-bold-italic-webfont.woff2') format('woff2'), + url('../fonts/standard-bold-italic-webfont.woff') format('woff'), + url('../fonts/standard-bold-italic-webfont.ttf') format('truetype'); + font-weight: bold; + font-style: italic; +} +html{ + text-rendering: geometricPrecision; +} +h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{ + /* @apply font-bold; */ +} +h1{ + /* @apply font-bold; */ +} +h2{ + /* @apply font-bold; */ +} +h3{ + /* @apply font-bold; */ +} +h4{ + /* @apply font-bold; */ +} +h5{ + /* @apply font-bold; */ +} +h6{ + /* @apply font-bold; */ +} +p{ + margin-bottom: 0.9375rem; + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; +} +@media (min-width: 48rem){ + + p{ + margin-bottom: 3.125rem; + } +} +p a{ + text-decoration-line: underline; +} +:root{ + --grid-offset: 0; +} +@media (min-width: 48rem){ +:root{ + --grid-offset: 120px +} + } +:root{ + --grid-gutter: 0.46875rem; +} +/* 7.5px */ +@media (min-width: 80rem){ +:root{ + --grid-gutter: 0.625rem /* 10px */ +} + } +.grid-container, .block-container{ + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .grid-container, .block-container{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.grid-container, .block-container{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .grid-container, .block-container{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .grid-container, .block-container{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.grid-container :where(.grid-container), .grid-container :where(.block-container), .block-container :where(.grid-container), .block-container :where(.block-container){ + margin-left: 0px; + margin-left: 0; + margin-right: 0px; + margin-right: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +.columns{ + margin-left: calc(var(--grid-gutter) * -1); + margin-right: calc(var(--grid-gutter) * -1); + display: flex; + flex-wrap: wrap; +} +.column{ + padding-left: var(--grid-gutter); + padding-right: var(--grid-gutter); +} +:root{ + --spacing-lg: 3.125rem; +} +@layer utilties{ + .spacing-base{ + margin-bottom: 1.5625rem; + } + @media (min-width: 48rem){ + + .spacing-base{ + margin-bottom: 2.1875rem; + } + } + .spacing-lg{ + margin-bottom: 2.1875rem; + } + @media (min-width: 48rem){ + + .spacing-lg{ + margin-bottom: 4.5rem; + } + } + .spacing-xl{ + margin-bottom: 4.5rem; + } + @media (min-width: 80rem){ + + .spacing-xl{ + margin-bottom: 7.5rem; + } + } +} +.container{ + width: 100%; +} +@media (min-width: 40rem){ + + .container{ + max-width: 40rem; + } +} +@media (min-width: 48rem){ + + .container{ + max-width: 48rem; + } +} +@media (min-width: 62rem){ + + .container{ + max-width: 62rem; + } +} +@media (min-width: 80rem){ + + .container{ + max-width: 80rem; + } +} +@media (min-width: 120rem){ + + .container{ + max-width: 120rem; + } +} +@media (min-width: 128rem){ + + .container{ + max-width: 128rem; + } +} +.mt-12{ + margin-top: 3rem; +} +.mt-16{ + margin-top: 4rem; +} +.mt-20{ + margin-top: 5rem; +} +.mt-24{ + margin-top: 6rem; +} +.mt-32{ + margin-top: 8rem; +} +.mt-40{ + margin-top: 10rem; +} +.mb-16{ + margin-bottom: 4rem; +} +.mb-20{ + margin-bottom: 5rem; +} +.mb-24{ + margin-bottom: 6rem; +} +.mb-32{ + margin-bottom: 8rem; +} +.mb-40{ + margin-bottom: 10rem; +} +.block{ + display: block; +} +.hidden{ + display: none; +} +.w-full{ + width: 100%; +} +.grow{ + flex-grow: 1; +} +.resize{ + resize: both; +} +.overflow-x-clip{ + overflow-x: clip; +} +/* .h1{ + @apply text-3xl lg:text-4xl xl:text-5xl leading-snug; + } + + .h2{ + @apply text-2xl lg:text-3xl xl:text-4xl leading-snug; + } + + .h3{ + @apply text-2xl lg:text-4xl xl:text-3xl leading-snug; + } + + .h4{ + @apply text-lg lg:text-xl xl:text-2xl leading-snug; + } + + .h5{ + @apply text-lg xl:text-xl leading-snug; + } + + .h6{ + @apply text-base leading-snug; + } */ +.row{ + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .row{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.row{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .row{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +/* margin-right: calc(var(--grid-gutter) * 2); */ +@media (min-width: 120rem){ + .row{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.block-container{ + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .block-container{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.block-container{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .block-container{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .block-container{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.block-container :where(.block-container), .block-container :where(.grid-container){ + margin-left: 0px; + margin-left: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +.block-composition{ + margin-bottom: 2.1875rem; +} +@media (min-width: 48rem){ + + .block-composition{ + margin-bottom: 4.5rem; + } +} +.block-has-margin{ + margin-bottom: 2.1875rem; +} +@media (min-width: 48rem){ + + .block-has-margin{ + margin-bottom: 4.5rem; + } +} +.block-has-margin-sm{ + margin-bottom: 2.1875rem; +} +@media (min-width: 48rem){ + + .block-has-margin-sm{ + margin-bottom: 3.125rem; + } +} +.block-accordion__inner{ + border-top-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); +} +.block-accordion__inner:last-child:not(:first-child){ + border-bottom-width: 1px; +} +.block-accordion__inner > span{ + position: relative; + display: flex; + min-height: 2.25rem; + width: 100%; + cursor: pointer; + align-items: center; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 3rem; + padding-right: 1.25rem; + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 48rem){ + + .block-accordion__inner > span{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +@media (min-width: 80rem){ + + .block-accordion__inner > span{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; + padding-left: 4rem; + } +} +.block-accordion__inner > span::before{ + content: ''; + background-image: url("data:image/svg+xml,%3Csvg width='50' height='50' viewBox='0 0 50 50' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M37.5 26H12.5V24H37.5V26Z' fill='black'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 37.5L24 12.5L26 12.5L26 37.5L24 37.5Z' fill='black'/%3E%3C/svg%3E%0A"); + background-size: 100%; + transition: transform .2s ease; + position: absolute; + top: 0px; + left: 0px; + aspect-ratio: 1 / 1; + width: 2.25rem; + --tw-rotate: 0deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + background-position: center; + background-repeat: no-repeat; + } +@media (min-width: 80rem){ + + .block-accordion__inner > span::before{ + width: 3.125rem; + } +} +.block-accordion__inner > span:hover{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.block-accordion__inner > span:hover::before{ + background-image: url("data:image/svg+xml,%3Csvg width='50' height='50' viewBox='0 0 50 50' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M37.5 26H12.5V24H37.5V26Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 37.5L24 12.5L26 12.5L26 37.5L24 37.5Z' fill='white'/%3E%3C/svg%3E%0A"); + } +.block-accordion__inner > div{ + padding-top: 1.125rem; + padding-bottom: 2.1875rem; + padding-left: 3rem; + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 80rem){ + + .block-accordion__inner > div{ + padding-left: 4rem; + } +} +.block-accordion__inner > div > p{ + margin-bottom: 0px; + margin-bottom: 0; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.block-accordion__inner > div div[class^="block-"]{ + margin-bottom: 0px; + margin-bottom: 0; +} +.block-accordion__inner > div div[class^="block-"] p{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.block-accordion__inner.is-toggled{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.block-accordion__inner.is-toggled > span::before{ + background-image: url("data:image/svg+xml,%3Csvg width='50' height='50' viewBox='0 0 50 50' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M37.5 26H12.5V24H37.5V26Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 37.5L24 12.5L26 12.5L26 37.5L24 37.5Z' fill='white'/%3E%3C/svg%3E%0A"); + --tw-rotate: 45deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + /* background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M34.545 16.868 16.867 34.546l-1.414-1.414 17.678-17.678 1.414 1.414Z' fill='%23fff'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M33.13 34.546 15.454 16.868l1.414-1.414 17.678 17.678-1.414 1.414Z' fill='%23fff'/%3E%3C/svg%3E"); */ + } +.block-accordion__inner.is-toggled .block-link::before{ + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m34.711 24-6.778-7.32 1.467-1.36L38.363 25 29.4 34.68l-1.467-1.36L34.71 26H12v-2h22.711Z' fill='%23fff'/%3E%3C/svg%3E"); + } +.block-accordion__inner.is-toggled .block-link{ + --tw-border-opacity: 1; + border-color: rgb(83 90 90 / var(--tw-border-opacity)); +} +.block-accordion__inner.is-toggled .block-link:hover{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} +.block-accordion__inner.is-toggled .block-link:hover::before{ + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m34.711 24-6.778-7.32 1.467-1.36L38.363 25 29.4 34.68l-1.467-1.36L34.71 26H12v-2h22.711Z' fill='%23000'/%3E%3C/svg%3E"); + } +.block-accordion__inner.is-toggled .block-link[href]:not(:where( + + [href^="#"], + + [href^="/"]:not([href^="//"]),))::before{ + background-image: url("data:image/svg+xml,%3Csvg width='50' height='50' viewBox='0 0 50 50' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M31.0124 17.0725L21.043 16.6891L21.1198 14.6906L34.3016 15.1975L34.8086 28.3793L32.81 28.4562L32.4266 18.4867L16.3673 34.546L14.9531 33.1318L31.0124 17.0725Z' fill='white'/%3E%3C/svg%3E%0A"); + } +.block-accordion__inner.is-toggled .block-link[href]:not(:where( + + [href^="#"], + + [href^="/"]:not([href^="//"]),)):hover::before{ + background-image: url("data:image/svg+xml,%3Csvg width='50' height='50' viewBox='0 0 50 50' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M31.0124 17.0725L21.043 16.6891L21.1198 14.6906L34.3016 15.1975L34.8086 28.3793L32.81 28.4562L32.4266 18.4867L16.3673 34.546L14.9531 33.1318L31.0124 17.0725Z' fill='black'/%3E%3C/svg%3E%0A"); + } +.block-accordion--2cols{ + -moz-column-gap: calc(var(--grid-gutter) * 2); + column-gap: calc(var(--grid-gutter) * 2); +} +@media (min-width: 80rem){ + + .block-accordion--2cols{ + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} +/* @apply lg:w-1/2; */ +.block-accordion--sm .block-accordion__inner > span{ + padding-left: calc(2.25rem + 0.625rem); + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +.block-accordion--sm .block-accordion__inner > span::before{ + width: 2.25rem; + --tw-translate-y: -0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.block-accordion--sm .block-accordion__inner > div{ + padding-top: 1rem; + padding-bottom: 1rem; + padding-left: calc(2.25rem + 0.625rem); +} +.block-carousel{ + width: 100%; +} +.block-carousel .swiper .swiper-button-prev, .block-carousel .swiper .swiper-button-next{ + top: 0px; + margin-top: 0px; + margin-top: 0; + height: var(--carousel-img-height); + width: 50%; +} +.block-carousel .swiper .swiper-button-prev::after,.block-carousel .swiper .swiper-button-next::after{ + content: none; + } +.block-carousel .swiper .swiper-button-prev{ + left: 0px; +} +.block-carousel .swiper .swiper-button-next{ + right: 0px; +} +.block-carousel .swiper .swiper-slide{ + height: auto; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.block-carousel .swiper .swiper-slide__img{ + aspect-ratio: 3/2; + height: auto; +} +.block-carousel .swiper .swiper-slide__img img{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-carousel .swiper .swiper-slide__caption p{ + margin-top: 2.1875rem; + margin-bottom: 0px; + margin-bottom: 0; + height: 100%; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +.block-carousel .swiper .swiper-pagination{ + position: absolute; + top: calc(var(--carousel-img-height) + 0.625rem); + display: flex; + -moz-column-gap: 0.625rem; + column-gap: 0.625rem; +} +.block-carousel .swiper .swiper-pagination .swiper-pagination-bullet{ + margin: 0px; + margin: 0; + height: 1px; + width: 100%; + border-radius: 0px; + --tw-bg-opacity: 1; + background-color: rgb(163 173 173 / var(--tw-bg-opacity)); + opacity: 1; +} +.block-carousel .swiper .swiper-pagination .swiper-pagination-bullet-active{ + height: 3px; + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); +} +.block-events-list-row{ + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .block-events-list-row{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.block-events-list-row{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .block-events-list-row{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .block-events-list-row{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.block-events-list-row :where(.grid-container),.block-events-list-row :where(.block-container), .block-container :where(.block-events-list-row){ + margin-left: 0px; + margin-left: 0; + margin-right: 0px; + margin-right: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} + .block-container :where(.block-events-list-row){ + margin-left: 0px; + margin-left: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +.block-events-list-row__title{ + border-top-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.block-events-list-row__title h3{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; +} +@media (min-width: 48rem){ + + .block-events-list-row__title h3{ + font-size: 40px; + font-size: 2.5rem; + line-height: 50px; + line-height: 3.125rem; + } +} +@media (min-width: 80rem){ + + .block-events-list-row__title h3{ + font-size: 44px; + font-size: 2.75rem; + line-height: 55px; + line-height: 3.4375rem; + } +} +.block-events-list-row-item{ + display: grid; + min-height: 96px; + grid-template-columns: repeat(12, minmax(0, 1fr)); + align-items: center; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + border-top-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); + padding-top: 0.625rem; + padding-bottom: 0.625rem; +} +.block-events-list-row-item__img{ + position: relative; + display: none; + height: 100%; +} +.block-events-list-row-item__img img{ + position: absolute; + top: 0px; + left: 0px; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-events-list-row-item__date{ + grid-area: 1 / 1 / 2 / 7; + } +.block-events-list-row-item__date span{ + display: block; +} +.block-events-list-row-item__date span:first-child{ + font-weight: 700; +} +.block-events-list-row-item__title{ + grid-area: 1 / 7 / 2 / 13; + } +.block-events-list-row-item__title p{ + display: inline; + font-weight: 700; + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; +} +@media (min-width: 48rem){ + + .block-events-list-row-item__title p{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +.block-events-list-row-item__title span{ + margin-left: 1rem; + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); +} +.block-events-list-row-item:hover .block-events-list-row-item__img{ + grid-area: 1 / 1 / 2 / 3; + display: block; + } +.block-events-list-row-item:hover .block-events-list-row-item__date{ + grid-area: 1 / 3 / 2 / 7; + } +.block-featured-content-stacked{ + margin-top: 3.125rem; + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + padding-top: 1.5625rem; + padding-bottom: 1.5625rem; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +@media (min-width: 80rem){ + + .block-featured-content-stacked{ + margin-top: 4.5rem; + padding-top: 2.1875rem; + padding-bottom: 2.1875rem; + } +} +.block-featured-content-stacked p{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.block-featured-content-stacked__inner .block-featured-content-stacked__img{ + aspect-ratio: 3/2; +} +@media (min-width: 62rem){ + + .block-featured-content-stacked__inner .block-featured-content-stacked__img{ + aspect-ratio: 2/1; + } +} +@media (min-width: 80rem){ + + .block-featured-content-stacked__inner .block-featured-content-stacked__img{ + aspect-ratio: 21/9; + } +} +.block-featured-content-stacked__inner .block-featured-content-stacked__img img{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-featured-content-stacked__inner .block-paragraph{ + margin-top: 2.1875rem; +} +@media (min-width: 62rem){ + + .block-featured-content-stacked__inner .block-paragraph{ + width: 91.666667%; + } +} +.block-featured-content-stacked__inner .block-paragraph p{ + margin-bottom: 0px; + margin-bottom: 0; + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; +} +@media (min-width: 48rem){ + + .block-featured-content-stacked__inner .block-paragraph p{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +.block-featured-content-columns{ + margin-top: 3.125rem; + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + padding-top: 1.5625rem; + padding-bottom: 1.5625rem; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +@media (min-width: 80rem){ + + .block-featured-content-columns{ + margin-top: 4.5rem; + padding-top: 2.1875rem; + padding-bottom: 2.1875rem; + } +} +.block-featured-content-columns p{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.block-featured-content-columns__inner{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + -moz-column-gap: calc(var(--grid-gutter) * 2); + column-gap: calc(var(--grid-gutter) * 2); +} +@media (min-width: 62rem){ + + .block-featured-content-columns__inner{ + display: grid; + } +} +.block-featured-content-columns__inner .block-featured-content-columns__img{ + margin-bottom: 1.5625rem; + height: 100%; +} +@media (min-width: 62rem){ + + .block-featured-content-columns__inner .block-featured-content-columns__img{ + order: 2; + margin-bottom: 0px; + margin-bottom: 0; + } +} +.block-featured-content-columns__inner .block-featured-content-columns__img img{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-featured-content-columns__inner .block-featured-content-columns__content{ + display: flex; + flex-direction: column; +} +@media (min-width: 62rem){ + + .block-featured-content-columns__inner .block-featured-content-columns__content{ + order: 1; + } +} +.block-featured-content-columns__inner .block-featured-content-columns__content .block-title{ + } +.block-featured-content-columns__inner .block-featured-content-columns__content .block-paragraph{ + margin-bottom: 1.5625rem; + align-self: flex-end; +} +@media (min-width: 48rem){ + + .block-featured-content-columns__inner .block-featured-content-columns__content .block-paragraph{ + margin-bottom: 3.125rem; + } +} +.block-featured-content-columns__inner .block-featured-content-columns__content .block-paragraph p{ + margin-bottom: 0px; + margin-bottom: 0; + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 62rem){ + + .block-featured-content-columns__inner .block-featured-content-columns__content .block-link{ + align-self: flex-end; + } +} +.block-featured-content-cover{ + position: relative; + margin-bottom: 2.1875rem; + aspect-ratio: 16 / 9; +} +.block-featured-content-cover__content{ + position: absolute; + right: 1.25rem; + bottom: 1.25rem; + z-index: 10; + display: flex; + aspect-ratio: 1 / 1; + max-width: 25vw; + flex-direction: column; + justify-content: space-between; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + padding-top: 1rem; + padding-bottom: 1rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} +.block-featured-content-cover__content p{ + font-weight: 700; + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 48rem){ + + .block-featured-content-cover__content p{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +@media (min-width: 80rem){ + + .block-featured-content-cover__content p{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; + } +} +.block-featured-content-cover__content a{ + display: block; + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); +} +.block-featured-content-cover__img{ + height: 100%; + width: 100%; +} +.block-featured-content-cover__img img{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-featured-tabs{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + padding-top: 1.5625rem; + padding-bottom: 1.5625rem; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +@media (min-width: 48rem){ + + .block-featured-tabs{ + padding-top: 2.1875rem; + padding-bottom: 2.1875rem; + } +} +@media (min-width: 62rem){ + + .block-featured-tabs{ + padding-top: 0px; + padding-top: 0; + } +} +.block-featured-tabs__tabs{ + display: flex; + padding-bottom: 1.5625rem; + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 48rem){ + + .block-featured-tabs__tabs{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +@media (min-width: 80rem){ + + .block-featured-tabs__tabs{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; + } +} +@media (min-width: 48rem){ + + .block-featured-tabs__tabs{ + padding-bottom: 2.1875rem; + } +} +@media (min-width: 62rem){ + + .block-featured-tabs__tabs{ + --tw-translate-y: 100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + padding-bottom: 0px; + padding-bottom: 0; + } +} +.block-featured-tabs__tabs button{ + display: block; + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); +} +.block-featured-tabs__tabs button:not(:first-child){ + margin-left: 0.5rem; +} +.block-featured-tabs__tabs button.is-selected{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.block-featured-tabs-tab{ + display: none; +} +.block-featured-tabs-tab > div{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + -moz-column-gap: calc(var(--grid-gutter) * 2); + column-gap: calc(var(--grid-gutter) * 2); +} +@media (min-width: 62rem){ + + .block-featured-tabs-tab > div{ + display: grid; + } + + .block-featured-tabs-tab .block-featured-tabs-tab__content{ + order: 1; + align-self: flex-end; + } +} +.block-featured-tabs-tab .block-featured-tabs-tab__content p{ + margin-bottom: 0px; + margin-bottom: 0; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +.block-featured-tabs-tab .block-featured-tabs-tab__img{ + margin-bottom: 1.5625rem; + aspect-ratio: 3/2; +} +@media (min-width: 48rem){ + + .block-featured-tabs-tab .block-featured-tabs-tab__img{ + margin-bottom: 2.1875rem; + } +} +@media (min-width: 62rem){ + + .block-featured-tabs-tab .block-featured-tabs-tab__img{ + order: 2; + margin-bottom: 0px; + margin-bottom: 0; + } +} +.block-featured-tabs-tab .block-featured-tabs-tab__img img{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-files-list__inner > p{ + margin-bottom: 1rem; + font-weight: 700; +} +.block-files-list__inner ul{ + display: flex; + flex-wrap: wrap; + gap: 0.9375rem; +} +.block-files-list__inner ul li a{ + min-height: 2.25rem; + position: relative; + display: inline-flex; + align-items: center; + --tw-bg-opacity: 1; + background-color: rgb(237 242 242 / var(--tw-bg-opacity)); + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 2.5rem; + padding-right: 0.75rem; + } +.block-files-list__inner ul li a::before{ + content: ''; + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 37 37'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m24.852 19.834-6.354 6.353-6.354-6.353.708-.708 5.146 5.147V9.5h1v14.773l5.146-5.147.708.708ZM27 28H10v-1h17v1Z' fill='%23000'/%3E%3C/svg%3E"); + position: absolute; + top: 0px; + left: 0px; + aspect-ratio: 1 / 1; + width: 2.25rem; + background-position: center; + background-repeat: no-repeat; + } +.block-files-list__inner ul li:hover a{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.block-files-list__inner ul li:hover a::before{ + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 37 37'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m24.852 19.834-6.354 6.353-6.354-6.353.708-.708 5.146 5.147V9.5h1v14.773l5.146-5.147.708.708ZM27 28H10v-1h17v1Z' fill='%23fff'/%3E%3C/svg%3E"); + } +.block-grid-list{ + container-type: inline-size; +} +.block-grid-list__inner{ + display: grid; + -moz-column-gap: calc(var(--grid-gutter) * 2); + column-gap: calc(var(--grid-gutter) * 2); + row-gap: 2.1875rem; +} +@media (min-width: 62rem){ + + .block-grid-list__inner{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} +@media (min-width: 80rem){ + + .block-grid-list__inner{ + grid-template-columns: repeat(4, minmax(0, 1fr)); + } +} +.block-grid-list__inner > div{ + border-top-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); + padding-top: 0.5rem; +} +.block-grid-list__inner > div p{ + margin-bottom: 0px; + margin-bottom: 0; + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; +} +.block-grid-list__inner > div p:first-child{ + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); +} +@container (min-width: 35rem){ + @media (min-width: 48rem){ + + .block-grid-list__inner{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + } +} +@container (min-width: 56rem) { + @media (min-width: 62rem){ + + .block-grid-list__inner{ + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + } +} +@container (min-width: 62rem) { + @media (min-width: 80rem){ + + .block-grid-list__inner{ + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + } +} +.block-hero-banner{ + height: var(--hero-banner-height); + margin-bottom: 2.5rem; + overflow: hidden; + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .block-hero-banner{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.block-hero-banner{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .block-hero-banner{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .block-hero-banner{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.block-hero-banner :where(.grid-container),.block-hero-banner :where(.block-container), .block-container :where(.block-hero-banner){ + margin-left: 0px; + margin-left: 0; + margin-right: 0px; + margin-right: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} + .block-container :where(.block-hero-banner){ + margin-left: 0px; + margin-left: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +.block-hero-banner__img{ + height: 100%; + width: 100%; +} +.block-hero-banner__img img{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-banner-scroll{ + /* @apply h-[900px]; */ + height: 160vh; + position: relative; + margin-bottom: 2.5rem; +} +.block-banner-scroll__content{ + position: sticky; + top: 100px; + z-index: 10; + padding-top: 2rem; +} +.block-banner-scroll__content h1{ + font-size: 5.75vw; + line-height: 110%; + } +.block-banner-scroll__content h1 span{ + background: transparent; + position: relative; + } +/* &::after{ + content: ''; + height: 90%; + top: 10%; + @apply absolute left-0 inline-block w-full bg-accent-200 -z-10; + + } */ +.block-banner-scroll__content h1 span.is-active{ + } +.block-banner-scroll__images{ + margin-left: var(--grid-offset); + width: calc(100% - var(--grid-offset)); + position: absolute; + top: 0px; + left: 0px; + z-index: 0; + height: 100%; + } +.block-banner-scroll__images .block-banner-scroll-img{ + transition: opacity .1s ease; + position: absolute; + width: 30vw; + opacity: 0; + } +.block-banner-scroll__images .block-banner-scroll-img picture{ + aspect-ratio: 1 / 1; +} +.block-banner-scroll__images .block-banner-scroll-img picture img{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-banner-scroll__images .block-banner-scroll-img:first-child{ + right: 10vw; + top: 30vh; + opacity: 1 !important; + } +.block-banner-scroll__images .block-banner-scroll-img:nth-child(2){ + left: 5vw; + top: 70vh; + opacity: 1 !important; + } +.block-banner-scroll__images .block-banner-scroll-img:nth-child(3){ + right: 30vw; + top: 200vh; + } +.block-banner-scroll__images .block-banner-scroll-img:nth-child(4){ + right: 5vw; + top: 150vh; + } +.block-banner-scroll__images .block-banner-scroll-img.is-visible{ + /* @apply opacity-100; */ + } +.block-images-grid--black{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + padding-top: 3rem; + padding-bottom: 3rem; +} +.block-images-grid__inner{ + display: grid; + grid-template-columns: repeat(12, minmax(0, 1fr)); + grid-template-rows: repeat(2, minmax(0, 1fr)); + gap: 1.25rem; +} +.block-images-grid__inner > div{ + position: relative; +} +.block-images-grid__inner > div:first-child{ + grid-area: 1 / 1 / 4 / 7; + aspect-ratio: 4/5; + } +.block-images-grid__inner > div:nth-child(2){ + grid-area: 1 / 7 / 2 / 10; + } +.block-images-grid__inner > div:nth-child(3){ + grid-area: 1 / 10 / 2 / 13; + } +.block-images-grid__inner > div:nth-child(4){ + grid-area: 2 / 7 / 4 / 10; + } +.block-images-grid__inner > div:nth-child(5){ + grid-area: 2 / 10 / 4 / 13; + } +.block-images-grid__inner > div img{ + position: absolute; + top: 0px; + left: 0px; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-link{ + /* @apply grid grid-cols-2 items-center; */ + position: relative; + display: flex; + border-top-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 48rem){ + + .block-link{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +@media (min-width: 80rem){ + + .block-link{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; + } +} +.block-link:last-child:not(:first-child){ + border-bottom-width: 1px; +} +.block-link::before{ + content: ''; + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m34.711 24-6.778-7.32 1.467-1.36L38.363 25 29.4 34.68l-1.467-1.36L34.71 26H12v-2h22.711Z' fill='%23000'/%3E%3C/svg%3E"); + background-size: 100%; + position: absolute; + top: 0px; + left: 0px; + aspect-ratio: 1 / 1; + width: 2.25rem; + background-position: center; + background-repeat: no-repeat; + } +@media (min-width: 80rem){ + + .block-link::before{ + width: 3.125rem; + } +} +.block-link > span{ + display: flex; + min-height: 2.25rem; + align-items: center; + padding-top: 0.125rem; + padding-bottom: 0.125rem; + padding-left: 3rem; + padding-right: 1.25rem; +} +@media (min-width: 80rem){ + + .block-link > span{ + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 4rem; + } +} +.block-link:hover{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.block-link:hover::before{ + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m34.711 24-6.778-7.32 1.467-1.36L38.363 25 29.4 34.68l-1.467-1.36L34.71 26H12v-2h22.711Z' fill='%23fff'/%3E%3C/svg%3E"); + } +.block-link[href]:not(:where( + + [href^="#"], + + [href^="/"]:not([href^="//"]),))::before{ + background-image: url("data:image/svg+xml,%3Csvg width='50' height='50' viewBox='0 0 50 50' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M31.0124 17.0725L21.043 16.6891L21.1198 14.6906L34.3016 15.1975L34.8086 28.3793L32.81 28.4562L32.4266 18.4867L16.3673 34.546L14.9531 33.1318L31.0124 17.0725Z' fill='black'/%3E%3C/svg%3E%0A"); + } +.block-link[href]:not(:where( + + [href^="#"], + + [href^="/"]:not([href^="//"]),)) span span{ + margin-left: 0.9375rem; + --tw-translate-y: 0.125rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + align-self: flex-start; + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +.block-link[href]:not(:where( + + [href^="#"], + + [href^="/"]:not([href^="//"]),)):hover::before{ + background-image: url("data:image/svg+xml,%3Csvg width='50' height='50' viewBox='0 0 50 50' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M31.0124 17.0725L21.043 16.6891L21.1198 14.6906L34.3016 15.1975L34.8086 28.3793L32.81 28.4562L32.4266 18.4867L16.3673 34.546L14.9531 33.1318L31.0124 17.0725Z' fill='white'/%3E%3C/svg%3E%0A"); + } +.block-link--white{ + --tw-border-opacity: 1; + border-color: rgb(83 90 90 / var(--tw-border-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.block-link--white::before{ + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m34.711 24-6.778-7.32 1.467-1.36L38.363 25 29.4 34.68l-1.467-1.36L34.71 26H12v-2h22.711Z' fill='white'/%3E%3C/svg%3E"); + } +.block-link--white[href]:not(:where( + + [href^="#"], + + [href^="/"]:not([href^="//"]),))::before{ + background-image: url("data:image/svg+xml,%3Csvg width='50' height='50' viewBox='0 0 50 50' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M31.0124 17.0725L21.043 16.6891L21.1198 14.6906L34.3016 15.1975L34.8086 28.3793L32.81 28.4562L32.4266 18.4867L16.3673 34.546L14.9531 33.1318L31.0124 17.0725Z' fill='white'/%3E%3C/svg%3E%0A"); + } +.block-links-list-columns{ + margin-bottom: 4rem; +} +@media (min-width: 62rem){ +.block-links-list-columns ul{ + -moz-columns: 2; + columns: 2; + gap: calc(var(--grid-gutter)*2) + } + } +/* @apply -mx-[var(--grid-gutter)]; */ +.block-links-list-columns ul li{ + /* @apply w-full px-[var(--grid-gutter)]; */ + /* @apply border-t border-grey-200 flex items-center h-[3.5vw]; */ + /* a{ + @apply flex items-center h-full w-full text-size-lg; + &::before{ + content: ''; + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 20'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m22.711 9-6.778-7.32L17.4.32 26.363 10 17.4 19.68l-1.467-1.36L22.71 11H0V9h22.711Z' fill='%23000'/%3E%3C/svg%3E"); + background-size: 24px 18px; + @apply w-[50px] h-[50px] bg-no-repeat inline-block bg-center mr-4; + } + } + &:nth-last-child(2), &:last-child{ + @apply border-b; + } */ + } +.block-page-title-banner{ + margin-bottom: 2.1875rem; +} +@media (min-width: 48rem){ + + .block-page-title-banner{ + margin-bottom: 4.5rem; + } +} +@media (min-width: 80rem){ + + .block-page-title-banner{ + margin-bottom: 7.5rem; + } +} +@media (min-width: 62rem){ +.block-page-title-banner__img{ + height: calc(var(--page-title-banner-img-height) - var(--grid-gutter)*2) + } + } +.block-page-title-banner__img{ + position: relative; + z-index: 20; + margin-bottom: calc(var(--grid-gutter) * 2); + aspect-ratio: 16 / 9; + overflow: hidden; + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .block-page-title-banner__img{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.block-page-title-banner__img{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .block-page-title-banner__img{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .block-page-title-banner__img{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.block-page-title-banner__img :where(.grid-container),.block-page-title-banner__img :where(.block-container), .block-container :where(.block-page-title-banner__img){ + margin-left: 0px; + margin-left: 0; + margin-right: 0px; + margin-right: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} + .block-container :where(.block-page-title-banner__img){ + margin-left: 0px; + margin-left: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +@media (min-width: 48rem){ + + .block-page-title-banner__img{ + aspect-ratio: auto; + } +} +.block-page-title-banner__img img{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +@media (min-width: 62rem){ +.block-page-title-banner__video{ + height: calc(var(--page-title-banner-img-height) - var(--grid-gutter)*2) + } + } +.block-page-title-banner__video{ + position: relative; + z-index: 20; + margin-bottom: calc(var(--grid-gutter) * 2); + aspect-ratio: 16 / 9; + overflow: hidden; + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .block-page-title-banner__video{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.block-page-title-banner__video{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .block-page-title-banner__video{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .block-page-title-banner__video{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.block-page-title-banner__video :where(.grid-container),.block-page-title-banner__video :where(.block-container), .block-container :where(.block-page-title-banner__video){ + margin-left: 0px; + margin-left: 0; + margin-right: 0px; + margin-right: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} + .block-container :where(.block-page-title-banner__video){ + margin-left: 0px; + margin-left: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +@media (min-width: 48rem){ + + .block-page-title-banner__video{ + aspect-ratio: auto; + } +} +.block-page-title-banner__video video{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-page-title-banner .block-title{ + bottom: calc(var(--grid-gutter) * 2); + z-index: 10; + margin-bottom: 0px; + margin-bottom: 0; +} +@media (min-width: 48rem){ + + .block-page-title-banner .block-title{ + padding-top: calc(var(--grid-gutter) * 2); + } +} +@media (min-width: 62rem){ + + .block-page-title-banner .block-title{ + position: sticky; + } +} +.block-paragraph{ + container: paragraph / inline-size; +} +.block-paragraph p{ + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; +} +@media (min-width: 48rem){ + + @media not all and (min-width: 80rem){ + + .block-paragraph--lg p{ + max-width: 48rem; + } + } +} +@media (min-width: 80rem){ + .block-paragraph--lg p{ + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; + } + .block-paragraph--1col{ + width: 50%; + } +} +@container paragraph (min-width: 80rem){ + .block-paragraph p{ + width: 75%; + } +} +.query-loop__inner{ + grid-template-columns: repeat(1, minmax(0,1fr)); + } +@media (min-width: 62rem){ +.query-loop__inner{ + grid-template-columns: repeat(var(--query-loop-columns-per-row), minmax(0, 1fr)); + } + } +.query-loop__inner{ + display: grid; + -moz-column-gap: var(--size-ratio-base); + column-gap: var(--size-ratio-base); + row-gap: var(-xl); +} +@layer utilties{ + .block-tease-row{ + margin-bottom: 4.5rem; + } + @media (min-width: 80rem){ + + .block-tease-row{ + margin-bottom: 7.5rem; + } + } + .block-title{ + margin-bottom: 1.5625rem; + } + @media (min-width: 48rem){ + + .block-title{ + margin-bottom: 2.1875rem; + } + } +} +.block-title h1,.block-title h2,.block-title h3,.block-title h4,.block-title h5,.block-title h6{ + margin-bottom: 0px; + margin-bottom: 0; + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; +} +@media (min-width: 48rem){ + + .block-title h1,.block-title h2,.block-title h3,.block-title h4,.block-title h5,.block-title h6{ + font-size: 54px; + font-size: 3.375rem; + line-height: 65px; + line-height: 4.0625rem; + } +} +@media (min-width: 80rem){ + + .block-title h1,.block-title h2,.block-title h3,.block-title h4,.block-title h5,.block-title h6{ + font-size: 58px; + font-size: 3.625rem; + line-height: 70px; + line-height: 4.375rem; + } +} +.block-title h1 + a,.block-title h2 + a,.block-title h3 + a,.block-title h4 + a,.block-title h5 + a,.block-title h6 + a{ + flex-shrink: 0; + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 48rem){ + + .block-title h1 + a,.block-title h2 + a,.block-title h3 + a,.block-title h4 + a,.block-title h5 + a,.block-title h6 + a{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +@media (min-width: 80rem){ + + .block-title h1 + a,.block-title h2 + a,.block-title h3 + a,.block-title h4 + a,.block-title h5 + a,.block-title h6 + a{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; + } +} +.block-title .block-title__inner{ + width: 91.666667%; +} +/* .column{ + @apply flex justify-between items-baseline; + } + + .block-links-list-columns{ + @apply mt-16; + } */ +.block-title--xs h1,.block-title--xs h2,.block-title--xs h3,.block-title--xs h4,.block-title--xs h5,.block-title--xs h6{ + font-weight: 700; + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; +} +.block-title--sm h1,.block-title--sm h2,.block-title--sm h3,.block-title--sm h4,.block-title--sm h5,.block-title--sm h6{ + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 48rem){ + + .block-title--sm h1,.block-title--sm h2,.block-title--sm h3,.block-title--sm h4,.block-title--sm h5,.block-title--sm h6{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +@media (min-width: 80rem){ + + .block-title--sm h1,.block-title--sm h2,.block-title--sm h3,.block-title--sm h4,.block-title--sm h5,.block-title--sm h6{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; + } +} +.block-title--lg h1,.block-title--lg h2,.block-title--lg h3,.block-title--lg h4,.block-title--lg h5,.block-title--lg h6{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; +} +@media (min-width: 48rem){ + + .block-title--lg h1,.block-title--lg h2,.block-title--lg h3,.block-title--lg h4,.block-title--lg h5,.block-title--lg h6{ + font-size: 54px; + font-size: 3.375rem; + line-height: 65px; + line-height: 4.0625rem; + } +} +@media (min-width: 80rem){ + + .block-title--lg h1,.block-title--lg h2,.block-title--lg h3,.block-title--lg h4,.block-title--lg h5,.block-title--lg h6{ + font-size: 90px; + font-size: 5.625rem; + line-height: 105px; + line-height: 6.5625rem; + } +} +.block-title--divider .block-title__inner{ + width: 100%; + border-top-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); + padding-top: 0.75rem; +} +.block-title--link .block-title__inner{ + width: 100%; + align-items: baseline; + justify-content: space-between; +} +@media (min-width: 62rem){ + + .block-title--link .block-title__inner{ + display: flex; + } +} +.block-title--link .block-title__inner h1,.block-title--link .block-title__inner h2,.block-title--link .block-title__inner h3,.block-title--link .block-title__inner h4,.block-title--link .block-title__inner h5,.block-title--link .block-title__inner h6{ + margin-right: 1rem; +} +/* .block-container + .block-title{ + @apply mt-[5.5vw] +} */ +.block-video__inner{ + position: relative; + aspect-ratio: 16 / 9; +} +.block-video__inner video{ + position: absolute; + left: 0px; + top: 0px; + height: 100%; + width: 100%; +} +.block-video__caption p{ + margin-top: 1.125rem; + margin-bottom: 0px; + margin-bottom: 0; + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +.breadcrumbs{ + margin-top: 1.5625rem; + margin-bottom: 2.1875rem; + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .breadcrumbs{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.breadcrumbs{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .breadcrumbs{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .breadcrumbs{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.breadcrumbs :where(.grid-container),.breadcrumbs :where(.block-container), .block-container :where(.breadcrumbs){ + margin-left: 0px; + margin-left: 0; + margin-right: 0px; + margin-right: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} + .block-container :where(.breadcrumbs){ + margin-left: 0px; + margin-left: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +@media (min-width: 48rem){ + + .breadcrumbs{ + margin-top: 3.125rem; + margin-bottom: 4.5rem; + } +} +@media (min-width: 80rem){ + + .breadcrumbs{ + margin-top: 6.25rem; + margin-bottom: 2.1875rem; + } +} +.breadcrumbs ul{ + display: flex; + flex-wrap: wrap; +} +.breadcrumbs ul li{ + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 48rem){ + + .breadcrumbs ul li{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +@media (min-width: 80rem){ + + .breadcrumbs ul li{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; + } +} +.breadcrumbs ul li:not(:last-child)::after{ + content: '/'; + margin-left: 0.75vw; + margin-right: 0.75vw; + } +.breadcrumbs ul li a, .breadcrumbs ul li span{ + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); +} +.breadcrumbs ul li:last-child span{ + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} +button, input[type="submit"]{ + text-rendering: geometricPrecision; +} +.btn{ + +} +.card{ + position: relative; + --tw-bg-opacity: 1; + background-color: rgb(237 242 242 / var(--tw-bg-opacity)); + padding: 1rem; +} +.card--black{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); +} +.card--black p, .card--black span{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.card__content{ + display: flex; + aspect-ratio: 1 / 1; + flex-direction: column; + justify-content: space-between; +} +.card .card-header, .card .card-main{ + position: relative; + z-index: 10; +} +.card .card-header{ + display: flex; + justify-content: space-between; + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); +} +.card .card-date{ + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +.card .card-title{ + font-weight: 700; + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +.card .card-bg{ + pointer-events: none; + position: absolute; + left: 0px; + top: 0px; + height: 100%; + width: 100%; + transform-origin: center; + --tw-scale-x: 1.25; + --tw-scale-y: 1.25; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + opacity: 0; +} +.card .card-bg img{ + z-index: 10; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; + opacity: 0.75; +} +.card--has-background.is-hovered{ + z-index: 20; + background-color: transparent; +} +.card--has-background.is-hovered p, .card--has-background.is-hovered span{ + --tw-text-opacity: 1; + color: rgb(255 204 0 / var(--tw-text-opacity)); +} +.card--has-background.is-hovered .card-bg{ + opacity: 1; +} +.card--has-background.is-hovered::after{ + content: ''; + position: absolute; + left: 0px; + top: 0px; + height: 100%; + width: 100%; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(255 204 0 / var(--tw-border-opacity)); + } +.card--has-keyword .card-keyword{ + font-size: calc(70vw / var(--card-keyword-chars)); + pointer-events: none; + position: absolute; + top: 50%; + left: 50%; + z-index: 50; + --tw-translate-y: -50%; + --tw-translate-x: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + white-space: nowrap; + --tw-text-opacity: 1; + color: rgb(255 204 0 / var(--tw-text-opacity)); + opacity: 0; + } +.card--has-keyword.is-hovered{ + z-index: 20; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +.card--has-keyword.is-hovered .card-header span{ + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); +} +.card--has-keyword.is-hovered .card-main p, .card--has-keyword.is-hovered .card-main span{ + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} +.card--has-keyword.is-hovered .card-keyword{ + opacity: 1; +} +.card--has-keyword.is-hovered::after{ + content: ''; + position: absolute; + left: 0px; + top: 0px; + height: 100%; + width: 100%; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); + } +.chip{ +} +.contacts-section{ + margin-top: 2.1875rem; + --tw-bg-opacity: 1; + background-color: rgb(255 204 0 / var(--tw-bg-opacity)); + padding-top: 1.5625rem; + padding-bottom: 1.5625rem; +} +@media (min-width: 80rem){ + + .contacts-section{ + margin-top: 4.5rem; + padding-top: 2.1875rem; + padding-bottom: 2.1875rem; + } +} +.contacts-section .block-title__inner a{ + --tw-text-opacity: 1; + color: rgb(158 127 0 / var(--tw-text-opacity)); +} +.contacts-section-cards-row{ + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .contacts-section-cards-row{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.contacts-section-cards-row{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .contacts-section-cards-row{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .contacts-section-cards-row{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.contacts-section-cards-row :where(.grid-container),.contacts-section-cards-row :where(.block-container), .block-container :where(.contacts-section-cards-row){ + margin-left: 0px; + margin-left: 0; + margin-right: 0px; + margin-right: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +@layer utilties{ + .contacts-section-cards-row{ + margin-bottom: 1.5625rem; + } + @media (min-width: 48rem){ + + .contacts-section-cards-row{ + margin-bottom: 2.1875rem; + } + } +} + .block-container :where(.contacts-section-cards-row){ + margin-left: 0px; + margin-left: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +.contacts-section-cards-row__inner{ + display: grid; + grid-template-columns: repeat(1, minmax(0, 1fr)); + gap: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .contacts-section-cards-row__inner{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} +@media (min-width: 80rem){ + + .contacts-section-cards-row__inner{ + grid-template-columns: repeat(4, minmax(0, 1fr)); + } +} +@media not all and (min-width: 80rem){ + + @media (min-width: 62rem){ + + .contacts-section-cards-row__inner-squares{ + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + } +} +.contacts-section-cards-row > p{ + margin-bottom: 1rem; + font-weight: 700; +} +.contacts-section-card{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + align-items: flex-start; + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + padding: calc(var(--grid-gutter) * 2); + --tw-text-opacity: 1; + color: rgb(255 204 0 / var(--tw-text-opacity)); +} +@media (min-width: 80rem){ + + .contacts-section-card{ + display: grid; + } +} +.contacts-section-card p{ + --tw-text-opacity: 1; + color: rgb(255 204 0 / var(--tw-text-opacity)); +} +.contacts-section-card a{ + text-decoration-line: underline; +} +.contacts-section-card header{ + margin-bottom: 2.1875rem; +} +@media (min-width: 80rem){ + + .contacts-section-card header{ + margin-bottom: 0px; + margin-bottom: 0; + } +} +.contacts-section-card header p{ + margin-bottom: 0px; + margin-bottom: 0; + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; +} +@media (min-width: 48rem){ + + .contacts-section-card header p{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +.contacts-section-card header p:last-child:not(:first-child){ + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; +} +@media (min-width: 80rem){ + + .contacts-section-card > div{ + aspect-ratio: 1 / 1; + } +} +.contacts-section-card > div:first-child{ + display: flex; + flex-direction: column; +} +@media (min-width: 80rem){ + + .contacts-section-card > div:first-child{ + height: 100%; + } +} +.contacts-section-card > div:first-child header{ + flex-grow: 1; +} +.contacts-section-card > div:first-child:last-child{ + grid-column: span 2; + } +.contacts-section-card:not(.contacts-section-card--span) > div{ + aspect-ratio: 1 / 1; +} +.contacts-section-card--span{ + align-self: flex-start; +} +@media (min-width: 80rem){ +.contacts-section-card--span{ + align-self: inherit; + grid-column: span 2 + } + } +.contacts-section-card--span footer{ + margin-bottom: 2.1875rem; +} +@media (min-width: 80rem){ + + .contacts-section-card--span footer{ + margin-bottom: 0px; + margin-bottom: 0; + } +} +.contacts-section + .site-footer{ + margin-top: 0px !important; + margin-top: 0 !important; +} +.contacts-section--noMargin{ + margin-top: 0px; + margin-top: 0; +} +.content-section{ + margin-top: 3.125rem; +} +@media (min-width: 62rem){ + + .content-section{ + margin-top: 4.5rem; + } +} +.content-section--noMargin{ + margin-top: 0px; + margin-top: 0; +} +.degree-curricula{ + --tw-bg-opacity: 1; + background-color: rgb(237 242 242 / var(--tw-bg-opacity)); +} +.degree-curricula__tabs{ + padding-top: 2.1875rem; + padding-bottom: 2.1875rem; + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 48rem){ + + .degree-curricula__tabs{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +@media (min-width: 80rem){ + + .degree-curricula__tabs{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; + } +} +@media (min-width: 62rem){ + + .degree-curricula__tabs{ + display: flex; + flex-wrap: nowrap; + } +} +.degree-curricula__tabs button{ + display: block; + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); +} +@media (min-width: 62rem){ + + .degree-curricula__tabs button:not(:first-child){ + margin-left: 0.5rem; + } +} +.degree-curricula__tabs button.is-selected{ + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} +.degree-curriculum{ + /*fix for using margin of last child element as real inner margin*/ + padding-bottom: 1px; + padding-bottom: 0.0625rem; +} +.degree-curriculum__marquee{ + margin-left: calc(var(--grid-offset) * -1); + width: 100vw; +} +.degree-curriculum__excerpt{ + margin-bottom: 2.1875rem; + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; +} +@media (min-width: 48rem){ + + .degree-curriculum__excerpt{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +.degree-curriculum__cols{ + margin-bottom: 4.5rem; + grid-template-columns: repeat(2, minmax(0, 1fr)); + -moz-column-gap: calc(var(--grid-gutter) * 2); + column-gap: calc(var(--grid-gutter) * 2); +} +@media (min-width: 62rem){ + + .degree-curriculum__cols{ + display: grid; + } +} +@media (min-width: 80rem){ + .degree-curriculum__cols > *:last-child p{ + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; + } +} +.degree-curriculum__cols > *:last-child p:last-child{ + margin-bottom: 0px; + margin-bottom: 0; +} +.degree-curriculum .block-accordion{ + margin-bottom: 3.125rem; +} +.degree-curriculum .block-accordion + *{ + margin-bottom: 1.5625rem; +} +[data-tab-index]{ + display: none; +} +.events-posts__day{ + position: sticky; + top: -1px; + border-top-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.events-posts__day span{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; +} +@media (min-width: 48rem){ + + .events-posts__day span{ + font-size: 40px; + font-size: 2.5rem; + line-height: 50px; + line-height: 3.125rem; + } +} +@media (min-width: 80rem){ + + .events-posts__day span{ + font-size: 44px; + font-size: 2.75rem; + line-height: 55px; + line-height: 3.4375rem; + } +} +.event-item{ + display: grid; + min-height: 96px; + grid-template-columns: repeat(12, minmax(0, 1fr)); + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + border-top-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} +.event-item > *:first-child{ + grid-area: 1 / 1 / 3 / 7; + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; + } +.event-item > *:last-child{ + grid-area: 1 / 7 / 3 / 13; + } +.event-item__info{ + display: flex; + flex-direction: column; + justify-content: space-between; +} +.event-item__date{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; +} +@media (min-width: 48rem){ + + .event-item__date{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +.event-item__date span{ + display: block; +} +.event-item__date span + span{ + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); +} +.event-item__title{ + font-weight: 700; + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; +} +@media (min-width: 48rem){ + + .event-item__title{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +.event-item__title + p{ + margin-top: 1.5rem; +} +.event-item-ongoing{ + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} +.event-item-ongoing:first-child{ + padding-top: 0px; + padding-top: 0; +} +.event-item-ongoing:first-child span{ + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; +} +.event-item-ongoing:last-child{ + padding-bottom: 0px; + padding-bottom: 0; +} +.event-item-ongoing:not(:last-child){ + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); +} +.event-item-ongoing p{ + margin-bottom: 0px; + margin-bottom: 0; + font-weight: 700; + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; +} +.event-item-ongoing p span{ + margin-left: 0.75rem; + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); +} +.site-footer{ + position: relative; + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + padding-bottom: 2.5rem; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +@media (min-width: 48rem){ + .site-footer{ + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; + } +} +.site-footer__backTop{ + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25 27'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m11.5 4.289-7.32 6.778L2.82 9.6 12.5.637 22.18 9.6l-1.36 1.467L13.5 4.29V27h-2V4.289Z' fill='%23fff'/%3E%3C/svg%3E"); + background-size: 24px; + position: absolute; + top: 1.875rem; + right: calc(var(--grid-gutter) * 2); + height: 2rem; + width: 2rem; + background-repeat: no-repeat; + text-indent: -9999px; + } +.site-footer__title{ + margin-bottom: 3.125rem; + display: flex; + align-items: flex-start; + padding-top: 2rem; +} +@media (min-width: 48rem){ + + .site-footer__title{ + padding-top: 1.5625rem; + } +} +.site-footer__title svg{ + margin-right: 1.25rem; + width: 1.875rem; +} +@media (min-width: 48rem){ + + .site-footer__title svg{ + display: none; + } +} +.site-footer__title p{ + --tw-translate-y: -0.5rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 48rem){ + + .site-footer__title p{ + --tw-translate-y: 0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + font-weight: 700; + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; + } +} +.site-footer__title p span{ + display: block; +} +@media (min-width: 48rem){ + + .site-footer__title p span{ + display: inline; + } +} +.site-footer__main{ + display: grid; + grid-template-columns: repeat(1, minmax(0, 1fr)); + gap: 1.875rem; +} +@media (min-width: 48rem){ + + .site-footer__main{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + row-gap: 3.125rem; + } +} +@media (min-width: 80rem){ + + .site-footer__main{ + grid-template-columns: repeat(4, minmax(0, 1fr)); + } +} +.site-footer__main > div p{ + margin-bottom: 0px; + margin-bottom: 0; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +@media (min-width: 48rem){ + .site-footer__main > div p{ + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; + } +} +.site-footer__main > div > span{ + font-weight: 700; +} +.site-footer__nav ul,.site-footer__social-links ul{ + margin-top: 0.9375rem; +} +.site-footer__nav ul li,.site-footer__social-links ul li{ + display: flex; + align-items: center; + border-top-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(83 90 90 / var(--tw-border-opacity)); +} +@media (min-width: 48rem){ + + .site-footer__nav ul li,.site-footer__social-links ul li{ + border-top-width: 0px; + } +} +.site-footer__nav ul li:last-child,.site-footer__social-links ul li:last-child{ + border-bottom-width: 1px; +} +@media (min-width: 48rem){ + + .site-footer__nav ul li:last-child,.site-footer__social-links ul li:last-child{ + border-bottom-width: 0px; + } +} +.site-footer__nav ul li::before,.site-footer__social-links ul li::before{ + content: ''; + } +@media (min-width: 48rem){ +.site-footer__nav ul li::before,.site-footer__social-links ul li::before{ + content: none; + } + } +.site-footer__nav ul li::before,.site-footer__social-links ul li::before{ + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 37 37'%3E%3Cpath d='m21.441 12.5 5.556 6m0 0-5.556 6m5.556-6H10' stroke='%23fff'/%3E%3C/svg%3E"); + margin-right: 0.625rem; + display: inline-block; + height: 2.25rem; + width: 2.25rem; + background-repeat: no-repeat; +} +.site-footer__colophon nav{ + margin-top: 3.125rem; + border-top-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity)); + padding-top: 1.5625rem; +} +.site-footer__colophon nav ul{ + display: flex; +} +.site-footer__colophon nav ul li:not(:last-child){ + margin-right: 1.875rem; +} +.site-footer__colophon nav ul li a{ + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +@media (min-width: 48rem){ + + .site-footer__colophon nav ul li a{ + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; + } +} +.hamburger-btn { + --hamburgerPadding: 8px; + --hamburgerWidth: 50px; + --hamburgerHeight: 50px; + --hamburgerLineWidth: 24px; + --hamburgerLineHeight: 2px; + --hamburgerMargin: 6px; + --hamburgerBackground: true; + --hamburgerBackgroundColor: transparent; + --hamburgerColor: #242424; + --hamburgerBorderRadius: false; + --hamburgerBorderRadiusPx: 0; + padding: var(--hamburgerPadding); + width: var(--hamburgerWidth); + height: var(--hamburgerHeight); + border-radius: var(--hamburgerBorderRadiusPx); + background: var(--hamburgerBackgroundColor); + position: relative; + display: flex; + cursor: pointer; + align-items: center; +} +.hamburger-btn:focus{ + /* outline: none; */ + } +.hamburger-btn span{ + margin: 0 auto; + display: inline-block; + position: relative; + top: 0; + width: var(--hamburgerLineWidth); + height: var(--hamburgerLineHeight); + border-radius: 5px; + background-color: var(--hamburgerColor); + /* transition: background-color .1s .1s ease; */ + display: block; + } +.hamburger-btn span::before, .hamburger-btn span::after{ + content: ''; + position: absolute; + width: var(--hamburgerLineWidth); + height: var(--hamburgerLineHeight); + border-radius: 5px; + background-color: var(--hamburgerColor); + display: block; + } +.hamburger-btn span::before{ + margin-top: calc(var(--hamburgerMargin) * -1); + transform: rotate(0deg); + /* transition: margin .2s .2s ease, transform .2s ease; */ + } +.hamburger-btn span::after{ + margin-top: var(--hamburgerMargin); + transform: rotate(0deg); + /* transition: margin .2s .2s ease, transform .2s ease; */ + } +.hamburger-btn.is-toggled span{ + background-color: transparent !important; + } +/* transition: background-color .2s ease; */ +.hamburger-btn.is-toggled span:before{ + margin-top: 0; + transform: rotate(45deg); + /* transition: margin .2s ease, transform .2s .2s ease; */ + } +.hamburger-btn.is-toggled span:after{ + margin-top: 0; + transform: rotate(-45deg); + /* transition: margin .2s ease, transform .2s .2s ease; */ + } +.site-header{ + transition: transform .5s ease; + position: sticky; + top: 0px; + z-index: 40; + --tw-translate-y: 0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +body.has-menu-toggled .site-header{ + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} +@media (min-width: 48rem){ + + body.has-menu-toggled .site-header{ + border-bottom-width: 0px; + } +} +@media (min-width: 80rem){ + + .site-header.is-hidden{ + --tw-translate-y: -100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + } +} +.site-header-topbar{ + display: none; + height: 2.5rem; + align-items: center; + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +@media (min-width: 80rem){ + + .site-header-topbar{ + display: flex; + } +} +.site-header-topbar__container{ + display: flex; + align-items: center; + justify-content: space-between; + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +.site-header-topbar__container nav ul{ + display: flex; + align-items: center; +} +.site-header-topbar__container nav ul li a{ + } +.site-header-topbar__container nav ul li:not(:last-child){ + margin-right: 1.25rem; +} +.site-header-topbar__actions{ + display: flex; + align-items: center; +} +.site-header-topbar__actions .site-header-topbar__lang{ + margin-right: 0.9375rem; +} +.site-header-topbar__actions .site-header-topbar__search svg{ + display: block; + height: 2.25rem; + width: 22px; +} +.site-header-navbar{ + display: flex; + height: 3.125rem; + align-items: center; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} +@media (min-width: 80rem){ + + .site-header-navbar{ + height: 3.75rem; + } +} +.site-header-navbar__inner{ + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .site-header-navbar__inner{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.site-header-navbar__inner{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .site-header-navbar__inner{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .site-header-navbar__inner{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.site-header-navbar__inner :where(.grid-container),.site-header-navbar__inner :where(.block-container), .block-container :where(.site-header-navbar__inner){ + margin-left: 0px; + margin-left: 0; + margin-right: 0px; + margin-right: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} + .block-container :where(.site-header-navbar__inner){ + margin-left: 0px; + margin-left: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +.site-header-navbar__main{ + display: flex; + align-items: center; + justify-content: space-between; +} +@media (min-width: 80rem){ + + .site-header-navbar__main{ + width: 75%; + } +} +.site-header-navbar__main nav{ + display: none; +} +@media (min-width: 80rem){ + + .site-header-navbar__main nav{ + display: block; + } +} +.site-header-navbar__main nav ul li{ + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.site-header-navbar__main nav > ul{ + display: flex; + align-items: center; +} +.site-header-navbar__main nav > ul > li:not(:last-child){ + margin-right: 1.5rem; +} +@media (min-width: 80rem){ + + .site-header-navbar__main nav > ul > li:not(:last-child){ + margin-right: 2rem; + } +} +.site-header-navbar__main nav > ul > li > a{ + display: block; +} +.site-header-navbar__main nav > ul > li.is-toggled > a{ + font-weight: 700; +} +.site-header-navbar__main .site-header-navbar__actions{ + display: flex; + --tw-translate-x: calc(var(--grid-gutter) * 1.75); + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + align-items: center; +} +@media (min-width: 80rem){ + + .site-header-navbar__main .site-header-navbar__actions{ + --tw-translate-x: calc(var(--grid-gutter) * 1.25); + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + } +} +.site-header-navbar__main .site-header-navbar__actions > a{ + margin-right: 0.5rem; + --tw-translate-y: 1px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +@media (min-width: 80rem){ + + .site-header-navbar__main .site-header-navbar__actions > a{ + display: none; + } + + .site-header-navbar__main .site-header-navbar__actions .hamburger-btn{ + display: none; + } + + .site-header-navbar__main .site-header-navbar__actions .hamburger-btn.is-active{ + display: flex; + } +} +.site-header-navbar__title{ + font-weight: 700; +} +@media (min-width: 80rem){ + + .site-header-navbar__title{ + width: 25%; + } +} +.site-header-navbar-submenu li{ + /* .menu-item{ + @apply relative overflow-hidden; + &-overlay{ + @apply absolute z-10 !important; + @apply bg-black w-full h-full block overflow-hidden top-0 left-0 pointer-events-none opacity-100; + } + > a{ + transition: color .4s ease; + @apply block text-black; + } + &:hover{ + > a{ + @apply relative text-white z-20; + } + } + } */ + } +.site-header-navbar-submenu > li{ + margin-right: 0px; + margin-right: 0; +} +.site-header-navbar-submenu > li > a{ + display: inline-block; + width: 100%; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +.site-header-navbar-submenu > li > a:hover{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.site-header-navbar-submenu-0{ + padding-left: var(--grid-offset); + padding-right: calc(var(--grid-gutter) * 2); + orphans: 1; + transform: translateZ(0) translateY(calc(100% - 2px)); + pointer-events: none; + visibility: hidden; + position: absolute; + bottom: 0px; + left: 0px; + width: 100%; + -moz-columns: 3; + columns: 3; + -moz-column-gap: calc(var(--grid-gutter) * 2); + column-gap: calc(var(--grid-gutter) * 2); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + padding-top: 2.5rem; + padding-bottom: 3.125rem; + opacity: 0; + } +.site-header-navbar-submenu-0.is-visible{ + pointer-events: auto; + visibility: visible; + opacity: 1; +} +.site-header-navbar-submenu-0.is-visible > li{ + opacity: 1; +} +.site-header-navbar-submenu-0.is-visible.is-closing > li{ + transition: opacity .1s ease; + opacity: 0; + } +.site-header.is-hidden .site-header-navbar__main .site-header-navbar-submenu-0{ + display: none; +} +.site-header-navbar-submenu-0 > li { + transition: opacity .25s ease .25s; + -moz-column-break-inside: avoid; + break-inside: avoid; + opacity: 0; + } +.site-header-navbar__main nav.is-toggled .site-header-navbar-submenu-0 > li{ + transition: none; +} +.site-header-navbar-submenu-0 > li > a{ + border-top-width: 1px; + border-bottom-width: 1px; + border-top-color: rgb(0 0 0 / var(--tw-border-opacity)); + --tw-border-opacity: 1; + border-bottom-color: rgb(211 216 216 / var(--tw-border-opacity)); + font-weight: 700; +} +.site-header-navbar-submenu-0 > li > a:first-child:last-child{ + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-bottom-color: rgb(211 216 216 / var(--tw-border-opacity)); +} +.site-header-navbar-submenu:not(.site-header-navbar-submenu-0) > li{ + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); +} +.site-header-navbar-submenu:not(.site-header-navbar-submenu-0) > li:hover > a{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.site-header-navbar-submenu:not(.site-header-navbar-submenu-0) > li > a{ + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + -moz-column-gap: var(--size-ratio-base); + column-gap: var(--size-ratio-base); +} +.site-header-navbar-submenu:not(.site-header-navbar-submenu-0) > li > a > span{ + grid-column: 2 / 5; + } +#overlay{ + transition: all .5s ease; + pointer-events: none; + visibility: hidden; + position: fixed; + top: 0px; + left: 0px; + z-index: 30; + height: 100vh; + width: 100%; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + --tw-bg-opacity: 0.5; + opacity: 0; +} +#overlay.is-active{ + pointer-events: auto; + visibility: visible; + opacity: 1; +} +.site-logo{ + transition: all .2s ease; + transform: translateY(0) translateX(-2px); + position: fixed; + bottom: 2.5rem; + left: 2.5rem; + z-index: 20; + display: none; + mix-blend-mode: difference; +} +@media (min-width: 48rem){ + + .site-logo{ + display: block; + } +} +.site-logo svg{ + width: 40px; + display: block; + } +.site-logo.is-visible{ + transform: translateY(0) translateX(-50%); + left: 0px; + } +body.footer-in-viewport .site-logo.is-visible{ + transform: translateY(0) translateX(-2px); + left: 2.5rem; +} +.block-marquee-images{ + --marquee-item-width: 66vw; +} +@media (min-width: 48rem){ +.block-marquee-images{ + --marquee-item-width: 40vw +} + } +@media (min-width: 62rem){ +.block-marquee-images{ + --marquee-item-width: 33vw +} + } +@media (min-width: 80rem){ +.block-marquee-images{ + --marquee-item-width: 25vw +} + } +.block-marquee-images{ + overflow-x: clip; + margin-bottom: 2.1875rem; + margin-left: calc(calc(var(--grid-gutter) * 2) * -1); +} +@media (min-width: 62rem){ + + .block-marquee-images{ + margin-left: 0px; + margin-left: 0; + } +} +/* @apply overflow-hidden mb-5; */ +.block-marquee-images__inner{ + display: flex; +} +.block-marquee-images__inner .block-marquee-images-item{ + width: var(--marquee-item-width); + margin-right: calc(var(--grid-gutter) * 2); + aspect-ratio: 1 / 1; + } +.block-marquee-images__inner .block-marquee-images-item img{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.block-marquee-images.is-hovered{ + position: relative; + z-index: 10; +} +/* .marquee-card{ + @apply relative bg-grey-100 p-4; + &--black{ + @apply bg-black; + p, span{ + @apply text-white; + } + } + &__content{ + @apply aspect-square flex flex-col justify-between; + } + .marquee-card-header, .marquee-card-main{ + @apply relative z-10; + } + .marquee-card-header{ + @apply flex justify-between text-grey-300; + } + .marquee-card-date{ + @apply text-size-sm; + } + .marquee-card-title{ + @apply text-size-md font-bold; + } + .marquee-card-bg{ + @apply absolute left-0 top-0 w-full h-full scale-125 origin-center opacity-0 pointer-events-none bg-black; + img{ + @apply w-full h-full bg-cover z-10 opacity-75; + } + } + &--has-background{ + &.is-hovered{ + @apply bg-transparent z-20; + p, span{ + @apply text-accent-200; + } + .marquee-card-bg{ + @apply opacity-100; + } + &::after{ + content: ''; + @apply w-full h-full border border-accent-200 absolute left-0 top-0; + } + } + } + &--has-keyword{ + .marquee-card-keyword{ + font-size: calc(70vw / var(--marquee-card-keyword-chars)); + @apply absolute top-[50%] left-[50%] translate-y-[-50%] translate-x-[-50%] opacity-0 pointer-events-none text-accent-200 whitespace-nowrap z-50; + } + &.is-hovered{ + @apply z-20 bg-white; + .marquee-card-header{ + span{ + @apply text-grey-300; + } + } + .marquee-card-main{ + p, span{ + @apply text-black; + } + } + .marquee-card-keyword{ + @apply opacity-100; + } + &::after{ + content: ''; + @apply w-full h-full border border-grey-200 absolute left-0 top-0; + } + } + } +} */ +.block-marquee-posts-grid{ + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 1.25rem; +} +.block-marquee-posts-row{ + --marquee-card-width: 27.5vw; + /* @apply overflow-hidden mb-5; */ + overflow-x: clip; + margin-bottom: 1.25rem; +} +.block-marquee-posts-row__wrapper{ + display: flex; +} +.block-marquee-posts-row__wrapper .card{ + width: var(--marquee-card-width); + margin-right: 1.25rem; + } +.block-marquee-posts-row.is-hovered{ + position: relative; + z-index: 10; +} +/* .marquee-card{ + @apply relative bg-grey-100 p-4; + &--black{ + @apply bg-black; + p, span{ + @apply text-white; + } + } + &__content{ + @apply aspect-square flex flex-col justify-between; + } + .marquee-card-header, .marquee-card-main{ + @apply relative z-10; + } + .marquee-card-header{ + @apply flex justify-between text-grey-300; + } + .marquee-card-date{ + @apply text-size-sm; + } + .marquee-card-title{ + @apply text-size-md font-bold; + } + .marquee-card-bg{ + @apply absolute left-0 top-0 w-full h-full scale-125 origin-center opacity-0 pointer-events-none bg-black; + img{ + @apply w-full h-full bg-cover z-10 opacity-75; + } + } + &--has-background{ + &.is-hovered{ + @apply bg-transparent z-20; + p, span{ + @apply text-accent-200; + } + .marquee-card-bg{ + @apply opacity-100; + } + &::after{ + content: ''; + @apply w-full h-full border border-accent-200 absolute left-0 top-0; + } + } + } + &--has-keyword{ + .marquee-card-keyword{ + font-size: calc(70vw / var(--marquee-card-keyword-chars)); + @apply absolute top-[50%] left-[50%] translate-y-[-50%] translate-x-[-50%] opacity-0 pointer-events-none text-accent-200 whitespace-nowrap z-50; + } + &.is-hovered{ + @apply z-20 bg-white; + .marquee-card-header{ + span{ + @apply text-grey-300; + } + } + .marquee-card-main{ + p, span{ + @apply text-black; + } + } + .marquee-card-keyword{ + @apply opacity-100; + } + &::after{ + content: ''; + @apply w-full h-full border border-grey-200 absolute left-0 top-0; + } + } + } +} */ +.block-marquee-posts-grid{ + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 1.25rem; +} +.menu-mobile{ + pointer-events: none; + visibility: hidden; + position: absolute; + z-index: 30; + margin-left: auto; + width: 100%; + max-width: 48rem; + overflow: hidden; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); + opacity: 0; +} +@media (min-width: 48rem){ + + .menu-mobile{ + min-height: calc(var(--vh) - var(--header-height)); + width: calc((100% - (var(--grid-offset) - var(--grid-gutter) * 2))); + } +} +@media (min-width: 80rem){ + + .menu-mobile{ + display: none; + } +} +.menu-mobile.is-toggled{ + pointer-events: auto; + visibility: visible; + position: relative; + opacity: 1; +} +.menu-mobile nav ul li a{ + display: block; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); + padding-top: 0.375rem; +} +.menu-mobile .menu-mobile__primary{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} +.menu-mobile .menu-mobile__primary ul li{ + position: relative; +} +.menu-mobile .menu-mobile__primary ul li .menu-mobile-accordion-container{ + display: flex; +} +.menu-mobile .menu-mobile__primary ul li .menu-mobile-accordion-container a{ + min-height: 3.125rem; + width: calc(100% - 3.125rem); + display: block; + border-bottom-width: 1px; + border-right-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); + padding-top: 0.875rem; + padding-bottom: 0.625rem; + font-weight: 700; + } +.menu-mobile .menu-mobile__primary ul li .menu-mobile-accordion-container button{ + display: flex; + width: 3.125rem; + flex-shrink: 0; + align-items: flex-start; + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); +} +.menu-mobile .menu-mobile__primary ul li .menu-mobile-accordion-container button svg{ + pointer-events: none; + width: 100%; +} +.menu-mobile .menu-mobile__primary ul li ul{ + display: none; +} +.menu-mobile .menu-mobile__primary ul li ul li a{ + padding-left: calc(var(--grid-gutter) * 6); +} +.menu-mobile .menu-mobile__primary ul li.is-toggled > .menu-mobile-accordion-container button svg{ + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.menu-mobile .menu-mobile__primary ul li.is-toggled > .menu-mobile-accordion-container + ul{ + display: block; + /* li{ + &:last-child{ + a{ + @apply border-b-black; + &:first-child:last-child{ + &::after{ + @apply border-black; + } + } + } + button{ + @apply border-black; + } + } + } */ +} +.menu-mobile .menu-mobile__primary ul:not(.menu-mobile-level-last) > li > .menu-mobile-accordion-container > a:first-child:last-child::after{ + content: ''; + position: absolute; + bottom: 0px; + right: 0px; + display: block; + width: 3.125rem; + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); + } +.menu-mobile .menu-mobile__primary ul.menu-mobile-level-0 > li:not(.is-toggled) > .menu-mobile-accordion-container > a{ + --tw-border-opacity: 1; + border-bottom-color: rgb(0 0 0 / var(--tw-border-opacity)); +} +.menu-mobile .menu-mobile__primary ul.menu-mobile-level-0 > li:not(.is-toggled) > .menu-mobile-accordion-container > a:first-child:last-child::after{ + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} +.menu-mobile .menu-mobile__primary ul.menu-mobile-level-0 > li:not(.is-toggled) > .menu-mobile-accordion-container button{ + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} +.menu-mobile .menu-mobile__primary ul.menu-mobile-level-0 > li.is-toggled > ul > li:last-child > .menu-mobile-accordion-container > a{ + --tw-border-opacity: 1; + border-bottom-color: rgb(0 0 0 / var(--tw-border-opacity)); +} +.menu-mobile .menu-mobile__primary ul.menu-mobile-level-0 > li.is-toggled > ul > li:last-child > .menu-mobile-accordion-container > a:first-child:last-child::after{ + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} +.menu-mobile .menu-mobile__primary ul.menu-mobile-level-0 > li.is-toggled > ul > li:last-child > .menu-mobile-accordion-container button{ + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} +.menu-mobile .menu-mobile__primary ul.menu-mobile-level-last > li > .menu-mobile-accordion-container > a{ + font-weight: 400; +} +.menu-mobile .menu-mobile__primary ul.menu-mobile-level-last > li:last-child > .menu-mobile-accordion-container > a:first-child:last-child::after{ + content: ''; + position: absolute; + bottom: 0px; + right: 0px; + display: block; + width: 3.125rem; + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(211 216 216 / var(--tw-border-opacity)); + } +.menu-mobile__secondary{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + padding-top: 0.625rem; + padding-bottom: 1.25rem; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.post-archive-header{ + margin-top: 8rem; + margin-bottom: 4rem; + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; +} +.post-archive-header nav ul{ + display: flex; +} +.post-archive-header nav ul li a{ + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +@media (min-width: 48rem){ + + .post-archive-header nav ul li a{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +@media (min-width: 80rem){ + + .post-archive-header nav ul li a{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; + } +} +.post-archive-header nav ul li a span{ + margin-left: 0.625rem; + margin-right: 0.25rem; + display: inline-block; + vertical-align: top; + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +.post-archive-header nav ul li.is-active a{ + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} +.post-archive-header nav ul li:not(:last-child){ + margin-right: 1rem; +} +.post-archive-header nav ul li:not(:last-child)::after{ + content: ','; + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; + } +@media (min-width: 48rem){ + + .post-archive-header nav ul li:not(:last-child)::after{ + font-size: 26px; + font-size: 1.625rem; + line-height: 35px; + line-height: 2.1875rem; + } +} +@media (min-width: 80rem){ + + .post-archive-header nav ul li:not(:last-child)::after{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; + } +} +.post-archive-header__description{ + margin-top: 0.5vw; + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; + } +.post-archive-posts{ + margin-bottom: 10rem; +} +.secondary-nav-trigger{ + display: block; + height: 1px; + width: 100%; + background-color: transparent; +} +.secondary-nav{ + transition: top .5s ease, opacity .2s ease; + position: fixed; + top: var(--header-height); + z-index: 30; + display: flex; + width: 100vw; + align-items: center; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + opacity: 0; +} +@media (min-width: 62rem){ + + .secondary-nav{ + top: 0px; + } +} +.secondary-nav::before{ + content: ''; + width: calc(100vw - var(--grid-gutter)*4); + } +@media (min-width: 48rem){ +.secondary-nav::before{ + width: calc(100vw - var(--grid-gutter)*2 - var(--grid-offset)); + } + } +.secondary-nav::before{ + position: absolute; + top: 0px; + left: calc(var(--grid-gutter) * 2); + height: 1px; + --tw-bg-opacity: 1; + background-color: rgb(211 216 216 / var(--tw-bg-opacity)); +} +@media (min-width: 48rem){ + + .secondary-nav::before{ + left: var(--grid-offset); + } +} +@media (min-width: 62rem){ + + .secondary-nav::before{ + display: none; + } +} +.secondary-nav::after{ + content: ''; + background: rgb(255,255,255); + background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 80%); + pointer-events: none; + position: absolute; + right: 0px; + height: 100%; + width: 3rem; + } +.secondary-nav ul{ + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); + } +@media (min-width: 48rem){ +.secondary-nav ul{ + padding-left: var(--grid-offset); + padding-right: var(--secondary-nav-button-width) + } + } +.secondary-nav ul{ + display: flex; + overflow: auto; + white-space: nowrap; + -ms-overflow-style: none; + scrollbar-width: none; +} +/* IE and Edge */ +/* Firefox */ +.secondary-nav ul::-webkit-scrollbar { + display: none; + } +.secondary-nav ul{ + display: flex; + height: 3.125rem; + align-items: center; +} +@media (min-width: 80rem){ + + .secondary-nav ul{ + height: 3.75rem; + } +} +.secondary-nav ul li a{ + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; +} +.secondary-nav ul li:not(:last-child){ + margin-right: 1.875rem; +} +.secondary-nav > a{ + position: absolute; + right: -0px; + top: 0px; + z-index: 10; + display: none; + height: 100%; + align-items: center; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); + font-size: 16px; + font-size: 1rem; + line-height: 25px; + line-height: 1.5625rem; +} +@media (min-width: 62rem){ + + .secondary-nav > a{ + display: flex; + } +} +.secondary-nav > a span{ + display: inline-flex; + align-items: center; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + padding-right: calc(var(--grid-gutter) * 2); +} +.secondary-nav > a span::after{ + content: ''; + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25 25'%3E%3Cpath d='m14.333 8 4.167 4.5m0 0L14.333 17m4.167-4.5H6' stroke='%23A3ADAD'/%3E%3C/svg%3E"); + background-size: 100%; + margin-left: 0.625rem; + aspect-ratio: 1 / 1; + width: 1.875rem; + background-position: center; + background-repeat: no-repeat; + } +.secondary-nav > a::before{ + content: ''; + background: rgb(255,255,255); + background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 80%); + height: 100%; + width: 4rem; + } +.secondary-nav.is-stacked{ + top: var(--header-height); +} +.secondary-nav.is-visible{ + opacity: 1; +} +.tease-wrapper{ + display: grid; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + row-gap: 3.5rem; +} +@media (min-width: 48rem){ + + .tease-wrapper{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} +@media (min-width: 62rem){ + + .tease-wrapper{ + grid-template-columns: repeat(3, minmax(0, 1fr)); + } +} +@media (min-width: 80rem){ + + .tease-wrapper{ + grid-template-columns: repeat(4, minmax(0, 1fr)); + } +} +/* @TODO */ +@media not all and (min-width: 80rem){ + + @media (min-width: 62rem){ + + .tease-wrapper .tease:nth-child(4){ + display: none; + } + } +} +.tease__title{ + margin-bottom: var(--size-ratio-base); + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; +} +@media (min-width: 48rem){ + + .tease__title{ + font-size: 40px; + font-size: 2.5rem; + line-height: 50px; + line-height: 3.125rem; + } +} +@media (min-width: 80rem){ + + .tease__title{ + font-size: 44px; + font-size: 2.75rem; + line-height: 55px; + line-height: 3.4375rem; + } +} +.tease__img{ + margin-bottom: var(--size-ratio-base); + aspect-ratio: 3/2; +} +.tease__img img{ + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; + -o-object-position: top; + object-position: top; +} +/* @todo */ +.tease--sm{ + position: relative; + aspect-ratio: 1 / 1; + overflow: hidden; +} +.tease--sm .tease__img{ + transition: height .2s ease; + position: absolute; + top: 0px; + left: 0px; + width: 100%; + --tw-bg-opacity: 1; + background-color: rgb(237 242 242 / var(--tw-bg-opacity)); + } +.tease--sm .tease__main .tease-main-header{ + display: flex; + justify-content: space-between; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + --tw-text-opacity: 1; + color: rgb(163 173 173 / var(--tw-text-opacity)); + font-size: 13px; + font-size: 0.8125rem; + line-height: 20px; + line-height: 1.25rem; +} +.tease--sm .tease__main .tease-main-title{ + font-weight: 700; + font-size: 20px; + font-size: 1.25rem; + line-height: 30px; + line-height: 1.875rem; +} +.tease--sm:hover .tease__img{ + height: 100% !important; +} +.tease--sm:hover .tease__main{ + } +.archive-degrees-degree{ + margin-bottom: 4.5rem; +} +.archive-degrees-degree h2{ + font-size: 30px; + font-size: 1.875rem; + line-height: 40px; + line-height: 2.5rem; +} +@media (min-width: 48rem){ + + .archive-degrees-degree h2{ + font-size: 40px; + font-size: 2.5rem; + line-height: 50px; + line-height: 3.125rem; + } +} +@media (min-width: 80rem){ + + .archive-degrees-degree h2{ + font-size: 58px; + font-size: 3.625rem; + line-height: 70px; + line-height: 4.375rem; + } +} +.archive-degrees-degree .block-grid-list{ + margin-top: 4.5rem; +} +.archive-degrees-degree a.block-link{ + margin-top: 3.125rem; +} +.course-module{ + margin-top: 4.5rem; +} +.course-module + .course-module{ + margin-top: 3.125rem; +} +.course-module__title{ + margin-bottom: 1.125rem; + font-weight: 700; + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .course-module__title{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.course-module__title{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .course-module__title{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .course-module__title{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.course-module__title :where(.grid-container),.course-module__title :where(.block-container), .block-container :where(.course-module__title){ + margin-left: 0px; + margin-left: 0; + margin-right: 0px; + margin-right: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} + .block-container :where(.course-module__title){ + margin-left: 0px; + margin-left: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +.degree-cols{ + /* grid-auto-rows: auto; + @apply grid-container grid lg:grid-cols-2 gap-x-[calc(var(--grid-gutter)*2)] pt-[var(--grid-offset)]; */ + margin-top: 0px; + margin-top: 0; + -moz-column-gap: calc(var(--grid-gutter) * 2); + column-gap: calc(var(--grid-gutter) * 2); + width: 100%; + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); +} +@media (min-width: 48rem){ + + .degree-cols{ + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; + } +} +.degree-cols{ + margin-left: var(--grid-offset); + } +@media (min-width: 48rem){ + .degree-cols{ + width: calc(100vw - var(--grid-offset) - var(--grid-gutter)*2) + } + } +@media (min-width: 120rem){ + .degree-cols{ + max-width: 120rem; + margin-left: max(var(--grid-offset), calc((100vw - 120rem)/2)) + } + } +.degree-cols :where(.grid-container),.degree-cols :where(.block-container), .block-container :where(.degree-cols){ + margin-left: 0px; + margin-left: 0; + margin-right: 0px; + margin-right: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} + .block-container :where(.degree-cols){ + margin-left: 0px; + margin-left: 0; + width: 100%; + padding-left: 0px; + padding-left: 0; + padding-right: 0px; + padding-right: 0; +} +@media (min-width: 62rem){ + + .degree-cols{ + display: flex; + } + + .degree-cols > *{ + width: 50%; + } + + .degree-cols__col{ + order: 2; + } +} +.degree-cols__col:not(.course-cols__col-info){ + margin-bottom: 4.5rem; +} +@media (min-width: 62rem){ + + .degree-cols__col:not(.course-cols__col-info){ + margin-bottom: 0px; + margin-bottom: 0; + } +} +.degree-cols__col-info{ + top: 4rem; + height: 100%; +} +@media (min-width: 62rem){ + + .degree-cols__col-info{ + order: 1; + } +} +@media (min-width: 80rem){ + + .degree-cols__col-info{ + position: sticky; + } +} +.degree-cols__col-info .block-grid-list{ + margin-bottom: 3.125rem; +} +body.single-degree section{ + scroll-margin-top: var(--secondary-nav-height); + } +@media (min-width: 62rem){ + + .lg\:block{ + display: block; + } + + .lg\:hidden{ + display: none; + } + + .lg\:w-3\/4{ + width: 75%; + } + + .lg\:w-1\/2{ + width: 50%; + } +} \ No newline at end of file diff --git a/build/assets/fonts/standard-bold-italic-webfont.eot b/build/assets/fonts/standard-bold-italic-webfont.eot new file mode 100755 index 0000000..d2d33b9 --- /dev/null +++ b/build/assets/fonts/standard-bold-italic-webfont.eot Binary files differ diff --git a/build/assets/fonts/standard-bold-italic-webfont.ttf b/build/assets/fonts/standard-bold-italic-webfont.ttf new file mode 100755 index 0000000..7bb1e33 --- /dev/null +++ b/build/assets/fonts/standard-bold-italic-webfont.ttf Binary files differ diff --git a/build/assets/fonts/standard-bold-italic-webfont.woff b/build/assets/fonts/standard-bold-italic-webfont.woff new file mode 100755 index 0000000..57d9ef5 --- /dev/null +++ b/build/assets/fonts/standard-bold-italic-webfont.woff Binary files differ diff --git a/build/assets/fonts/standard-bold-italic-webfont.woff2 b/build/assets/fonts/standard-bold-italic-webfont.woff2 new file mode 100755 index 0000000..bc6c49c --- /dev/null +++ b/build/assets/fonts/standard-bold-italic-webfont.woff2 Binary files differ diff --git a/build/assets/fonts/standard-bold-webfont.eot b/build/assets/fonts/standard-bold-webfont.eot new file mode 100755 index 0000000..4fc3f04 --- /dev/null +++ b/build/assets/fonts/standard-bold-webfont.eot Binary files differ diff --git a/build/assets/fonts/standard-bold-webfont.ttf b/build/assets/fonts/standard-bold-webfont.ttf new file mode 100755 index 0000000..387901b --- /dev/null +++ b/build/assets/fonts/standard-bold-webfont.ttf Binary files differ diff --git a/build/assets/fonts/standard-bold-webfont.woff b/build/assets/fonts/standard-bold-webfont.woff new file mode 100755 index 0000000..7d85e52 --- /dev/null +++ b/build/assets/fonts/standard-bold-webfont.woff Binary files differ diff --git a/build/assets/fonts/standard-bold-webfont.woff2 b/build/assets/fonts/standard-bold-webfont.woff2 new file mode 100755 index 0000000..2a34b70 --- /dev/null +++ b/build/assets/fonts/standard-bold-webfont.woff2 Binary files differ diff --git a/build/assets/fonts/standard-book-italic-webfont.eot b/build/assets/fonts/standard-book-italic-webfont.eot new file mode 100755 index 0000000..18b2bcc --- /dev/null +++ b/build/assets/fonts/standard-book-italic-webfont.eot Binary files differ diff --git a/build/assets/fonts/standard-book-italic-webfont.ttf b/build/assets/fonts/standard-book-italic-webfont.ttf new file mode 100755 index 0000000..9f8c229 --- /dev/null +++ b/build/assets/fonts/standard-book-italic-webfont.ttf Binary files differ diff --git a/build/assets/fonts/standard-book-italic-webfont.woff b/build/assets/fonts/standard-book-italic-webfont.woff new file mode 100755 index 0000000..c8fd81c --- /dev/null +++ b/build/assets/fonts/standard-book-italic-webfont.woff Binary files differ diff --git a/build/assets/fonts/standard-book-italic-webfont.woff2 b/build/assets/fonts/standard-book-italic-webfont.woff2 new file mode 100755 index 0000000..e7da342 --- /dev/null +++ b/build/assets/fonts/standard-book-italic-webfont.woff2 Binary files differ diff --git a/build/assets/fonts/standard-book-webfont.eot b/build/assets/fonts/standard-book-webfont.eot new file mode 100755 index 0000000..8772c38 --- /dev/null +++ b/build/assets/fonts/standard-book-webfont.eot Binary files differ diff --git a/build/assets/fonts/standard-book-webfont.ttf b/build/assets/fonts/standard-book-webfont.ttf new file mode 100755 index 0000000..cd01fe5 --- /dev/null +++ b/build/assets/fonts/standard-book-webfont.ttf Binary files differ diff --git a/build/assets/fonts/standard-book-webfont.woff b/build/assets/fonts/standard-book-webfont.woff new file mode 100755 index 0000000..ba0e4a3 --- /dev/null +++ b/build/assets/fonts/standard-book-webfont.woff Binary files differ diff --git a/build/assets/fonts/standard-book-webfont.woff2 b/build/assets/fonts/standard-book-webfont.woff2 new file mode 100755 index 0000000..7926e8d --- /dev/null +++ b/build/assets/fonts/standard-book-webfont.woff2 Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-1.jpeg b/build/assets/img/blocks/hero-banner/hero-1.jpeg new file mode 100644 index 0000000..765ed6d --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-1.jpeg Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-1.webp b/build/assets/img/blocks/hero-banner/hero-1.webp new file mode 100644 index 0000000..e37db5a --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-1.webp Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-2.jpeg b/build/assets/img/blocks/hero-banner/hero-2.jpeg new file mode 100644 index 0000000..43ec913 --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-2.jpeg Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-2.webp b/build/assets/img/blocks/hero-banner/hero-2.webp new file mode 100644 index 0000000..b706540 --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-2.webp Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-3.jpeg b/build/assets/img/blocks/hero-banner/hero-3.jpeg new file mode 100644 index 0000000..7263c01 --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-3.jpeg Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-3.webp b/build/assets/img/blocks/hero-banner/hero-3.webp new file mode 100644 index 0000000..c85be17 --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-3.webp Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-4.jpeg b/build/assets/img/blocks/hero-banner/hero-4.jpeg new file mode 100644 index 0000000..8963e5c --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-4.jpeg Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-4.webp b/build/assets/img/blocks/hero-banner/hero-4.webp new file mode 100644 index 0000000..9a59f62 --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-4.webp Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-banner-architettura.jpg b/build/assets/img/blocks/hero-banner/hero-banner-architettura.jpg new file mode 100644 index 0000000..bad64f7 --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-banner-architettura.jpg Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-banner-architettura.webp b/build/assets/img/blocks/hero-banner/hero-banner-architettura.webp new file mode 100644 index 0000000..f3ce73e --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-banner-architettura.webp Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-banner-arti.jpg b/build/assets/img/blocks/hero-banner/hero-banner-arti.jpg new file mode 100644 index 0000000..49f286c --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-banner-arti.jpg Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-banner-arti.webp b/build/assets/img/blocks/hero-banner/hero-banner-arti.webp new file mode 100644 index 0000000..35e75ed --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-banner-arti.webp Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-banner-design.jpg b/build/assets/img/blocks/hero-banner/hero-banner-design.jpg new file mode 100644 index 0000000..0ad00af --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-banner-design.jpg Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-banner-design.webp b/build/assets/img/blocks/hero-banner/hero-banner-design.webp new file mode 100644 index 0000000..45eb3ab --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-banner-design.webp Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-banner-territorio.jpg b/build/assets/img/blocks/hero-banner/hero-banner-territorio.jpg new file mode 100644 index 0000000..36bac19 --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-banner-territorio.jpg Binary files differ diff --git a/build/assets/img/blocks/hero-banner/hero-banner-territorio.webp b/build/assets/img/blocks/hero-banner/hero-banner-territorio.webp new file mode 100644 index 0000000..6acb4f7 --- /dev/null +++ b/build/assets/img/blocks/hero-banner/hero-banner-territorio.webp Binary files differ diff --git a/build/assets/img/blocks/images-grid/gallery-1.jpeg b/build/assets/img/blocks/images-grid/gallery-1.jpeg new file mode 100644 index 0000000..372e21c --- /dev/null +++ b/build/assets/img/blocks/images-grid/gallery-1.jpeg Binary files differ diff --git a/build/assets/img/blocks/images-grid/gallery-1.webp b/build/assets/img/blocks/images-grid/gallery-1.webp new file mode 100644 index 0000000..fa334be --- /dev/null +++ b/build/assets/img/blocks/images-grid/gallery-1.webp Binary files differ diff --git a/build/assets/img/blocks/images-grid/gallery-2.jpeg b/build/assets/img/blocks/images-grid/gallery-2.jpeg new file mode 100644 index 0000000..ce7acf9 --- /dev/null +++ b/build/assets/img/blocks/images-grid/gallery-2.jpeg Binary files differ diff --git a/build/assets/img/blocks/images-grid/gallery-2.webp b/build/assets/img/blocks/images-grid/gallery-2.webp new file mode 100644 index 0000000..a294e26 --- /dev/null +++ b/build/assets/img/blocks/images-grid/gallery-2.webp Binary files differ diff --git a/build/assets/img/blocks/images-grid/gallery-3.jpeg b/build/assets/img/blocks/images-grid/gallery-3.jpeg new file mode 100644 index 0000000..f4a9f41 --- /dev/null +++ b/build/assets/img/blocks/images-grid/gallery-3.jpeg Binary files differ diff --git a/build/assets/img/blocks/images-grid/gallery-3.webp b/build/assets/img/blocks/images-grid/gallery-3.webp new file mode 100644 index 0000000..c462dd0 --- /dev/null +++ b/build/assets/img/blocks/images-grid/gallery-3.webp Binary files differ diff --git a/build/assets/img/blocks/images-grid/gallery-4.jpeg b/build/assets/img/blocks/images-grid/gallery-4.jpeg new file mode 100644 index 0000000..13ca777 --- /dev/null +++ b/build/assets/img/blocks/images-grid/gallery-4.jpeg Binary files differ diff --git a/build/assets/img/blocks/images-grid/gallery-4.webp b/build/assets/img/blocks/images-grid/gallery-4.webp new file mode 100644 index 0000000..aeb8720 --- /dev/null +++ b/build/assets/img/blocks/images-grid/gallery-4.webp Binary files differ diff --git a/build/assets/img/blocks/images-grid/gallery-5.jpeg b/build/assets/img/blocks/images-grid/gallery-5.jpeg new file mode 100644 index 0000000..fd086eb --- /dev/null +++ b/build/assets/img/blocks/images-grid/gallery-5.jpeg Binary files differ diff --git a/build/assets/img/blocks/images-grid/gallery-5.webp b/build/assets/img/blocks/images-grid/gallery-5.webp new file mode 100644 index 0000000..daa4a90 --- /dev/null +++ b/build/assets/img/blocks/images-grid/gallery-5.webp Binary files differ diff --git a/build/assets/img/blocks/images-grid/img-1.jpg b/build/assets/img/blocks/images-grid/img-1.jpg new file mode 100644 index 0000000..d0a5b90 --- /dev/null +++ b/build/assets/img/blocks/images-grid/img-1.jpg Binary files differ diff --git a/build/assets/img/blocks/images-grid/img-1.webp b/build/assets/img/blocks/images-grid/img-1.webp new file mode 100644 index 0000000..8c36d54 --- /dev/null +++ b/build/assets/img/blocks/images-grid/img-1.webp Binary files differ diff --git a/build/assets/img/blocks/images-grid/img-2.jpg b/build/assets/img/blocks/images-grid/img-2.jpg new file mode 100644 index 0000000..fada8cd --- /dev/null +++ b/build/assets/img/blocks/images-grid/img-2.jpg Binary files differ diff --git a/build/assets/img/blocks/images-grid/img-2.webp b/build/assets/img/blocks/images-grid/img-2.webp new file mode 100644 index 0000000..b983d1d --- /dev/null +++ b/build/assets/img/blocks/images-grid/img-2.webp Binary files differ diff --git a/build/assets/img/blocks/images-grid/img-3.jpg b/build/assets/img/blocks/images-grid/img-3.jpg new file mode 100644 index 0000000..083f65c --- /dev/null +++ b/build/assets/img/blocks/images-grid/img-3.jpg Binary files differ diff --git a/build/assets/img/blocks/images-grid/img-3.webp b/build/assets/img/blocks/images-grid/img-3.webp new file mode 100644 index 0000000..a01a6b6 --- /dev/null +++ b/build/assets/img/blocks/images-grid/img-3.webp Binary files differ diff --git a/build/assets/img/blocks/images-grid/img-4.jpg b/build/assets/img/blocks/images-grid/img-4.jpg new file mode 100644 index 0000000..0c090b1 --- /dev/null +++ b/build/assets/img/blocks/images-grid/img-4.jpg Binary files differ diff --git a/build/assets/img/blocks/images-grid/img-4.webp b/build/assets/img/blocks/images-grid/img-4.webp new file mode 100644 index 0000000..bd120f9 --- /dev/null +++ b/build/assets/img/blocks/images-grid/img-4.webp Binary files differ diff --git a/build/assets/img/blocks/images-grid/img-5.jpg b/build/assets/img/blocks/images-grid/img-5.jpg new file mode 100644 index 0000000..fbd66bd --- /dev/null +++ b/build/assets/img/blocks/images-grid/img-5.jpg Binary files differ diff --git a/build/assets/img/blocks/images-grid/img-5.webp b/build/assets/img/blocks/images-grid/img-5.webp new file mode 100644 index 0000000..63ae7e1 --- /dev/null +++ b/build/assets/img/blocks/images-grid/img-5.webp Binary files differ diff --git a/build/assets/img/icons/chevron-down.svg b/build/assets/img/icons/chevron-down.svg new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/img/icons/chevron-down.svg diff --git a/build/assets/img/icons/chevron.svg b/build/assets/img/icons/chevron.svg new file mode 100644 index 0000000..73cb48e --- /dev/null +++ b/build/assets/img/icons/chevron.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/build/assets/img/icons/close.svg b/build/assets/img/icons/close.svg new file mode 100644 index 0000000..d75a33b --- /dev/null +++ b/build/assets/img/icons/close.svg @@ -0,0 +1 @@ + diff --git a/build/assets/img/icons/search.svg b/build/assets/img/icons/search.svg new file mode 100644 index 0000000..62cfb00 --- /dev/null +++ b/build/assets/img/icons/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/build/assets/img/logo.svg b/build/assets/img/logo.svg new file mode 100644 index 0000000..7f114d2 --- /dev/null +++ b/build/assets/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/build/assets/img/post_type/corsi/Image-1.jpg b/build/assets/img/post_type/corsi/Image-1.jpg new file mode 100644 index 0000000..f3b268d --- /dev/null +++ b/build/assets/img/post_type/corsi/Image-1.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/Image-1.webp b/build/assets/img/post_type/corsi/Image-1.webp new file mode 100644 index 0000000..91c6f40 --- /dev/null +++ b/build/assets/img/post_type/corsi/Image-1.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/Image-2.jpg b/build/assets/img/post_type/corsi/Image-2.jpg new file mode 100644 index 0000000..5bda009 --- /dev/null +++ b/build/assets/img/post_type/corsi/Image-2.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/Image-2.webp b/build/assets/img/post_type/corsi/Image-2.webp new file mode 100644 index 0000000..f27c199 --- /dev/null +++ b/build/assets/img/post_type/corsi/Image-2.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/Image-3.jpg b/build/assets/img/post_type/corsi/Image-3.jpg new file mode 100644 index 0000000..dbad894 --- /dev/null +++ b/build/assets/img/post_type/corsi/Image-3.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/Image-3.webp b/build/assets/img/post_type/corsi/Image-3.webp new file mode 100644 index 0000000..b2c5078 --- /dev/null +++ b/build/assets/img/post_type/corsi/Image-3.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/Image-4.jpg b/build/assets/img/post_type/corsi/Image-4.jpg new file mode 100644 index 0000000..ef52c95 --- /dev/null +++ b/build/assets/img/post_type/corsi/Image-4.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/Image-4.webp b/build/assets/img/post_type/corsi/Image-4.webp new file mode 100644 index 0000000..1ba3fd9 --- /dev/null +++ b/build/assets/img/post_type/corsi/Image-4.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/Image.jpg b/build/assets/img/post_type/corsi/Image.jpg new file mode 100644 index 0000000..fb6972f --- /dev/null +++ b/build/assets/img/post_type/corsi/Image.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/Image.webp b/build/assets/img/post_type/corsi/Image.webp new file mode 100644 index 0000000..9115e1f --- /dev/null +++ b/build/assets/img/post_type/corsi/Image.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-2.jpg b/build/assets/img/post_type/corsi/architettura-2.jpg new file mode 100644 index 0000000..ad15def --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-2.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-2.webp b/build/assets/img/post_type/corsi/architettura-2.webp new file mode 100644 index 0000000..c38d3c2 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-2.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-3.jpg b/build/assets/img/post_type/corsi/architettura-3.jpg new file mode 100644 index 0000000..e660e00 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-3.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-3.webp b/build/assets/img/post_type/corsi/architettura-3.webp new file mode 100644 index 0000000..83a90eb --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-3.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-4.jpg b/build/assets/img/post_type/corsi/architettura-4.jpg new file mode 100644 index 0000000..1cb6a5c --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-4.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-4.webp b/build/assets/img/post_type/corsi/architettura-4.webp new file mode 100644 index 0000000..369f7e4 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-4.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-5.jpg b/build/assets/img/post_type/corsi/architettura-5.jpg new file mode 100644 index 0000000..b4ff2a9 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-5.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-5.webp b/build/assets/img/post_type/corsi/architettura-5.webp new file mode 100644 index 0000000..f2ae467 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-5.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-6.jpg b/build/assets/img/post_type/corsi/architettura-6.jpg new file mode 100644 index 0000000..4cd9758 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-6.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-6.webp b/build/assets/img/post_type/corsi/architettura-6.webp new file mode 100644 index 0000000..5c11bc0 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-6.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-7.jpg b/build/assets/img/post_type/corsi/architettura-7.jpg new file mode 100644 index 0000000..e983754 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-7.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-7.webp b/build/assets/img/post_type/corsi/architettura-7.webp new file mode 100644 index 0000000..c6307d5 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-7.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-8.jpg b/build/assets/img/post_type/corsi/architettura-8.jpg new file mode 100644 index 0000000..283087d --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-8.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura-8.webp b/build/assets/img/post_type/corsi/architettura-8.webp new file mode 100644 index 0000000..9d4dc40 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura-8.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura.jpg b/build/assets/img/post_type/corsi/architettura.jpg new file mode 100644 index 0000000..93a74aa --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/architettura.webp b/build/assets/img/post_type/corsi/architettura.webp new file mode 100644 index 0000000..fc3cd84 --- /dev/null +++ b/build/assets/img/post_type/corsi/architettura.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-1.jpg b/build/assets/img/post_type/corsi/design-1.jpg new file mode 100644 index 0000000..dd064d3 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-1.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-1.webp b/build/assets/img/post_type/corsi/design-1.webp new file mode 100644 index 0000000..486d259 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-1.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-2.jpg b/build/assets/img/post_type/corsi/design-2.jpg new file mode 100644 index 0000000..58f678f --- /dev/null +++ b/build/assets/img/post_type/corsi/design-2.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-2.webp b/build/assets/img/post_type/corsi/design-2.webp new file mode 100644 index 0000000..b607134 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-2.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-3.jpg b/build/assets/img/post_type/corsi/design-3.jpg new file mode 100644 index 0000000..1021934 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-3.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-3.webp b/build/assets/img/post_type/corsi/design-3.webp new file mode 100644 index 0000000..4ab924f --- /dev/null +++ b/build/assets/img/post_type/corsi/design-3.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-4.jpg b/build/assets/img/post_type/corsi/design-4.jpg new file mode 100644 index 0000000..fb9e3cb --- /dev/null +++ b/build/assets/img/post_type/corsi/design-4.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-4.webp b/build/assets/img/post_type/corsi/design-4.webp new file mode 100644 index 0000000..ac18ad6 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-4.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-5.jpg b/build/assets/img/post_type/corsi/design-5.jpg new file mode 100644 index 0000000..f9da44a --- /dev/null +++ b/build/assets/img/post_type/corsi/design-5.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-5.webp b/build/assets/img/post_type/corsi/design-5.webp new file mode 100644 index 0000000..3e6358c --- /dev/null +++ b/build/assets/img/post_type/corsi/design-5.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-c-1.jpg b/build/assets/img/post_type/corsi/design-c-1.jpg new file mode 100644 index 0000000..958747a --- /dev/null +++ b/build/assets/img/post_type/corsi/design-c-1.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-c-1.webp b/build/assets/img/post_type/corsi/design-c-1.webp new file mode 100644 index 0000000..3f0d69f --- /dev/null +++ b/build/assets/img/post_type/corsi/design-c-1.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-c-2.jpg b/build/assets/img/post_type/corsi/design-c-2.jpg new file mode 100644 index 0000000..0dd21fe --- /dev/null +++ b/build/assets/img/post_type/corsi/design-c-2.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-c-2.webp b/build/assets/img/post_type/corsi/design-c-2.webp new file mode 100644 index 0000000..f4b8a70 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-c-2.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-c-3.jpg b/build/assets/img/post_type/corsi/design-c-3.jpg new file mode 100644 index 0000000..0995946 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-c-3.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-c-3.webp b/build/assets/img/post_type/corsi/design-c-3.webp new file mode 100644 index 0000000..44d2ab0 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-c-3.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-c-4.jpg b/build/assets/img/post_type/corsi/design-c-4.jpg new file mode 100644 index 0000000..5a06aee --- /dev/null +++ b/build/assets/img/post_type/corsi/design-c-4.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-c-4.webp b/build/assets/img/post_type/corsi/design-c-4.webp new file mode 100644 index 0000000..a76fb2a --- /dev/null +++ b/build/assets/img/post_type/corsi/design-c-4.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-c-5.jpg b/build/assets/img/post_type/corsi/design-c-5.jpg new file mode 100644 index 0000000..822ba6b --- /dev/null +++ b/build/assets/img/post_type/corsi/design-c-5.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-c-5.webp b/build/assets/img/post_type/corsi/design-c-5.webp new file mode 100644 index 0000000..eed4aa4 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-c-5.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-lab.jpg b/build/assets/img/post_type/corsi/design-lab.jpg new file mode 100644 index 0000000..4530b7c --- /dev/null +++ b/build/assets/img/post_type/corsi/design-lab.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-lab.webp b/build/assets/img/post_type/corsi/design-lab.webp new file mode 100644 index 0000000..f15d343 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-lab.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-moda-1.jpg b/build/assets/img/post_type/corsi/design-moda-1.jpg new file mode 100644 index 0000000..4de85d1 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-moda-1.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-moda-1.webp b/build/assets/img/post_type/corsi/design-moda-1.webp new file mode 100644 index 0000000..be883fa --- /dev/null +++ b/build/assets/img/post_type/corsi/design-moda-1.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-moda-2.jpg b/build/assets/img/post_type/corsi/design-moda-2.jpg new file mode 100644 index 0000000..6ccdc57 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-moda-2.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-moda-2.webp b/build/assets/img/post_type/corsi/design-moda-2.webp new file mode 100644 index 0000000..f7ef86e --- /dev/null +++ b/build/assets/img/post_type/corsi/design-moda-2.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-moda-3.jpg b/build/assets/img/post_type/corsi/design-moda-3.jpg new file mode 100644 index 0000000..16858fe --- /dev/null +++ b/build/assets/img/post_type/corsi/design-moda-3.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-moda-3.webp b/build/assets/img/post_type/corsi/design-moda-3.webp new file mode 100644 index 0000000..188227f --- /dev/null +++ b/build/assets/img/post_type/corsi/design-moda-3.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-moda-4.jpg b/build/assets/img/post_type/corsi/design-moda-4.jpg new file mode 100644 index 0000000..99ee131 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-moda-4.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-moda-4.webp b/build/assets/img/post_type/corsi/design-moda-4.webp new file mode 100644 index 0000000..50286c7 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-moda-4.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-moda-5.jpg b/build/assets/img/post_type/corsi/design-moda-5.jpg new file mode 100644 index 0000000..8ad894c --- /dev/null +++ b/build/assets/img/post_type/corsi/design-moda-5.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-moda-5.webp b/build/assets/img/post_type/corsi/design-moda-5.webp new file mode 100644 index 0000000..cabb969 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-moda-5.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-open-lab.jpg b/build/assets/img/post_type/corsi/design-open-lab.jpg new file mode 100644 index 0000000..537a267 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-open-lab.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-open-lab.webp b/build/assets/img/post_type/corsi/design-open-lab.webp new file mode 100644 index 0000000..2b0d928 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-open-lab.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-prodotto-1.jpg b/build/assets/img/post_type/corsi/design-prodotto-1.jpg new file mode 100644 index 0000000..d93829c --- /dev/null +++ b/build/assets/img/post_type/corsi/design-prodotto-1.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-prodotto-1.webp b/build/assets/img/post_type/corsi/design-prodotto-1.webp new file mode 100644 index 0000000..306f157 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-prodotto-1.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-prodotto-2.jpg b/build/assets/img/post_type/corsi/design-prodotto-2.jpg new file mode 100644 index 0000000..620bf2f --- /dev/null +++ b/build/assets/img/post_type/corsi/design-prodotto-2.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-prodotto-2.webp b/build/assets/img/post_type/corsi/design-prodotto-2.webp new file mode 100644 index 0000000..0112ab5 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-prodotto-2.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-prodotto-3.jpg b/build/assets/img/post_type/corsi/design-prodotto-3.jpg new file mode 100644 index 0000000..ecc6b2c --- /dev/null +++ b/build/assets/img/post_type/corsi/design-prodotto-3.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-prodotto-3.webp b/build/assets/img/post_type/corsi/design-prodotto-3.webp new file mode 100644 index 0000000..b419709 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-prodotto-3.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-prodotto-4.jpg b/build/assets/img/post_type/corsi/design-prodotto-4.jpg new file mode 100644 index 0000000..27471e0 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-prodotto-4.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-prodotto-4.webp b/build/assets/img/post_type/corsi/design-prodotto-4.webp new file mode 100644 index 0000000..eb415ce --- /dev/null +++ b/build/assets/img/post_type/corsi/design-prodotto-4.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design-prodotto-5.jpg b/build/assets/img/post_type/corsi/design-prodotto-5.jpg new file mode 100644 index 0000000..24d9c6e --- /dev/null +++ b/build/assets/img/post_type/corsi/design-prodotto-5.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design-prodotto-5.webp b/build/assets/img/post_type/corsi/design-prodotto-5.webp new file mode 100644 index 0000000..82b8464 --- /dev/null +++ b/build/assets/img/post_type/corsi/design-prodotto-5.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/design.jpg b/build/assets/img/post_type/corsi/design.jpg new file mode 100644 index 0000000..c067ee2 --- /dev/null +++ b/build/assets/img/post_type/corsi/design.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/design.webp b/build/assets/img/post_type/corsi/design.webp new file mode 100644 index 0000000..6054011 --- /dev/null +++ b/build/assets/img/post_type/corsi/design.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/urbanistica-1.jpg b/build/assets/img/post_type/corsi/urbanistica-1.jpg new file mode 100644 index 0000000..b777459 --- /dev/null +++ b/build/assets/img/post_type/corsi/urbanistica-1.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/urbanistica-1.webp b/build/assets/img/post_type/corsi/urbanistica-1.webp new file mode 100644 index 0000000..74e8927 --- /dev/null +++ b/build/assets/img/post_type/corsi/urbanistica-1.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/urbanistica-2.jpg b/build/assets/img/post_type/corsi/urbanistica-2.jpg new file mode 100644 index 0000000..2e10c6b --- /dev/null +++ b/build/assets/img/post_type/corsi/urbanistica-2.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/urbanistica-2.webp b/build/assets/img/post_type/corsi/urbanistica-2.webp new file mode 100644 index 0000000..6aa0d7d --- /dev/null +++ b/build/assets/img/post_type/corsi/urbanistica-2.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/urbanistica-3.jpg b/build/assets/img/post_type/corsi/urbanistica-3.jpg new file mode 100644 index 0000000..684fcaf --- /dev/null +++ b/build/assets/img/post_type/corsi/urbanistica-3.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/urbanistica-3.webp b/build/assets/img/post_type/corsi/urbanistica-3.webp new file mode 100644 index 0000000..5878315 --- /dev/null +++ b/build/assets/img/post_type/corsi/urbanistica-3.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/urbanistica-4.jpg b/build/assets/img/post_type/corsi/urbanistica-4.jpg new file mode 100644 index 0000000..b20a2e2 --- /dev/null +++ b/build/assets/img/post_type/corsi/urbanistica-4.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/urbanistica-4.webp b/build/assets/img/post_type/corsi/urbanistica-4.webp new file mode 100644 index 0000000..87f1c19 --- /dev/null +++ b/build/assets/img/post_type/corsi/urbanistica-4.webp Binary files differ diff --git a/build/assets/img/post_type/corsi/urbanistica-5.jpg b/build/assets/img/post_type/corsi/urbanistica-5.jpg new file mode 100644 index 0000000..d866856 --- /dev/null +++ b/build/assets/img/post_type/corsi/urbanistica-5.jpg Binary files differ diff --git a/build/assets/img/post_type/corsi/urbanistica-5.webp b/build/assets/img/post_type/corsi/urbanistica-5.webp new file mode 100644 index 0000000..53fc6cb --- /dev/null +++ b/build/assets/img/post_type/corsi/urbanistica-5.webp Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-1.jpg b/build/assets/img/post_type/eventi/eventi-1.jpg new file mode 100644 index 0000000..8803544 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-1.jpg Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-1.webp b/build/assets/img/post_type/eventi/eventi-1.webp new file mode 100644 index 0000000..f1000d3 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-1.webp Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-2.jpg b/build/assets/img/post_type/eventi/eventi-2.jpg new file mode 100644 index 0000000..d97c661 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-2.jpg Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-2.webp b/build/assets/img/post_type/eventi/eventi-2.webp new file mode 100644 index 0000000..e7297aa --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-2.webp Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-3.jpg b/build/assets/img/post_type/eventi/eventi-3.jpg new file mode 100644 index 0000000..b6bee7c --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-3.jpg Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-3.webp b/build/assets/img/post_type/eventi/eventi-3.webp new file mode 100644 index 0000000..d8b556c --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-3.webp Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-4.jpg b/build/assets/img/post_type/eventi/eventi-4.jpg new file mode 100644 index 0000000..a66a829 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-4.jpg Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-4.webp b/build/assets/img/post_type/eventi/eventi-4.webp new file mode 100644 index 0000000..28800f0 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-4.webp Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-5.jpg b/build/assets/img/post_type/eventi/eventi-5.jpg new file mode 100644 index 0000000..212e552 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-5.jpg Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-5.webp b/build/assets/img/post_type/eventi/eventi-5.webp new file mode 100644 index 0000000..975360a --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-5.webp Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-attraversamenti.jpeg b/build/assets/img/post_type/eventi/eventi-attraversamenti.jpeg new file mode 100644 index 0000000..a48a1b1 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-attraversamenti.jpeg Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-attraversamenti.webp b/build/assets/img/post_type/eventi/eventi-attraversamenti.webp new file mode 100644 index 0000000..8ceaed7 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-attraversamenti.webp Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-longarone.jpeg b/build/assets/img/post_type/eventi/eventi-longarone.jpeg new file mode 100644 index 0000000..7d8676f --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-longarone.jpeg Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-longarone.webp b/build/assets/img/post_type/eventi/eventi-longarone.webp new file mode 100644 index 0000000..dc261e7 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-longarone.webp Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-venetie-mml.jpeg b/build/assets/img/post_type/eventi/eventi-venetie-mml.jpeg new file mode 100644 index 0000000..6305924 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-venetie-mml.jpeg Binary files differ diff --git a/build/assets/img/post_type/eventi/eventi-venetie-mml.webp b/build/assets/img/post_type/eventi/eventi-venetie-mml.webp new file mode 100644 index 0000000..7549c06 --- /dev/null +++ b/build/assets/img/post_type/eventi/eventi-venetie-mml.webp Binary files differ diff --git a/build/assets/img/post_type/eventi/open-day.jpeg b/build/assets/img/post_type/eventi/open-day.jpeg new file mode 100644 index 0000000..d545326 --- /dev/null +++ b/build/assets/img/post_type/eventi/open-day.jpeg Binary files differ diff --git a/build/assets/img/post_type/eventi/open-day.webp b/build/assets/img/post_type/eventi/open-day.webp new file mode 100644 index 0000000..054481a --- /dev/null +++ b/build/assets/img/post_type/eventi/open-day.webp Binary files differ diff --git a/build/assets/img/post_type/labs/lab-1.jpg b/build/assets/img/post_type/labs/lab-1.jpg new file mode 100644 index 0000000..3447bf5 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-1.jpg Binary files differ diff --git a/build/assets/img/post_type/labs/lab-1.webp b/build/assets/img/post_type/labs/lab-1.webp new file mode 100644 index 0000000..6ae6bbf --- /dev/null +++ b/build/assets/img/post_type/labs/lab-1.webp Binary files differ diff --git a/build/assets/img/post_type/labs/lab-10.jpg b/build/assets/img/post_type/labs/lab-10.jpg new file mode 100644 index 0000000..8582566 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-10.jpg Binary files differ diff --git a/build/assets/img/post_type/labs/lab-10.webp b/build/assets/img/post_type/labs/lab-10.webp new file mode 100644 index 0000000..e543438 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-10.webp Binary files differ diff --git a/build/assets/img/post_type/labs/lab-2.jpg b/build/assets/img/post_type/labs/lab-2.jpg new file mode 100644 index 0000000..642349b --- /dev/null +++ b/build/assets/img/post_type/labs/lab-2.jpg Binary files differ diff --git a/build/assets/img/post_type/labs/lab-2.webp b/build/assets/img/post_type/labs/lab-2.webp new file mode 100644 index 0000000..c0f86e4 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-2.webp Binary files differ diff --git a/build/assets/img/post_type/labs/lab-3.jpg b/build/assets/img/post_type/labs/lab-3.jpg new file mode 100644 index 0000000..51f0f07 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-3.jpg Binary files differ diff --git a/build/assets/img/post_type/labs/lab-3.webp b/build/assets/img/post_type/labs/lab-3.webp new file mode 100644 index 0000000..a216c34 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-3.webp Binary files differ diff --git a/build/assets/img/post_type/labs/lab-4.jpg b/build/assets/img/post_type/labs/lab-4.jpg new file mode 100644 index 0000000..86ee18e --- /dev/null +++ b/build/assets/img/post_type/labs/lab-4.jpg Binary files differ diff --git a/build/assets/img/post_type/labs/lab-4.webp b/build/assets/img/post_type/labs/lab-4.webp new file mode 100644 index 0000000..9faf96b --- /dev/null +++ b/build/assets/img/post_type/labs/lab-4.webp Binary files differ diff --git a/build/assets/img/post_type/labs/lab-5.jpg b/build/assets/img/post_type/labs/lab-5.jpg new file mode 100644 index 0000000..24a1551 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-5.jpg Binary files differ diff --git a/build/assets/img/post_type/labs/lab-5.webp b/build/assets/img/post_type/labs/lab-5.webp new file mode 100644 index 0000000..679a883 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-5.webp Binary files differ diff --git a/build/assets/img/post_type/labs/lab-6.jpg b/build/assets/img/post_type/labs/lab-6.jpg new file mode 100644 index 0000000..c395037 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-6.jpg Binary files differ diff --git a/build/assets/img/post_type/labs/lab-6.webp b/build/assets/img/post_type/labs/lab-6.webp new file mode 100644 index 0000000..7c7bf31 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-6.webp Binary files differ diff --git a/build/assets/img/post_type/labs/lab-7.jpg b/build/assets/img/post_type/labs/lab-7.jpg new file mode 100644 index 0000000..7122428 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-7.jpg Binary files differ diff --git a/build/assets/img/post_type/labs/lab-7.webp b/build/assets/img/post_type/labs/lab-7.webp new file mode 100644 index 0000000..00c6ff2 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-7.webp Binary files differ diff --git a/build/assets/img/post_type/labs/lab-8.jpg b/build/assets/img/post_type/labs/lab-8.jpg new file mode 100644 index 0000000..bf13405 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-8.jpg Binary files differ diff --git a/build/assets/img/post_type/labs/lab-8.webp b/build/assets/img/post_type/labs/lab-8.webp new file mode 100644 index 0000000..da17ca7 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-8.webp Binary files differ diff --git a/build/assets/img/post_type/labs/lab-9.jpg b/build/assets/img/post_type/labs/lab-9.jpg new file mode 100644 index 0000000..965bd17 --- /dev/null +++ b/build/assets/img/post_type/labs/lab-9.jpg Binary files differ diff --git a/build/assets/img/post_type/labs/lab-9.webp b/build/assets/img/post_type/labs/lab-9.webp new file mode 100644 index 0000000..a5950ed --- /dev/null +++ b/build/assets/img/post_type/labs/lab-9.webp Binary files differ diff --git a/build/assets/img/post_type/news/avvisi-1.jpg b/build/assets/img/post_type/news/avvisi-1.jpg new file mode 100644 index 0000000..2767466 --- /dev/null +++ b/build/assets/img/post_type/news/avvisi-1.jpg Binary files differ diff --git a/build/assets/img/post_type/news/avvisi-1.webp b/build/assets/img/post_type/news/avvisi-1.webp new file mode 100644 index 0000000..edcc65c --- /dev/null +++ b/build/assets/img/post_type/news/avvisi-1.webp Binary files differ diff --git a/build/assets/img/post_type/news/avvisi-2.jpg b/build/assets/img/post_type/news/avvisi-2.jpg new file mode 100644 index 0000000..0d36e38 --- /dev/null +++ b/build/assets/img/post_type/news/avvisi-2.jpg Binary files differ diff --git a/build/assets/img/post_type/news/avvisi-2.webp b/build/assets/img/post_type/news/avvisi-2.webp new file mode 100644 index 0000000..7579a0b --- /dev/null +++ b/build/assets/img/post_type/news/avvisi-2.webp Binary files differ diff --git a/build/assets/img/post_type/news/avvisi-3.jpg b/build/assets/img/post_type/news/avvisi-3.jpg new file mode 100644 index 0000000..da64dbd --- /dev/null +++ b/build/assets/img/post_type/news/avvisi-3.jpg Binary files differ diff --git a/build/assets/img/post_type/news/avvisi-3.webp b/build/assets/img/post_type/news/avvisi-3.webp new file mode 100644 index 0000000..6666a80 --- /dev/null +++ b/build/assets/img/post_type/news/avvisi-3.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-1.jpg b/build/assets/img/post_type/news/news-1.jpg new file mode 100644 index 0000000..cceb0ff --- /dev/null +++ b/build/assets/img/post_type/news/news-1.jpg Binary files differ diff --git a/build/assets/img/post_type/news/news-1.webp b/build/assets/img/post_type/news/news-1.webp new file mode 100644 index 0000000..040f1c2 --- /dev/null +++ b/build/assets/img/post_type/news/news-1.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-2.jpg b/build/assets/img/post_type/news/news-2.jpg new file mode 100644 index 0000000..4b2df92 --- /dev/null +++ b/build/assets/img/post_type/news/news-2.jpg Binary files differ diff --git a/build/assets/img/post_type/news/news-2.webp b/build/assets/img/post_type/news/news-2.webp new file mode 100644 index 0000000..b7796f6 --- /dev/null +++ b/build/assets/img/post_type/news/news-2.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-3.jpg b/build/assets/img/post_type/news/news-3.jpg new file mode 100644 index 0000000..e32d2bd --- /dev/null +++ b/build/assets/img/post_type/news/news-3.jpg Binary files differ diff --git a/build/assets/img/post_type/news/news-3.webp b/build/assets/img/post_type/news/news-3.webp new file mode 100644 index 0000000..0cbe745 --- /dev/null +++ b/build/assets/img/post_type/news/news-3.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-4.jpg b/build/assets/img/post_type/news/news-4.jpg new file mode 100644 index 0000000..e23b035 --- /dev/null +++ b/build/assets/img/post_type/news/news-4.jpg Binary files differ diff --git a/build/assets/img/post_type/news/news-4.webp b/build/assets/img/post_type/news/news-4.webp new file mode 100644 index 0000000..8b197bf --- /dev/null +++ b/build/assets/img/post_type/news/news-4.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-5.jpg b/build/assets/img/post_type/news/news-5.jpg new file mode 100644 index 0000000..1809b1b --- /dev/null +++ b/build/assets/img/post_type/news/news-5.jpg Binary files differ diff --git a/build/assets/img/post_type/news/news-5.webp b/build/assets/img/post_type/news/news-5.webp new file mode 100644 index 0000000..6c52fdc --- /dev/null +++ b/build/assets/img/post_type/news/news-5.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-6.jpg b/build/assets/img/post_type/news/news-6.jpg new file mode 100644 index 0000000..c5142bb --- /dev/null +++ b/build/assets/img/post_type/news/news-6.jpg Binary files differ diff --git a/build/assets/img/post_type/news/news-6.webp b/build/assets/img/post_type/news/news-6.webp new file mode 100644 index 0000000..b0aa6ea --- /dev/null +++ b/build/assets/img/post_type/news/news-6.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-biennale.jpeg b/build/assets/img/post_type/news/news-biennale.jpeg new file mode 100644 index 0000000..3ae8529 --- /dev/null +++ b/build/assets/img/post_type/news/news-biennale.jpeg Binary files differ diff --git a/build/assets/img/post_type/news/news-biennale.webp b/build/assets/img/post_type/news/news-biennale.webp new file mode 100644 index 0000000..a23f5de --- /dev/null +++ b/build/assets/img/post_type/news/news-biennale.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-gregotti.jpeg b/build/assets/img/post_type/news/news-gregotti.jpeg new file mode 100644 index 0000000..8f54bc4 --- /dev/null +++ b/build/assets/img/post_type/news/news-gregotti.jpeg Binary files differ diff --git a/build/assets/img/post_type/news/news-gregotti.webp b/build/assets/img/post_type/news/news-gregotti.webp new file mode 100644 index 0000000..f0f3865 --- /dev/null +++ b/build/assets/img/post_type/news/news-gregotti.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-petti.jpeg b/build/assets/img/post_type/news/news-petti.jpeg new file mode 100644 index 0000000..79a4aaa --- /dev/null +++ b/build/assets/img/post_type/news/news-petti.jpeg Binary files differ diff --git a/build/assets/img/post_type/news/news-petti.webp b/build/assets/img/post_type/news/news-petti.webp new file mode 100644 index 0000000..2a31016 --- /dev/null +++ b/build/assets/img/post_type/news/news-petti.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-preiscrizioni.jpeg b/build/assets/img/post_type/news/news-preiscrizioni.jpeg new file mode 100644 index 0000000..c48b780 --- /dev/null +++ b/build/assets/img/post_type/news/news-preiscrizioni.jpeg Binary files differ diff --git a/build/assets/img/post_type/news/news-preiscrizioni.webp b/build/assets/img/post_type/news/news-preiscrizioni.webp new file mode 100644 index 0000000..a710f46 --- /dev/null +++ b/build/assets/img/post_type/news/news-preiscrizioni.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-seoul.png b/build/assets/img/post_type/news/news-seoul.png new file mode 100644 index 0000000..72ea68b --- /dev/null +++ b/build/assets/img/post_type/news/news-seoul.png Binary files differ diff --git a/build/assets/img/post_type/news/news-seoul.webp b/build/assets/img/post_type/news/news-seoul.webp new file mode 100644 index 0000000..b26313a --- /dev/null +++ b/build/assets/img/post_type/news/news-seoul.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-ssibap.jpeg b/build/assets/img/post_type/news/news-ssibap.jpeg new file mode 100644 index 0000000..e7b6d14 --- /dev/null +++ b/build/assets/img/post_type/news/news-ssibap.jpeg Binary files differ diff --git a/build/assets/img/post_type/news/news-ssibap.webp b/build/assets/img/post_type/news/news-ssibap.webp new file mode 100644 index 0000000..d9217c2 --- /dev/null +++ b/build/assets/img/post_type/news/news-ssibap.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-urbanistica.jpeg b/build/assets/img/post_type/news/news-urbanistica.jpeg new file mode 100644 index 0000000..e051ed5 --- /dev/null +++ b/build/assets/img/post_type/news/news-urbanistica.jpeg Binary files differ diff --git a/build/assets/img/post_type/news/news-urbanistica.webp b/build/assets/img/post_type/news/news-urbanistica.webp new file mode 100644 index 0000000..6c24f12 --- /dev/null +++ b/build/assets/img/post_type/news/news-urbanistica.webp Binary files differ diff --git a/build/assets/img/post_type/news/news-ursula.jpeg b/build/assets/img/post_type/news/news-ursula.jpeg new file mode 100644 index 0000000..9d84aa3 --- /dev/null +++ b/build/assets/img/post_type/news/news-ursula.jpeg Binary files differ diff --git a/build/assets/img/post_type/news/news-ursula.webp b/build/assets/img/post_type/news/news-ursula.webp new file mode 100644 index 0000000..4e07dd2 --- /dev/null +++ b/build/assets/img/post_type/news/news-ursula.webp Binary files differ diff --git a/build/assets/js/blocks.js b/build/assets/js/blocks.js new file mode 100644 index 0000000..774455a --- /dev/null +++ b/build/assets/js/blocks.js @@ -0,0 +1,218 @@ +/** + * Scripts for custom blocks and components + */ + +window.addEventListener('load', (event) => { + + /** + * Vars + */ + // DOM elements + const marquees = document.querySelectorAll('.block-marquee-posts-row') + const cards = document.querySelectorAll('.card') + const secondaryNav = document.querySelector('.secondary-nav') + const secondaryNavTrigger = document.querySelector('.secondary-nav-trigger') + const parallaxImages = document.querySelectorAll('[data-banner-scroll-image]') + const teaseItems = document.querySelectorAll('.tease') + + /** + * Marquees + */ + let marqueesCardWidth + if (marquees.length > 0){ + marqueesCardWidth = window.getComputedStyle(marquees[0]).getPropertyValue('--marquee-card-width') + } + + marquees.forEach(marquee => { + + const marqueeSpeed = Number(marquee.getAttribute('data-marquee-row-speed')) + + let marqueePos = 0 + let marqueeIntvl + + //get vars + const items = marquee.getAttribute('data-marquee-row-items') + const wrapper = marquee.querySelector('.block-marquee-posts-row__wrapper') + + //clone cards in marquee + const cards = wrapper.querySelectorAll('.card') + cards.forEach(card => { + wrapper.appendChild(card.cloneNode(true)) + }) + + //calculate wrapper width + wrapper.style.width = `calc(${items*2}*${marqueesCardWidth})` + + marqueeIntvl = setInterval(() => { + if (marqueePos > 50) { + wrapper.style.transform = `translateX(0%)` + marqueePos = 0 + } else { + wrapper.style.transform = `translateX(-${marqueePos}%)` + } + marqueePos = marqueePos+marqueeSpeed + }, 0) + + marquee.addEventListener('mouseover', function(){ + clearInterval(marqueeIntvl) + }) + + marquee.addEventListener('mouseleave', function(){ + marqueeIntvl = setInterval(() => { + if (marqueePos > 50) { + wrapper.style.transform = `translateX(0%)` + marqueePos = 0 + } else { + wrapper.style.transform = `translateX(-${marqueePos}%)` + } + marqueePos = marqueePos+marqueeSpeed + }, 0) + }) + + }) + + /** + * Cards hover effect + */ + cards.forEach(card => { + const marqueeWrapper = card.closest('.block-marquee-posts-row') + card.addEventListener('mouseenter', function(){ + this.classList.add('is-hovered') + if (marqueeWrapper){ + marqueeWrapper.classList.add('is-hovered') + } + }) + card.addEventListener('mouseleave', function(){ + this.classList.remove('is-hovered') + if (marqueeWrapper){ + marqueeWrapper.classList.remove('is-hovered') + } + }) + }) + + /** + * Homepage Hero Banner parallax effect + */ + + document.addEventListener('scroll', function(){ + const scrollPosition = window.scrollY + parallaxImages.forEach(image => { + + const imageSpeed = image.getAttribute('data-banner-scroll-image-parallax-speed') + const imagePos = scrollPosition * imageSpeed + image.style.transform = `translateY(-${imagePos}px)` + + scrollBannerObserver.observe(image) + + }) + }) + + + let scrollBannerObserver = new IntersectionObserver((entries) => { + + entries.forEach(entry => { + + if(entry.isIntersecting && (entry.target.getBoundingClientRect().top > 0)){ + entry.target.classList.add('is-visible') + entry.target.style.opacity = entry.intersectionRatio + } + + }) + + }, + { + rootMargin: "0px 0px 0px 0px", + threshold: [0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1] + }) + + /** + * Tease height transition + */ + function updateTeaseHeight(tease){ + const teaseHeight = tease.clientHeight + const teaseImg = tease.querySelector('.tease__img') + const teaseText = tease.querySelector('.tease__main') + const teaseTextHeight = teaseText.clientHeight + teaseImg.style.height = `${teaseHeight-teaseTextHeight}px` + teaseText.style.marginTop = `${teaseHeight-teaseTextHeight}px` + } + + teaseItems.forEach(tease => { + updateTeaseHeight(tease) + }) + + /** + * Accordion + */ + const accordions = document.querySelectorAll('[data-accordion]') + accordions.forEach(accordion => { + const title = accordion.querySelector('[data-accordion-title]') + const content = accordion.querySelector('[data-accordion-content]') + title.addEventListener('click', function(){ + [...accordions].forEach(item => { item.classList.remove('is-toggled'); item.querySelector('[data-accordion-content]').style.display = 'none'}) + accordion.classList.toggle('is-toggled') + content.style.display = content.style.display == 'none' ? 'block' : 'none'; + }) + }) + + /** + * Secondary Nav + */ + // Get secondary nav height + function getSecondaryNavHeight(){ + document.documentElement.style.setProperty("--secondary-nav-height", `${secondaryNav.clientHeight}px`) + } + + if(secondaryNav !== null) getSecondaryNavHeight() + + let secondaryNavObserver = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if(!entry.isIntersecting){ + secondaryNav.classList.add('is-visible') + } else { + secondaryNav.classList.remove('is-visible') + } + }) + }, + { + threshold: 1, + rootMargin: '-1px 0px 0px 0px' + }) + + if(secondaryNav !== null) secondaryNavObserver.observe(secondaryNavTrigger) + + function getSecondaryNavButtonWidth(){ + const secondaryNavButtonWidth = secondaryNav.querySelector('.secondary-nav__btn').clientWidth + secondaryNav.style.setProperty("--secondary-nav-button-width", `${secondaryNavButtonWidth}px`) + } + if(secondaryNav !== null) getSecondaryNavButtonWidth() + + if(secondaryNav !== null){ + window.addEventListener('scroll', () => { + currentScrollPos = window.scrollY + if (prevScrollPos > 0 && prevScrollPos < currentScrollPos ) { + secondaryNav.classList.remove('is-stacked') + } else if (prevScrollPos >= currentScrollPos) { + secondaryNav.classList.add('is-stacked') + } + }) + } + + /** + * Window resize function callbacks + */ + const resizeHandler = function(){ + + // if secondary nav exists update height and buttons width + if(secondaryNav !== null) getSecondaryNavHeight() + if(secondaryNav !== null) getSecondaryNavButtonWidth() + + //resize tease posts + teaseItems.forEach(tease => { + updateTeaseHeight(tease) + }) + } + + window.addEventListener('resize', resizeHandler) + +}) \ No newline at end of file diff --git a/build/assets/js/blocks/accordion.js b/build/assets/js/blocks/accordion.js new file mode 100644 index 0000000..a2ab3e7 --- /dev/null +++ b/build/assets/js/blocks/accordion.js @@ -0,0 +1,22 @@ +window.addEventListener('load', (event) => { + + const accordions = document.querySelectorAll('[data-accordion]') + + accordions.forEach(accordion => { + const title = accordion.querySelector('[data-accordion-title]') + const content = accordion.querySelector('[data-accordion-content]') + title.addEventListener('click', function(){ + //close all other accordions + accordions.forEach(item => { + if (item != accordion) { + item.classList.remove('is-toggled') + item.querySelector('[data-accordion-content]').style.display = 'none' + } + }) + //open clicked accordion + accordion.classList.toggle('is-toggled') + content.style.display = content.style.display == 'none' ? 'block' : 'none'; + }) + }) + +}) \ No newline at end of file diff --git a/build/assets/js/blocks/carousel.js b/build/assets/js/blocks/carousel.js new file mode 100644 index 0000000..90188c0 --- /dev/null +++ b/build/assets/js/blocks/carousel.js @@ -0,0 +1,46 @@ +window.addEventListener('load', (event) => { + + if (typeof(document.querySelector('.swiper')) == 'undefined' || document.querySelector('.swiper') == null) return + + const swiper = new Swiper('.swiper', { + + loop: true, + effect: 'fade', + + // If we need pagination + pagination: { + el: '.swiper-pagination', + }, + + // Navigation arrows + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + + // And if we need scrollbar + scrollbar: { + el: '.swiper-scrollbar', + } + }) + + const carousels = document.querySelectorAll('.block-carousel') + + function setCarouselImgHeight(carousel){ + const carouselImg = carousel.querySelector('.swiper-slide__img') + let carouselImgHeight = Math.floor(carousel.clientWidth / 1.5) + //set carousel img height + carousel.style.setProperty('--carousel-img-height', `${carouselImgHeight}px`) + } + + carousels.forEach(carousel => { + setCarouselImgHeight(carousel) + }) + + window.addEventListener('resize', function(){ + carousels.forEach(carousel => { + setCarouselImgHeight(carousel) + }) + }) + +}) diff --git a/build/assets/js/blocks/marquee.js b/build/assets/js/blocks/marquee.js new file mode 100644 index 0000000..e8edc02 --- /dev/null +++ b/build/assets/js/blocks/marquee.js @@ -0,0 +1,68 @@ +window.addEventListener('load', (event) => { + + const marquees = document.querySelectorAll('[data-marquee]') + + marquees.forEach(marquee => { + + const container = marquee.querySelector('[data-marquee-container]') + + let itemWidth = window.getComputedStyle(marquee).getPropertyValue('--marquee-item-width') + const itemWidthBase = Number(itemWidth.replace(/vw/g, '')) + const itemsLength = marquee.getAttribute('data-marquee-items') + + const items = container.querySelectorAll('[data-marquee-item]') + + let itemsCloned = 1 + + //clone items in marquee if 100vw / itemsLength less than threshold + if (100 / itemWidthBase < itemsLength) { + items.forEach(item => { + container.appendChild(item.cloneNode(true)) + }) + itemsCloned = 2 + } + + const speed = Number(marquee.getAttribute('data-marquee-speed')) + + let pos = 0 + let intvl + + //get vars + // const items = marquee.getAttribute('data-marquee-items') + + //calculate wrapper width + container.style.width = `calc(${items.length*itemsCloned}*${itemWidth})` + + intvl = setInterval(() => { + if (pos > 50) { + container.style.transform = `translateX(0%)` + pos = 0 + } else { + container.style.transform = `translateX(-${pos}%)` + } + pos = pos+speed + }, 0) + + marquee.addEventListener('mouseover', function(){ + clearInterval(intvl) + }) + + marquee.addEventListener('mouseleave', function(){ + intvl = setInterval(() => { + if (pos > 50) { + container.style.transform = `translateX(0%)` + pos = 0 + } else { + container.style.transform = `translateX(-${pos}%)` + } + pos = pos+speed + }, 0) + }) + + window.addEventListener('resize', function(){ + itemWidth = window.getComputedStyle(marquee).getPropertyValue('--marquee-item-width') + container.style.width = `calc(${items.length*itemsCloned}*${itemWidth})` + }) + + }) +}) \ No newline at end of file diff --git a/build/assets/js/blocks/page-title-banner.js b/build/assets/js/blocks/page-title-banner.js new file mode 100644 index 0000000..0f52ba7 --- /dev/null +++ b/build/assets/js/blocks/page-title-banner.js @@ -0,0 +1,24 @@ +window.addEventListener('load', (event) => { + + const banners = document.querySelectorAll('.block-page-title-banner') + + function setBannerHeight(banner){ + if (window.matchMedia('(min-width: 62rem)').matches) { + //get element top offset + const bannerOffsetTop = banner.offsetTop + //set block height + banner.style.setProperty('--page-title-banner-img-height', `${window.innerHeight-bannerOffsetTop}px`) + } + } + + banners.forEach(banner => { + setBannerHeight(banner) + }) + + window.addEventListener('resize', function(){ + banners.forEach(banner => { + setBannerHeight(banner) + }) + }) + +}) diff --git a/build/assets/js/blocks/secondary-nav.js b/build/assets/js/blocks/secondary-nav.js new file mode 100644 index 0000000..edabc73 --- /dev/null +++ b/build/assets/js/blocks/secondary-nav.js @@ -0,0 +1,70 @@ +window.addEventListener('load', (event) => { + + let currentScrollPos = 0 + let prevScrollPos = 0 + + const secondaryNav = document.querySelector('.secondary-nav') + + if (typeof(secondaryNav) == 'undefined' || secondaryNav == null) return + + const secondaryNavTrigger = document.querySelector('.secondary-nav-trigger') + const secondaryNavLinks = secondaryNav.querySelectorAll('ul li a') + + function getSecondaryNavHeight(){ + document.documentElement.style.setProperty("--secondary-nav-height", `${secondaryNav.clientHeight}px`) + } + + if(secondaryNav !== null) getSecondaryNavHeight() + + let secondaryNavObserver = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if(!entry.isIntersecting && currentScrollPos > entry.target.getBoundingClientRect().top){ + secondaryNav.classList.add('is-visible') + } else { + secondaryNav.classList.remove('is-visible') + } + }) + }, + { + threshold: 1, + rootMargin: '-1px 0px 0px 0px' + }) + + function getSecondaryNavButtonWidth(){ + const secondaryNavButtonWidth = secondaryNav.querySelector('.secondary-nav__btn').clientWidth + secondaryNav.style.setProperty("--secondary-nav-button-width", `${secondaryNavButtonWidth}px`) + } + if(secondaryNav !== null) { + + secondaryNavObserver.observe(secondaryNavTrigger) + + getSecondaryNavButtonWidth() + + window.addEventListener('scroll', () => { + currentScrollPos = window.scrollY + if (prevScrollPos > 0 && prevScrollPos < currentScrollPos && currentScrollPos > window.innerHeight ) { + secondaryNav.classList.remove('is-stacked') + } else if (prevScrollPos >= currentScrollPos) { + secondaryNav.classList.add('is-stacked') + } + prevScrollPos = currentScrollPos + }) + } + + window.addEventListener('resize', function(){ + if(secondaryNav !== null) { + getSecondaryNavButtonWidth() + } + }) + + //smooth scrolling anchor links + secondaryNavLinks.forEach(link => { + link.addEventListener('click', function(e){ + e.preventDefault() + document.querySelector(this.getAttribute('href')).scrollIntoView({ + behavior: 'smooth' + }) + }) + }) + +}) diff --git a/build/assets/js/blocks/tabs.js b/build/assets/js/blocks/tabs.js new file mode 100644 index 0000000..253ba8c --- /dev/null +++ b/build/assets/js/blocks/tabs.js @@ -0,0 +1,22 @@ +window.addEventListener('load', (event) => { + + const tabs = document.querySelectorAll('[data-tabs-container]') + + function toggleTab(container, button){ + [...container.querySelectorAll('[data-tab-target]')].forEach((b)=>{b.classList.remove('is-selected')}); + [...container.querySelectorAll('[data-tab-index]')].forEach((t)=>{t.style.display = 'none'}); + button.classList.add('is-selected') + const target = button.getAttribute('data-tab-target') + container.querySelector(`[data-tab-index="${target}"]`).style.display = 'block'; + + } + + tabs.forEach(tabContainer => { + const tabsButtons = tabContainer.querySelectorAll('[data-tab-target]') + tabsButtons.forEach(button => { + button.addEventListener('click', function(){ + toggleTab(tabContainer, this) + }) + }) + }) +}) \ No newline at end of file diff --git a/build/assets/js/blocks/tease.js b/build/assets/js/blocks/tease.js new file mode 100644 index 0000000..4b0631d --- /dev/null +++ b/build/assets/js/blocks/tease.js @@ -0,0 +1,25 @@ +window.addEventListener('load', (event) => { + + const teaseItems = document.querySelectorAll('.tease') + + function updateTeaseHeight(tease){ + const teaseHeight = tease.clientHeight + const teaseImg = tease.querySelector('.tease__img') + const teaseText = tease.querySelector('.tease__main') + const teaseTextHeight = teaseText.clientHeight + teaseImg.style.height = `${teaseHeight-teaseTextHeight}px` + teaseText.style.marginTop = `${teaseHeight-teaseTextHeight}px` + } + + teaseItems.forEach(tease => { + updateTeaseHeight(tease) + }) + + window.addEventListener('resize', function(){ + teaseItems.forEach(tease => { + updateTeaseHeight(tease) + }) + }) + + +}) \ No newline at end of file diff --git a/build/assets/js/site.js b/build/assets/js/site.js new file mode 100644 index 0000000..2b34d72 --- /dev/null +++ b/build/assets/js/site.js @@ -0,0 +1,445 @@ +import './blocks/accordion.js'; +import './blocks/carousel.js'; +import './blocks/marquee.js'; +import './blocks/page-title-banner.js'; +import './blocks/secondary-nav.js'; +import './blocks/tabs.js'; +import './blocks/tease.js'; + +/** + * Global scripts + */ + +window.addEventListener('load', (event) => { + + /** + * Vars + */ + + //functional + let vh = '100vh' + let currentScrollPos = 0 + let prevScrollPos = 0 + let menuToggledScrollPos + let menuIsOpen = false + let desktopMenuIsOpen = false + let mobileMenuIsOpen = false + + //media query + const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream + const isDesktop = window.matchMedia('(min-width: 80rem)') + + // DOM elements + const body = document.body + const header = document.querySelector('.site-header') + const logo = document.querySelector('.site-logo') + const a11y_ariaexpanded = document.querySelectorAll('[aria-expanded="false"]') + const mainNav = document.getElementById('site-header-main-nav') + const menuItems = document.querySelectorAll('#site-header-main-nav > ul > .menu-item-has-children > a') + const menuBtn = document.getElementById('menu-btn') + const overlay = document.getElementById('overlay') + const menuMobile = document.getElementById('menu-mobile') + const pageWrapper = document.getElementById('site-content-wrapper') + const accordionMenuItems = document.querySelectorAll('[data-toggle-menu-items]') + const footer = document.getElementById('site-footer') + + /** + * Throttle + */ + function throttle(mainFunction, delay) { + let timerFlag = null + return (...args) => { + if (timerFlag === null) { + mainFunction(...args) + timerFlag = setTimeout(() => { + timerFlag = null + }, delay) + } + } + } + + /** + * Check if iOS, then set --vh + */ + if (isIOS && window.matchMedia("(max-width: 1024px)").matches) { + document.documentElement.classList.add('is-ios') + } + + function set100vh() { + // If window size is iPad or smaller, then use JS to set screen height. + if (isIOS && window.matchMedia("(max-width: 1024px)").matches) { + vh = `${window.innerHeight}px` + document.documentElement.style.setProperty("--vh", vh) + } + } + set100vh() + + /** + * WAI-ARIA toggle aria-expanded + */ + function updateAriaExpanded(item){ + const ariaexpanded = item.getAttribute('aria-expanded') + if (ariaexpanded == 'true') { + item.setAttribute('aria-expanded', 'false') + } else { + item.setAttribute('aria-expanded', 'true') + } + } + a11y_ariaexpanded.forEach((item) => { + item.addEventListener('click', function () { + updateAriaExpanded(this) + }) + }) + + + /** + * Get header height + */ + function getHeaderHeight(){ + document.documentElement.style.setProperty("--header-height", `${header.clientHeight}px`) + } + + getHeaderHeight() + + /** + * Hide header if scrolling down, show if scrolling up + */ + + window.addEventListener('scroll', () => { + + currentScrollPos = window.scrollY + + // const currentScrollPos = window.scrollY + + //if you start scrolling add class + if (currentScrollPos > 0 && !menuIsOpen) { + body.classList.add('is-scrolled') + } else{ + body.classList.remove('is-scrolled') + } + + // if scrolling down, hide header and position logo to the left + // if scrolling up, show header and logo in initial position + if (prevScrollPos > 0 && prevScrollPos < currentScrollPos && !menuIsOpen) { + header.classList.add('is-hidden') + logo.classList.add('is-visible') + overlay.classList.remove('is-active') + } else if (prevScrollPos >= currentScrollPos && !menuIsOpen) { + header.classList.remove('is-hidden') + logo.classList.remove('is-visible') + } + + prevScrollPos = currentScrollPos + + }) + + /** + * Menu + */ + + function toggleMenuSharedElements(toggle = true){ + + if (!menuIsOpen) { + body.classList.add('has-menu-toggled') + menuBtn.classList.add('is-active') + menuBtn.classList.add('is-toggled') + overlay.classList.add('is-active') + menuIsOpen = true + } else if (toggle) { + body.classList.remove('has-menu-toggled') + menuBtn.classList.remove('is-active') + menuBtn.classList.remove('is-toggled') + overlay.classList.remove('is-active') + menuIsOpen = false + } + + } + + // when menu is toggled, set margin top based + // on scrolled px and restore scroll after menu is closed + function setScrolledMarginContent(scrolled){ + if (mobileMenuIsOpen || desktopMenuIsOpen) { + pageWrapper.style.marginTop = 0 + document.body.scrollTop = menuToggledScrollPos + document.body.scrollTop = menuToggledScrollPos + document.documentElement.scrollTop = menuToggledScrollPos + } else { + pageWrapper.style.marginTop = `-${scrolled}px` + } + menuToggledScrollPos = scrolled + } + + function toggleMobileMenu(forceClosing = null){ + toggleMenuSharedElements() + if (forceClosing) { + menuMobile.classList.remove('is-toggled') + } else { + menuMobile.classList.toggle('is-toggled') + // if (menuIsOpen) { + // menuMobile.animate( + // [ + // { height: '0px' }, + // { height: `${menuMobile.clientHeight}px` } + // ], + // { + // duration: 500, + // easing: 'ease-out' + // } + // ) + // } else { + // menuMobile.animate( + // [ + // { height: '0px' }, + // { height: `${menuMobile.clientHeight}px` } + // ], + // { + // duration: 500, + // easing: 'ease-out' + // } + // ) + // } + } + closeAllAccordionMenuItems() + // set margin on page wapper + // and restore scrolled position when you close menu + setScrolledMarginContent(currentScrollPos) + menuIsOpen ? mobileMenuIsOpen = true : mobileMenuIsOpen = false + } + + let previousClickedItem + function toggleDesktopMenu(clickedItem = null){ + + if (clickedItem == null) { + toggleMenuSharedElements() + openSubMenu() + + } else if (clickedItem == previousClickedItem || previousClickedItem == null || !desktopMenuIsOpen) { + // if desktop menu is not toggled or you are toggling menu item + toggleMenuSharedElements() + openSubMenu(clickedItem) + } else if (clickedItem != previousClickedItem && clickedItem != null){ + // if you are swapping submenu + openSubMenu(clickedItem, false) + } + // assign previous clicked item to currently clicked item + previousClickedItem = clickedItem + + // toggle/remove class on all menu items + menuItems.forEach((item) => { + const itemListItem = item.parentElement + if (itemListItem != clickedItem) { + itemListItem.classList.remove('is-toggled') + } else { + itemListItem.classList.toggle('is-toggled') + } + }) + // set margin on page wapper + // and restore scrolled position when you close menu + setScrolledMarginContent(currentScrollPos) + menuIsOpen ? desktopMenuIsOpen = true : desktopMenuIsOpen = false + } + + function toggleMenuWhenResized(){ + // if mobile menu is open and window resized to desktop + if (mobileMenuIsOpen && isDesktop.matches){ + toggleMenuSharedElements() + toggleMobileMenu(true) + menuIsOpen = false + } + // if desktop menu is open and window resized to mobile + if (desktopMenuIsOpen && !isDesktop.matches){ + toggleMenuSharedElements() + toggleDesktopMenu() + menuIsOpen = false + } + } + + // animate desktop dropdown and toggle + function openSubMenu(clickedItem, animate = true){ + let submenu + if (clickedItem) { + //if there's a clicked item get submenu descendante + submenu = clickedItem.querySelector('.site-header-navbar-submenu-0') + } else { + // if there isn't a clicked item (eg: X button), select visible menus + submenu = document.querySelector('.site-header-navbar-submenu-0.is-visible') + clickedItem = document.querySelector('#site-header-main-nav .menu-item-has-children.is-toggled') + console.log(clickedItem) + } + if (clickedItem.classList.contains('is-toggled')) { + // if desktop menu is already open and click on already toggled item + // remove classes and animate submenu to 0px height + mainNav.classList.remove('is-toggled') + submenu.classList.add('is-closing') + submenu.animate( + [ + { height: `${submenu.clientHeight}px` }, + { height: 0 } + ], + { + duration: 250, + delay: 250, + easing: 'ease-out' + } + ) + // timeout animation + setTimeout(() => { + submenu.classList.remove('is-visible') + submenu.classList.remove('is-closing') + }, 500); + } else if (!animate){ + // if desktop menu is open and click on item not yet toggled + // swap submenu container without animations + [...document.querySelectorAll('.site-header-navbar-submenu-0')].forEach(s=>{ + if(submenu != s){ + s.classList.remove('is-visible') + } else { + submenu.classList.add('is-visible') + } + }) + } else { + // if desktop menu is not open and click on item + // show and animate submenu + submenu.classList.add('is-visible') + submenu.animate( + [ + { height: 0 }, + { height: `${submenu.clientHeight}px` } + ], + { + duration: 250, + easing: 'ease-out' + } + ) + setTimeout(() => { + mainNav.classList.add('is-toggled') + }, 500); + } + } + + function cbToggleDesktopMenu(event){ + const item = event.target.parentElement + toggleDesktopMenu(item) + } + + // Throttle the fetchData function with a delay of 5000 ms + const throttledtoggleDesktopMenu = throttle(cbToggleDesktopMenu, 500) + + menuItems.forEach(item => { + item.addEventListener('click', throttledtoggleDesktopMenu) + }) + + menuBtn.addEventListener('click', function(){ + if (isDesktop.matches) { + console.log('test') + toggleDesktopMenu() + } else { + toggleMobileMenu() + } + }) + + //close all accordion menu items + function closeAllAccordionMenuItems(){ + accordionMenuItems.forEach(item => { + item.parentElement.parentElement.classList.remove('is-toggled') + item.parentElement.parentElement.setAttribute('aria-expanded', 'false') + }) + } + + accordionMenuItems.forEach(button => { + button.addEventListener('click', function(){ + // get
  • + const clickedItem = this.parentElement.parentElement + // get nesting of clicked item (from button) + const nesting = this.getAttribute('data-toggle-menu-items') + + if (nesting == 0 && clickedItem.classList.contains('is-toggled')) { + // if is first level and already opened, + // when clicked close all items + closeAllAccordionMenuItems() + } else { + // when you click on item, close other items on same nesting level + // [...document.querySelectorAll(`[data-toggle-menu-items="${nesting}"]`)].forEach(i=>{if(this != i){i.parentElement.parentElement.classList.remove('is-toggled')}}) + // toggle clicked item + clickedItem.classList.toggle('is-toggled') + } + }) + }) + + // if click on overlay close menu + overlay.addEventListener('click', function(){ + // toggleMenuSharedElements() + if (isDesktop.matches) { + toggleDesktopMenu() + } else { + toggleMobileMenu() + } + }) + + /** + * Back to top + */ + document.getElementById('backToTop').addEventListener('click', function(){ + window.scrollTo({ + top: 0, + behavior: 'smooth' + }) + }) + + /** + * Footer observer + */ + //when footer is in viewport, restore logo position + let footerObserver = new IntersectionObserver((entries) => { + + entries.forEach(entry => { + if(entry.isIntersecting){ + body.classList.add('footer-in-viewport') + } else { + body.classList.remove('footer-in-viewport') + } + }) + + }, + { + rootMargin: '0px' + }) + footerObserver.observe(footer) + + /** + * Window resize function callbacks + */ + const resizeHandler = function(){ + // set vh + set100vh() + // get header height + getHeaderHeight() + // when resizing disable menu if toggled + toggleMenuWhenResized() + } + window.addEventListener('resize', resizeHandler) + + /** + * Keyboard related functions and events + */ + document.onkeydown = function(evt) { + evt = evt || window.event; + var isEscape = false; + if ('key' in evt) { + isEscape = (evt.key === 'Escape' || evt.key === 'Esc'); + } else { + isEscape = (evt.keyCode === 27); + } + // if menu is open and press escape, toggle desktop or mobile menu + // based on media query + if (isEscape && menuIsOpen) { + toggleMenuSharedElements() + if (isDesktop.matches) { + toggleDesktopMenu() + } else { + toggleMobileMenu() + } + } + } + +}) \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/LICENSE b/build/assets/js/vendor/swiper/LICENSE new file mode 100644 index 0000000..a7876ca --- /dev/null +++ b/build/assets/js/vendor/swiper/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/build/assets/js/vendor/swiper/README.md b/build/assets/js/vendor/swiper/README.md new file mode 100644 index 0000000..d4e726c --- /dev/null +++ b/build/assets/js/vendor/swiper/README.md @@ -0,0 +1,11 @@ +Swiper +========== + +Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps. + +Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity. + +# Getting Started + * [Getting Started Guide](https://swiperjs.com/get-started/) + * [API](https://swiperjs.com/swiper-api/) + * [Demos](https://swiperjs.com/demos/) diff --git a/build/assets/js/vendor/swiper/modules/a11y-element.css b/build/assets/js/vendor/swiper/modules/a11y-element.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/a11y-element.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/build/assets/js/vendor/swiper/modules/a11y-element.min.css b/build/assets/js/vendor/swiper/modules/a11y-element.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/a11y-element.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/a11y.css b/build/assets/js/vendor/swiper/modules/a11y.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/a11y.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/build/assets/js/vendor/swiper/modules/a11y.less b/build/assets/js/vendor/swiper/modules/a11y.less new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/a11y.less @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/build/assets/js/vendor/swiper/modules/a11y.min.css b/build/assets/js/vendor/swiper/modules/a11y.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/a11y.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/a11y.min.mjs b/build/assets/js/vendor/swiper/modules/a11y.min.mjs new file mode 100644 index 0000000..8d00e2e --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/a11y.min.mjs @@ -0,0 +1,2 @@ +import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElement,g as elementIndex}from"../shared/utils.min.mjs";function A11y(e){let{swiper:a,extendParams:t,on:i}=e;t({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null}}),a.a11y={clicked:!1};let n=null;function s(e){const a=n;0!==a.length&&(a.innerHTML="",a.innerHTML=e)}const r=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function o(e){(e=r(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function l(e){(e=r(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function c(e,a){(e=r(e)).forEach((e=>{e.setAttribute("role",a)}))}function d(e,a){(e=r(e)).forEach((e=>{e.setAttribute("aria-roledescription",a)}))}function p(e,a){(e=r(e)).forEach((e=>{e.setAttribute("aria-label",a)}))}function g(e){(e=r(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function u(e){(e=r(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function f(e){if(13!==e.keyCode&&32!==e.keyCode)return;const t=a.params.a11y,i=e.target;a.pagination&&a.pagination.el&&(i===a.pagination.el||a.pagination.el.contains(e.target))&&!e.target.matches(classesToSelector(a.params.pagination.bulletClass))||(a.navigation&&a.navigation.nextEl&&i===a.navigation.nextEl&&(a.isEnd&&!a.params.loop||a.slideNext(),a.isEnd?s(t.lastSlideMessage):s(t.nextSlideMessage)),a.navigation&&a.navigation.prevEl&&i===a.navigation.prevEl&&(a.isBeginning&&!a.params.loop||a.slidePrev(),a.isBeginning?s(t.firstSlideMessage):s(t.prevSlideMessage)),a.pagination&&i.matches(classesToSelector(a.params.pagination.bulletClass))&&i.click())}function m(){return a.pagination&&a.pagination.bullets&&a.pagination.bullets.length}function v(){return m()&&a.params.pagination.clickable}const E=(e,a,t)=>{o(e),"BUTTON"!==e.tagName&&(c(e,"button"),e.addEventListener("keydown",f)),p(e,t),function(e,a){(e=r(e)).forEach((e=>{e.setAttribute("aria-controls",a)}))}(e,a)},b=()=>{a.a11y.clicked=!0},h=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{a.destroyed||(a.a11y.clicked=!1)}))}))},y=e=>{if(a.a11y.clicked)return;const t=e.target.closest(`.${a.params.slideClass}, swiper-slide`);if(!t||!a.slides.includes(t))return;const i=a.slides.indexOf(t)===a.activeIndex,n=a.params.watchSlidesProgress&&a.visibleSlides&&a.visibleSlides.includes(t);i||n||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(a.isHorizontal()?a.el.scrollLeft=0:a.el.scrollTop=0,a.slideTo(a.slides.indexOf(t),0))},M=()=>{const e=a.params.a11y;e.itemRoleDescriptionMessage&&d(a.slides,e.itemRoleDescriptionMessage),e.slideRole&&c(a.slides,e.slideRole);const t=a.slides.length;e.slideLabelMessage&&a.slides.forEach(((i,n)=>{const s=a.params.loop?parseInt(i.getAttribute("data-swiper-slide-index"),10):n;p(i,e.slideLabelMessage.replace(/\{\{index\}\}/,s+1).replace(/\{\{slidesLength\}\}/,t))}))},x=()=>{const e=a.params.a11y;a.el.append(n);const t=a.el;e.containerRoleDescriptionMessage&&d(t,e.containerRoleDescriptionMessage),e.containerMessage&&p(t,e.containerMessage);const i=a.wrapperEl,s=e.id||i.getAttribute("id")||`swiper-wrapper-${o=16,void 0===o&&(o=16),"x".repeat(o).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var o;const l=a.params.autoplay&&a.params.autoplay.enabled?"off":"polite";var c;c=s,r(i).forEach((e=>{e.setAttribute("id",c)})),function(e,a){(e=r(e)).forEach((e=>{e.setAttribute("aria-live",a)}))}(i,l),M();let{nextEl:g,prevEl:u}=a.navigation?a.navigation:{};if(g=r(g),u=r(u),g&&g.forEach((a=>E(a,s,e.nextSlideMessage))),u&&u.forEach((a=>E(a,s,e.prevSlideMessage))),v()){r(a.pagination.el).forEach((e=>{e.addEventListener("keydown",f)}))}a.el.addEventListener("focus",y,!0),a.el.addEventListener("pointerdown",b,!0),a.el.addEventListener("pointerup",h,!0)};i("beforeInit",(()=>{n=createElement("span",a.params.a11y.notificationClass),n.setAttribute("aria-live","assertive"),n.setAttribute("aria-atomic","true")})),i("afterInit",(()=>{a.params.a11y.enabled&&x()})),i("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{a.params.a11y.enabled&&M()})),i("fromEdge toEdge afterInit lock unlock",(()=>{a.params.a11y.enabled&&function(){if(a.params.loop||a.params.rewind||!a.navigation)return;const{nextEl:e,prevEl:t}=a.navigation;t&&(a.isBeginning?(g(t),l(t)):(u(t),o(t))),e&&(a.isEnd?(g(e),l(e)):(u(e),o(e)))}()})),i("paginationUpdate",(()=>{a.params.a11y.enabled&&function(){const e=a.params.a11y;m()&&a.pagination.bullets.forEach((t=>{a.params.pagination.clickable&&(o(t),a.params.pagination.renderBullet||(c(t,"button"),p(t,e.paginationBulletMessage.replace(/\{\{index\}\}/,elementIndex(t)+1)))),t.matches(classesToSelector(a.params.pagination.bulletActiveClass))?t.setAttribute("aria-current","true"):t.removeAttribute("aria-current")}))}()})),i("destroy",(()=>{a.params.a11y.enabled&&function(){n&&n.remove();let{nextEl:e,prevEl:t}=a.navigation?a.navigation:{};e=r(e),t=r(t),e&&e.forEach((e=>e.removeEventListener("keydown",f))),t&&t.forEach((e=>e.removeEventListener("keydown",f))),v()&&r(a.pagination.el).forEach((e=>{e.removeEventListener("keydown",f)}));a.el.removeEventListener("focus",y,!0),a.el.removeEventListener("pointerdown",b,!0),a.el.removeEventListener("pointerup",h,!0)}()}))}export{A11y as default}; +//# sourceMappingURL=a11y.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/a11y.min.mjs.map b/build/assets/js/vendor/swiper/modules/a11y.min.mjs.map new file mode 100644 index 0000000..aacddae --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/a11y.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"a11y.mjs.mjs","names":["classesToSelector","createElement","elementIndex","A11y","_ref","swiper","extendParams","on","a11y","enabled","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","id","clicked","liveRegion","notify","message","notification","length","innerHTML","makeElementsArray","el","Array","isArray","filter","e","makeElFocusable","forEach","subEl","setAttribute","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","label","disableEl","enableEl","onEnterOrSpaceKey","keyCode","params","targetEl","target","pagination","contains","matches","bulletClass","navigation","nextEl","isEnd","loop","slideNext","prevEl","isBeginning","slidePrev","click","hasPagination","bullets","hasClickablePagination","clickable","initNavEl","wrapperId","tagName","addEventListener","controls","addElControls","handlePointerDown","handlePointerUp","requestAnimationFrame","destroyed","handleFocus","slideEl","closest","slideClass","slides","includes","isActive","indexOf","activeIndex","isVisible","watchSlidesProgress","visibleSlides","sourceCapabilities","firesTouchEvents","isHorizontal","scrollLeft","scrollTop","slideTo","initSlides","slidesLength","index","slideIndex","parseInt","getAttribute","replace","init","append","containerEl","wrapperEl","size","repeat","Math","round","random","toString","live","autoplay","addElLive","rewind","updateNavigation","bulletEl","renderBullet","bulletActiveClass","removeAttribute","updatePagination","remove","removeEventListener","destroy"],"sources":["0"],"mappings":"YAAcA,sBAAyB,oDACzBC,mBAAoBC,iBAAoB,0BAEtD,SAASC,KAAKC,GACZ,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,KAAM,CACJC,SAAS,EACTC,kBAAmB,sBACnBC,iBAAkB,iBAClBC,iBAAkB,aAClBC,kBAAmB,0BACnBC,iBAAkB,yBAClBC,wBAAyB,wBACzBC,kBAAmB,+BACnBC,iBAAkB,KAClBC,gCAAiC,KACjCC,2BAA4B,KAC5BC,UAAW,QACXC,GAAI,QAGRhB,EAAOG,KAAO,CACZc,SAAS,GAEX,IAAIC,EAAa,KACjB,SAASC,EAAOC,GACd,MAAMC,EAAeH,EACO,IAAxBG,EAAaC,SACjBD,EAAaE,UAAY,GACzBF,EAAaE,UAAYH,EAC3B,CACA,MAAMI,EAAoBC,IAAOC,MAAMC,QAAQF,GAAMA,EAAK,CAACA,IAAKG,QAAOC,KAAOA,IAQ9E,SAASC,EAAgBL,IACvBA,EAAKD,EAAkBC,IACpBM,SAAQC,IACTA,EAAMC,aAAa,WAAY,IAAI,GAEvC,CACA,SAASC,EAAmBT,IAC1BA,EAAKD,EAAkBC,IACpBM,SAAQC,IACTA,EAAMC,aAAa,WAAY,KAAK,GAExC,CACA,SAASE,EAAUV,EAAIW,IACrBX,EAAKD,EAAkBC,IACpBM,SAAQC,IACTA,EAAMC,aAAa,OAAQG,EAAK,GAEpC,CACA,SAASC,EAAqBZ,EAAIa,IAChCb,EAAKD,EAAkBC,IACpBM,SAAQC,IACTA,EAAMC,aAAa,uBAAwBK,EAAY,GAE3D,CAOA,SAASC,EAAWd,EAAIe,IACtBf,EAAKD,EAAkBC,IACpBM,SAAQC,IACTA,EAAMC,aAAa,aAAcO,EAAM,GAE3C,CAaA,SAASC,EAAUhB,IACjBA,EAAKD,EAAkBC,IACpBM,SAAQC,IACTA,EAAMC,aAAa,iBAAiB,EAAK,GAE7C,CACA,SAASS,EAASjB,IAChBA,EAAKD,EAAkBC,IACpBM,SAAQC,IACTA,EAAMC,aAAa,iBAAiB,EAAM,GAE9C,CACA,SAASU,EAAkBd,GACzB,GAAkB,KAAdA,EAAEe,SAAgC,KAAdf,EAAEe,QAAgB,OAC1C,MAAMC,EAAS7C,EAAO6C,OAAO1C,KACvB2C,EAAWjB,EAAEkB,OACf/C,EAAOgD,YAAchD,EAAOgD,WAAWvB,KAAOqB,IAAa9C,EAAOgD,WAAWvB,IAAMzB,EAAOgD,WAAWvB,GAAGwB,SAASpB,EAAEkB,WAChHlB,EAAEkB,OAAOG,QAAQvD,kBAAkBK,EAAO6C,OAAOG,WAAWG,gBAE/DnD,EAAOoD,YAAcpD,EAAOoD,WAAWC,QAAUP,IAAa9C,EAAOoD,WAAWC,SAC5ErD,EAAOsD,QAAUtD,EAAO6C,OAAOU,MACnCvD,EAAOwD,YAELxD,EAAOsD,MACTnC,EAAO0B,EAAOpC,kBAEdU,EAAO0B,EAAOtC,mBAGdP,EAAOoD,YAAcpD,EAAOoD,WAAWK,QAAUX,IAAa9C,EAAOoD,WAAWK,SAC5EzD,EAAO0D,cAAgB1D,EAAO6C,OAAOU,MACzCvD,EAAO2D,YAEL3D,EAAO0D,YACTvC,EAAO0B,EAAOrC,mBAEdW,EAAO0B,EAAOvC,mBAGdN,EAAOgD,YAAcF,EAASI,QAAQvD,kBAAkBK,EAAO6C,OAAOG,WAAWG,eACnFL,EAASc,QAEb,CA0BA,SAASC,IACP,OAAO7D,EAAOgD,YAAchD,EAAOgD,WAAWc,SAAW9D,EAAOgD,WAAWc,QAAQxC,MACrF,CACA,SAASyC,IACP,OAAOF,KAAmB7D,EAAO6C,OAAOG,WAAWgB,SACrD,CAmBA,MAAMC,EAAY,CAACxC,EAAIyC,EAAW9C,KAChCU,EAAgBL,GACG,WAAfA,EAAG0C,UACLhC,EAAUV,EAAI,UACdA,EAAG2C,iBAAiB,UAAWzB,IAEjCJ,EAAWd,EAAIL,GA1HjB,SAAuBK,EAAI4C,IACzB5C,EAAKD,EAAkBC,IACpBM,SAAQC,IACTA,EAAMC,aAAa,gBAAiBoC,EAAS,GAEjD,CAsHEC,CAAc7C,EAAIyC,EAAU,EAExBK,EAAoB,KACxBvE,EAAOG,KAAKc,SAAU,CAAI,EAEtBuD,EAAkB,KACtBC,uBAAsB,KACpBA,uBAAsB,KACfzE,EAAO0E,YACV1E,EAAOG,KAAKc,SAAU,EACxB,GACA,GACF,EAEE0D,EAAc9C,IAClB,GAAI7B,EAAOG,KAAKc,QAAS,OACzB,MAAM2D,EAAU/C,EAAEkB,OAAO8B,QAAQ,IAAI7E,EAAO6C,OAAOiC,4BACnD,IAAKF,IAAY5E,EAAO+E,OAAOC,SAASJ,GAAU,OAClD,MAAMK,EAAWjF,EAAO+E,OAAOG,QAAQN,KAAa5E,EAAOmF,YACrDC,EAAYpF,EAAO6C,OAAOwC,qBAAuBrF,EAAOsF,eAAiBtF,EAAOsF,cAAcN,SAASJ,GACzGK,GAAYG,GACZvD,EAAE0D,oBAAsB1D,EAAE0D,mBAAmBC,mBAC7CxF,EAAOyF,eACTzF,EAAOyB,GAAGiE,WAAa,EAEvB1F,EAAOyB,GAAGkE,UAAY,EAExB3F,EAAO4F,QAAQ5F,EAAO+E,OAAOG,QAAQN,GAAU,GAAE,EAE7CiB,EAAa,KACjB,MAAMhD,EAAS7C,EAAO6C,OAAO1C,KACzB0C,EAAO/B,4BACTuB,EAAqBrC,EAAO+E,OAAQlC,EAAO/B,4BAEzC+B,EAAO9B,WACToB,EAAUnC,EAAO+E,OAAQlC,EAAO9B,WAElC,MAAM+E,EAAe9F,EAAO+E,OAAOzD,OAC/BuB,EAAOlC,mBACTX,EAAO+E,OAAOhD,SAAQ,CAAC6C,EAASmB,KAC9B,MAAMC,EAAahG,EAAO6C,OAAOU,KAAO0C,SAASrB,EAAQsB,aAAa,2BAA4B,IAAMH,EAExGxD,EAAWqC,EADc/B,EAAOlC,kBAAkBwF,QAAQ,gBAAiBH,EAAa,GAAGG,QAAQ,uBAAwBL,GACtF,GAEzC,EAEIM,EAAO,KACX,MAAMvD,EAAS7C,EAAO6C,OAAO1C,KAC7BH,EAAOyB,GAAG4E,OAAOnF,GAGjB,MAAMoF,EAActG,EAAOyB,GACvBoB,EAAOhC,iCACTwB,EAAqBiE,EAAazD,EAAOhC,iCAEvCgC,EAAOjC,kBACT2B,EAAW+D,EAAazD,EAAOjC,kBAIjC,MAAM2F,EAAYvG,EAAOuG,UACnBrC,EAAYrB,EAAO7B,IAAMuF,EAAUL,aAAa,OAAS,kBAvNxCM,EAuN0E,QAtNpF,IAATA,IACFA,EAAO,IAGF,IAAIC,OAAOD,GAAML,QAAQ,MADb,IAAMO,KAAKC,MAAM,GAAKD,KAAKE,UAAUC,SAAS,QAJnE,IAAyBL,EAwNvB,MAAMM,EAAO9G,EAAO6C,OAAOkE,UAAY/G,EAAO6C,OAAOkE,SAAS3G,QAAU,MAAQ,SA7KlF,IAAqBY,IA8KAkD,EA7Kd1C,EA6KG+E,GA5KLxE,SAAQC,IACTA,EAAMC,aAAa,KAAMjB,EAAG,IAGhC,SAAmBS,EAAIqF,IACrBrF,EAAKD,EAAkBC,IACpBM,SAAQC,IACTA,EAAMC,aAAa,YAAa6E,EAAK,GAEzC,CAoKEE,CAAUT,EAAWO,GAGrBjB,IAGA,IAAIxC,OACFA,EAAMI,OACNA,GACEzD,EAAOoD,WAAapD,EAAOoD,WAAa,CAAC,EAW7C,GAVAC,EAAS7B,EAAkB6B,GAC3BI,EAASjC,EAAkBiC,GACvBJ,GACFA,EAAOtB,SAAQN,GAAMwC,EAAUxC,EAAIyC,EAAWrB,EAAOtC,oBAEnDkD,GACFA,EAAO1B,SAAQN,GAAMwC,EAAUxC,EAAIyC,EAAWrB,EAAOvC,oBAInDyD,IAA0B,CACPvC,EAAkBxB,EAAOgD,WAAWvB,IAC5CM,SAAQN,IACnBA,EAAG2C,iBAAiB,UAAWzB,EAAkB,GAErD,CAGA3C,EAAOyB,GAAG2C,iBAAiB,QAASO,GAAa,GACjD3E,EAAOyB,GAAG2C,iBAAiB,cAAeG,GAAmB,GAC7DvE,EAAOyB,GAAG2C,iBAAiB,YAAaI,GAAiB,EAAK,EA8BhEtE,EAAG,cAAc,KACfgB,EAAatB,cAAc,OAAQI,EAAO6C,OAAO1C,KAAKE,mBACtDa,EAAWe,aAAa,YAAa,aACrCf,EAAWe,aAAa,cAAe,OAAO,IAEhD/B,EAAG,aAAa,KACTF,EAAO6C,OAAO1C,KAAKC,SACxBgG,GAAM,IAERlG,EAAG,kEAAkE,KAC9DF,EAAO6C,OAAO1C,KAAKC,SACxByF,GAAY,IAEd3F,EAAG,yCAAyC,KACrCF,EAAO6C,OAAO1C,KAAKC,SAlM1B,WACE,GAAIJ,EAAO6C,OAAOU,MAAQvD,EAAO6C,OAAOoE,SAAWjH,EAAOoD,WAAY,OACtE,MAAMC,OACJA,EAAMI,OACNA,GACEzD,EAAOoD,WACPK,IACEzD,EAAO0D,aACTjB,EAAUgB,GACVvB,EAAmBuB,KAEnBf,EAASe,GACT3B,EAAgB2B,KAGhBJ,IACErD,EAAOsD,OACTb,EAAUY,GACVnB,EAAmBmB,KAEnBX,EAASW,GACTvB,EAAgBuB,IAGtB,CA2KE6D,EAAkB,IAEpBhH,EAAG,oBAAoB,KAChBF,EAAO6C,OAAO1C,KAAKC,SAvK1B,WACE,MAAMyC,EAAS7C,EAAO6C,OAAO1C,KACxB0D,KACL7D,EAAOgD,WAAWc,QAAQ/B,SAAQoF,IAC5BnH,EAAO6C,OAAOG,WAAWgB,YAC3BlC,EAAgBqF,GACXnH,EAAO6C,OAAOG,WAAWoE,eAC5BjF,EAAUgF,EAAU,UACpB5E,EAAW4E,EAAUtE,EAAOnC,wBAAwByF,QAAQ,gBAAiBtG,aAAasH,GAAY,MAGtGA,EAASjE,QAAQvD,kBAAkBK,EAAO6C,OAAOG,WAAWqE,oBAC9DF,EAASlF,aAAa,eAAgB,QAEtCkF,EAASG,gBAAgB,eAC3B,GAEJ,CAuJEC,EAAkB,IAEpBrH,EAAG,WAAW,KACPF,EAAO6C,OAAO1C,KAAKC,SAlD1B,WACMc,GAAYA,EAAWsG,SAC3B,IAAInE,OACFA,EAAMI,OACNA,GACEzD,EAAOoD,WAAapD,EAAOoD,WAAa,CAAC,EAC7CC,EAAS7B,EAAkB6B,GAC3BI,EAASjC,EAAkBiC,GACvBJ,GACFA,EAAOtB,SAAQN,GAAMA,EAAGgG,oBAAoB,UAAW9E,KAErDc,GACFA,EAAO1B,SAAQN,GAAMA,EAAGgG,oBAAoB,UAAW9E,KAIrDoB,KACmBvC,EAAkBxB,EAAOgD,WAAWvB,IAC5CM,SAAQN,IACnBA,EAAGgG,oBAAoB,UAAW9E,EAAkB,IAKxD3C,EAAOyB,GAAGgG,oBAAoB,QAAS9C,GAAa,GACpD3E,EAAOyB,GAAGgG,oBAAoB,cAAelD,GAAmB,GAChEvE,EAAOyB,GAAGgG,oBAAoB,YAAajD,GAAiB,EAC9D,CAwBEkD,EAAS,GAEb,QAES5H"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/a11y.mjs b/build/assets/js/vendor/swiper/modules/a11y.mjs new file mode 100644 index 0000000..fd8ef73 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/a11y.mjs @@ -0,0 +1,343 @@ +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElement, g as elementIndex } from '../shared/utils.mjs'; + +function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = () => { + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const handleFocus = e => { + if (swiper.a11y.clicked) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); +} + +export { A11y as default }; diff --git a/build/assets/js/vendor/swiper/modules/a11y.scss b/build/assets/js/vendor/swiper/modules/a11y.scss new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/a11y.scss @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/build/assets/js/vendor/swiper/modules/autoplay-element.css b/build/assets/js/vendor/swiper/modules/autoplay-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/autoplay-element.css diff --git a/build/assets/js/vendor/swiper/modules/autoplay-element.min.css b/build/assets/js/vendor/swiper/modules/autoplay-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/autoplay-element.min.css diff --git a/build/assets/js/vendor/swiper/modules/autoplay.css b/build/assets/js/vendor/swiper/modules/autoplay.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/autoplay.css diff --git a/build/assets/js/vendor/swiper/modules/autoplay.less b/build/assets/js/vendor/swiper/modules/autoplay.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/autoplay.less diff --git a/build/assets/js/vendor/swiper/modules/autoplay.min.css b/build/assets/js/vendor/swiper/modules/autoplay.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/autoplay.min.css diff --git a/build/assets/js/vendor/swiper/modules/autoplay.min.mjs b/build/assets/js/vendor/swiper/modules/autoplay.min.mjs new file mode 100644 index 0000000..a5b77e5 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/autoplay.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";function Autoplay(e){let a,t,{swiper:n,extendParams:r,on:i,emit:o,params:s}=e;n.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let p,l,u,d,y,m,c,g,v=s&&s.autoplay?s.autoplay.delay:3e3,T=s&&s.autoplay?s.autoplay.delay:3e3,f=(new Date).getTime();function w(e){n&&!n.destroyed&&n.wrapperEl&&e.target===n.wrapperEl&&(n.wrapperEl.removeEventListener("transitionend",w),g||S())}const E=()=>{if(n.destroyed||!n.autoplay.running)return;n.autoplay.paused?l=!0:l&&(T=p,l=!1);const e=n.autoplay.paused?p:f+T-(new Date).getTime();n.autoplay.timeLeft=e,o("autoplayTimeLeft",e,e/v),t=requestAnimationFrame((()=>{E()}))},b=e=>{if(n.destroyed||!n.autoplay.running)return;cancelAnimationFrame(t),E();let r=void 0===e?n.params.autoplay.delay:e;v=n.params.autoplay.delay,T=n.params.autoplay.delay;const i=(()=>{let e;if(e=n.virtual&&n.params.virtual.enabled?n.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:n.slides[n.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(i)&&i>0&&void 0===e&&(r=i,v=i,T=i),p=r;const s=n.params.speed,l=()=>{n&&!n.destroyed&&(n.params.autoplay.reverseDirection?!n.isBeginning||n.params.loop||n.params.rewind?(n.slidePrev(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(n.slides.length-1,s,!0,!0),o("autoplay")):!n.isEnd||n.params.loop||n.params.rewind?(n.slideNext(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(0,s,!0,!0),o("autoplay")),n.params.cssMode&&(f=(new Date).getTime(),requestAnimationFrame((()=>{b()}))))};return r>0?(clearTimeout(a),a=setTimeout((()=>{l()}),r)):requestAnimationFrame((()=>{l()})),r},L=()=>{f=(new Date).getTime(),n.autoplay.running=!0,b(),o("autoplayStart")},D=()=>{n.autoplay.running=!1,clearTimeout(a),cancelAnimationFrame(t),o("autoplayStop")},O=(e,t)=>{if(n.destroyed||!n.autoplay.running)return;clearTimeout(a),e||(c=!0);const r=()=>{o("autoplayPause"),n.params.autoplay.waitForTransition?n.wrapperEl.addEventListener("transitionend",w):S()};if(n.autoplay.paused=!0,t)return m&&(p=n.params.autoplay.delay),m=!1,void r();const i=p||n.params.autoplay.delay;p=i-((new Date).getTime()-f),n.isEnd&&p<0&&!n.params.loop||(p<0&&(p=0),r())},S=()=>{n.isEnd&&p<0&&!n.params.loop||n.destroyed||!n.autoplay.running||(f=(new Date).getTime(),c?(c=!1,b(p)):b(),n.autoplay.paused=!1,o("autoplayResume"))},A=()=>{if(n.destroyed||!n.autoplay.running)return;const e=getDocument();"hidden"===e.visibilityState&&(c=!0,O(!0)),"visible"===e.visibilityState&&S()},F=e=>{"mouse"===e.pointerType&&(c=!0,g=!0,n.animating||n.autoplay.paused||O(!0))},M=e=>{"mouse"===e.pointerType&&(g=!1,n.autoplay.paused&&S())};i("init",(()=>{n.params.autoplay.enabled&&(n.params.autoplay.pauseOnMouseEnter&&(n.el.addEventListener("pointerenter",F),n.el.addEventListener("pointerleave",M)),getDocument().addEventListener("visibilitychange",A),L())})),i("destroy",(()=>{n.el.removeEventListener("pointerenter",F),n.el.removeEventListener("pointerleave",M),getDocument().removeEventListener("visibilitychange",A),n.autoplay.running&&D()})),i("_freeModeStaticRelease",(()=>{(d||c)&&S()})),i("_freeModeNoMomentumRelease",(()=>{n.params.autoplay.disableOnInteraction?D():O(!0,!0)})),i("beforeTransitionStart",((e,a,t)=>{!n.destroyed&&n.autoplay.running&&(t||!n.params.autoplay.disableOnInteraction?O(!0,!0):D())})),i("sliderFirstMove",(()=>{!n.destroyed&&n.autoplay.running&&(n.params.autoplay.disableOnInteraction?D():(u=!0,d=!1,c=!1,y=setTimeout((()=>{c=!0,d=!0,O(!0)}),200)))})),i("touchEnd",(()=>{if(!n.destroyed&&n.autoplay.running&&u){if(clearTimeout(y),clearTimeout(a),n.params.autoplay.disableOnInteraction)return d=!1,void(u=!1);d&&n.params.cssMode&&S(),d=!1,u=!1}})),i("slideChange",(()=>{!n.destroyed&&n.autoplay.running&&(m=!0)})),Object.assign(n.autoplay,{start:L,stop:D,pause:O,resume:S})}export{Autoplay as default}; +//# sourceMappingURL=autoplay.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/autoplay.min.mjs.map b/build/assets/js/vendor/swiper/modules/autoplay.min.mjs.map new file mode 100644 index 0000000..0f086c1 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/autoplay.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"autoplay.mjs.mjs","names":["getDocument","Autoplay","_ref","timeout","raf","swiper","extendParams","on","emit","params","autoplay","running","paused","timeLeft","enabled","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","Date","getTime","onTransitionEnd","e","destroyed","wrapperEl","target","removeEventListener","resume","calcTimeLeft","requestAnimationFrame","run","delayForce","cancelAnimationFrame","currentSlideDelay","activeSlideEl","virtual","slides","filter","slideEl","classList","contains","activeIndex","parseInt","getAttribute","getSlideDelay","Number","isNaN","speed","proceed","isBeginning","loop","rewind","slidePrev","slideTo","length","isEnd","slideNext","cssMode","clearTimeout","setTimeout","start","stop","pause","internal","reset","addEventListener","onVisibilityChange","document","visibilityState","onPointerEnter","pointerType","animating","onPointerLeave","el","_s","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/autoplay.mjs b/build/assets/js/vendor/swiper/modules/autoplay.mjs new file mode 100644 index 0000000..5e54974 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/autoplay.mjs @@ -0,0 +1,302 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; + +/* eslint no-underscore-dangle: "off" */ +/* eslint no-use-before-define: "off" */ +function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); +} + +export { Autoplay as default }; diff --git a/build/assets/js/vendor/swiper/modules/autoplay.scss b/build/assets/js/vendor/swiper/modules/autoplay.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/autoplay.scss diff --git a/build/assets/js/vendor/swiper/modules/controller-element.css b/build/assets/js/vendor/swiper/modules/controller-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/controller-element.css diff --git a/build/assets/js/vendor/swiper/modules/controller-element.min.css b/build/assets/js/vendor/swiper/modules/controller-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/controller-element.min.css diff --git a/build/assets/js/vendor/swiper/modules/controller.css b/build/assets/js/vendor/swiper/modules/controller.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/controller.css diff --git a/build/assets/js/vendor/swiper/modules/controller.less b/build/assets/js/vendor/swiper/modules/controller.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/controller.less diff --git a/build/assets/js/vendor/swiper/modules/controller.min.css b/build/assets/js/vendor/swiper/modules/controller.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/controller.min.css diff --git a/build/assets/js/vendor/swiper/modules/controller.min.mjs b/build/assets/js/vendor/swiper/modules/controller.min.mjs new file mode 100644 index 0000000..4e17d53 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/controller.min.mjs @@ -0,0 +1,2 @@ +import{n as nextTick,j as elementTransitionEnd}from"../shared/utils.min.mjs";function Controller(t){let{swiper:e,extendParams:n,on:r}=t;function o(t,e){const n=function(){let t,e,n;return(r,o)=>{for(e=-1,t=r.length;t-e>1;)n=t+e>>1,r[n]<=o?e=n:t=n;return t}}();let r,o;return this.x=t,this.y=e,this.lastIndex=t.length-1,this.interpolate=function(t){return t?(o=n(this.x,t),r=o-1,(t-this.x[r])*(this.y[o]-this.y[r])/(this.x[o]-this.x[r])+this.y[r]):0},this}function l(){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)}n({controller:{control:void 0,inverse:!1,by:"slide"}}),e.controller={control:void 0},r("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof e.params.controller.control||e.params.controller.control instanceof HTMLElement)){const t=document.querySelector(e.params.controller.control);if(t&&t.swiper)e.controller.control=t.swiper;else if(t){const n=r=>{e.controller.control=r.detail[0],e.update(),t.removeEventListener("init",n)};t.addEventListener("init",n)}}else e.controller.control=e.params.controller.control})),r("update",(()=>{l()})),r("resize",(()=>{l()})),r("observerUpdate",(()=>{l()})),r("setTranslate",((t,n,r)=>{e.controller.control&&!e.controller.control.destroyed&&e.controller.setTranslate(n,r)})),r("setTransition",((t,n,r)=>{e.controller.control&&!e.controller.control.destroyed&&e.controller.setTransition(n,r)})),Object.assign(e.controller,{setTranslate:function(t,n){const r=e.controller.control;let l,s;const i=e.constructor;function a(t){if(t.destroyed)return;const n=e.rtlTranslate?-e.translate:e.translate;"slide"===e.params.controller.by&&(!function(t){e.controller.spline=e.params.loop?new o(e.slidesGrid,t.slidesGrid):new o(e.snapGrid,t.snapGrid)}(t),s=-e.controller.spline.interpolate(-n)),s&&"container"!==e.params.controller.by||(l=(t.maxTranslate()-t.minTranslate())/(e.maxTranslate()-e.minTranslate()),!Number.isNaN(l)&&Number.isFinite(l)||(l=1),s=(n-e.minTranslate())*l+t.minTranslate()),e.params.controller.inverse&&(s=t.maxTranslate()-s),t.updateProgress(s),t.setTranslate(s,e),t.updateActiveIndex(),t.updateSlidesClasses()}if(Array.isArray(r))for(let t=0;t{n.updateAutoHeight()})),elementTransitionEnd(n.wrapperEl,(()=>{o&&n.transitionEnd()}))))}if(Array.isArray(o))for(l=0;l>"] }] */ +function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElement = document.querySelector(swiper.params.controller.control); + if (controlElement && controlElement.swiper) { + swiper.controller.control = controlElement.swiper; + } else if (controlElement) { + const onControllerSwiper = e => { + swiper.controller.control = e.detail[0]; + swiper.update(); + controlElement.removeEventListener('init', onControllerSwiper); + }; + controlElement.addEventListener('init', onControllerSwiper); + } + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); +} + +export { Controller as default }; diff --git a/build/assets/js/vendor/swiper/modules/controller.scss b/build/assets/js/vendor/swiper/modules/controller.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/controller.scss diff --git a/build/assets/js/vendor/swiper/modules/effect-cards-element.css b/build/assets/js/vendor/swiper/modules/effect-cards-element.css new file mode 100644 index 0000000..f831010 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cards-element.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards ::slotted(swiper-slide) { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/build/assets/js/vendor/swiper/modules/effect-cards-element.min.css b/build/assets/js/vendor/swiper/modules/effect-cards-element.min.css new file mode 100644 index 0000000..97c6648 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cards-element.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-cards.css b/build/assets/js/vendor/swiper/modules/effect-cards.css new file mode 100644 index 0000000..4b9f64b --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cards.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/build/assets/js/vendor/swiper/modules/effect-cards.less b/build/assets/js/vendor/swiper/modules/effect-cards.less new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cards.less @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/build/assets/js/vendor/swiper/modules/effect-cards.min.css b/build/assets/js/vendor/swiper/modules/effect-cards.min.css new file mode 100644 index 0000000..1769ef2 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cards.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-cards.min.mjs b/build/assets/js/vendor/swiper/modules/effect-cards.min.mjs new file mode 100644 index 0000000..fe35634 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cards.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{l as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCards(e){let{swiper:t,extendParams:a,on:s}=e;a({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}});effectInit({effect:"cards",swiper:t,on:s,setTranslate:()=>{const{slides:e,activeIndex:a,rtlTranslate:s}=t,r=t.params.cardsEffect,{startTranslate:i,isTouched:n}=t.touchEventsData,o=s?-t.translate:t.translate;for(let l=0;l0&&c<1&&(n||t.params.cssMode)&&o-1&&(n||t.params.cssMode)&&o>i;if(E||T){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;w+=-28*c*e,u+=-.5*e,S+=96*e,h=-25*e*Math.abs(c)+"%"}if(p=c<0?`calc(${p}px ${s?"-":"+"} (${S*Math.abs(c)}%))`:c>0?`calc(${p}px ${s?"-":"+"} (-${S*Math.abs(c)}%))`:`${p}px`,!t.isHorizontal()){const e=h;h=p,p=e}const x=c<0?""+(1+(1-u)*c):""+(1-(1-u)*c),b=`\n translate3d(${p}, ${h}, ${M}px)\n rotateZ(${r.rotate?s?-w:w:0}deg)\n scale(${x})\n `;if(r.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=createShadow("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(f))+e.length;effectTarget(r,d).style.transform=b}},setTransition:e=>{const a=t.slides.map((e=>getSlideTransformEl(e)));a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:a})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCards as default}; +//# sourceMappingURL=effect-cards.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-cards.min.mjs.map b/build/assets/js/vendor/swiper/modules/effect-cards.min.mjs.map new file mode 100644 index 0000000..e23f337 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cards.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cards.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCards","_ref","swiper","extendParams","on","cardsEffect","slideShadows","rotate","perSlideRotate","perSlideOffset","effect","setTranslate","slides","activeIndex","rtlTranslate","rtl","params","startTranslate","isTouched","touchEventsData","currentTranslate","translate","i","length","slideEl","slideProgress","progress","Math","min","max","offset","swiperSlideOffset","centeredSlides","cssMode","wrapperEl","style","transform","minTranslate","tX","tY","tZ","abs","scale","tXAdd","slideIndex","virtual","enabled","from","isSwipeToNext","isSwipeToPrev","subProgress","isHorizontal","prevY","scaleString","shadowEl","querySelector","opacity","zIndex","round","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","perspective","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-cards.mjs b/build/assets/js/vendor/swiper/modules/effect-cards.mjs new file mode 100644 index 0000000..1c3b18c --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cards.mjs @@ -0,0 +1,125 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { l as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCards as default }; diff --git a/build/assets/js/vendor/swiper/modules/effect-cards.scss b/build/assets/js/vendor/swiper/modules/effect-cards.scss new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cards.scss @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/build/assets/js/vendor/swiper/modules/effect-coverflow-element.css b/build/assets/js/vendor/swiper/modules/effect-coverflow-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-coverflow-element.css diff --git a/build/assets/js/vendor/swiper/modules/effect-coverflow-element.min.css b/build/assets/js/vendor/swiper/modules/effect-coverflow-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-coverflow-element.min.css diff --git a/build/assets/js/vendor/swiper/modules/effect-coverflow.css b/build/assets/js/vendor/swiper/modules/effect-coverflow.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-coverflow.css diff --git a/build/assets/js/vendor/swiper/modules/effect-coverflow.less b/build/assets/js/vendor/swiper/modules/effect-coverflow.less new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-coverflow.less @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/build/assets/js/vendor/swiper/modules/effect-coverflow.min.css b/build/assets/js/vendor/swiper/modules/effect-coverflow.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-coverflow.min.css diff --git a/build/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs b/build/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs new file mode 100644 index 0000000..67b2ad5 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{l as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCoverflow(e){let{swiper:t,extendParams:s,on:r}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}});effectInit({effect:"coverflow",swiper:t,on:r,setTranslate:()=>{const{width:e,height:s,slides:r,slidesSizesGrid:a}=t,o=t.params.coverflowEffect,i=t.isHorizontal(),l=t.translate,f=i?e/2-l:s/2-l,d=i?o.rotate:-o.rotate,h=o.depth;for(let e=0,s=r.length;e0?n:0),t&&(t.style.opacity=-n>0?-n:0)}}},setTransition:e=>{t.slides.map((e=>getSlideTransformEl(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}export{EffectCoverflow as default}; +//# sourceMappingURL=effect-coverflow.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs.map b/build/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs.map new file mode 100644 index 0000000..1f1997b --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-coverflow.mjs.mjs","names":["createShadow","effectInit","effectTarget","getSlideTransformEl","EffectCoverflow","_ref","swiper","extendParams","on","coverflowEffect","rotate","stretch","depth","scale","modifier","slideShadows","effect","setTranslate","width","swiperWidth","height","swiperHeight","slides","slidesSizesGrid","params","isHorizontal","transform","translate","center","i","length","slideEl","slideSize","centerOffset","swiperSlideOffset","offsetMultiplier","rotateY","rotateX","translateZ","Math","abs","indexOf","parseFloat","translateY","translateX","browser","isSafari","slideTransform","style","zIndex","round","shadowBeforeEl","querySelector","shadowAfterEl","opacity","setTransition","duration","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","perspective","overwriteParams","watchSlidesProgress"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-coverflow.mjs b/build/assets/js/vendor/swiper/modules/effect-coverflow.mjs new file mode 100644 index 0000000..bde25f4 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-coverflow.mjs @@ -0,0 +1,111 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { l as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); +} + +export { EffectCoverflow as default }; diff --git a/build/assets/js/vendor/swiper/modules/effect-coverflow.scss b/build/assets/js/vendor/swiper/modules/effect-coverflow.scss new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-coverflow.scss @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/build/assets/js/vendor/swiper/modules/effect-creative-element.css b/build/assets/js/vendor/swiper/modules/effect-creative-element.css new file mode 100644 index 0000000..6ccf22b --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-creative-element.css @@ -0,0 +1,6 @@ +.swiper-creative ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/build/assets/js/vendor/swiper/modules/effect-creative-element.min.css b/build/assets/js/vendor/swiper/modules/effect-creative-element.min.css new file mode 100644 index 0000000..70fb705 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-creative-element.min.css @@ -0,0 +1 @@ +.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-creative.css b/build/assets/js/vendor/swiper/modules/effect-creative.css new file mode 100644 index 0000000..2082494 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-creative.css @@ -0,0 +1,6 @@ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/build/assets/js/vendor/swiper/modules/effect-creative.less b/build/assets/js/vendor/swiper/modules/effect-creative.less new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-creative.less @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/build/assets/js/vendor/swiper/modules/effect-creative.min.css b/build/assets/js/vendor/swiper/modules/effect-creative.min.css new file mode 100644 index 0000000..404da2c --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-creative.min.css @@ -0,0 +1 @@ +.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-creative.min.mjs b/build/assets/js/vendor/swiper/modules/effect-creative.min.mjs new file mode 100644 index 0000000..0b1a3ff --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-creative.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{l as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCreative(e){let{swiper:t,extendParams:r,on:s}=e;r({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;effectInit({effect:"creative",swiper:t,on:s,setTranslate:()=>{const{slides:e,wrapperEl:r,slidesSizesGrid:s}=t,i=t.params.creativeEffect,{progressMultiplier:o}=i,l=t.params.centeredSlides;if(l){const e=s[0]/2-t.params.slidesOffsetBefore||0;r.style.transform=`translateX(calc(50% - ${e}px))`}for(let r=0;r0&&(g=i.prev,h=!0),p.forEach(((e,t)=>{p[t]=`calc(${e}px + (${a(g.translate[t])} * ${Math.abs(c*o)}))`})),d.forEach(((e,r)=>{let s=g.rotate[r]*Math.abs(c*o);t.browser&&t.browser.isSafari&&Math.abs(s)/90%2==1&&(s+=.001),d[r]=s})),s.style.zIndex=-Math.abs(Math.round(n))+e.length;const w=p.join(", "),y=`rotateX(${d[0]}deg) rotateY(${d[1]}deg) rotateZ(${d[2]}deg)`,M=f<0?`scale(${1+(1-g.scale)*f*o})`:`scale(${1-(1-g.scale)*f*o})`,u=f<0?1+(1-g.opacity)*f*o:1-(1-g.opacity)*f*o,v=`translate3d(${w}) ${y} ${M}`;if(h&&g.shadow||!h){let e=s.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=createShadow("creative",s)),e){const t=i.shadowPerProgress?c*(1/i.limitProgress):c;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=effectTarget(i,s);E.style.transform=v,E.style.opacity=u,g.origin&&(E.style.transformOrigin=g.origin)}},setTransition:e=>{const r=t.slides.map((e=>getSlideTransformEl(e)));r.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:r,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCreative as default}; +//# sourceMappingURL=effect-creative.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-creative.min.mjs.map b/build/assets/js/vendor/swiper/modules/effect-creative.min.mjs.map new file mode 100644 index 0000000..cdac947 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-creative.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-creative.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCreative","_ref","swiper","extendParams","on","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","perspective","prev","translate","rotate","opacity","scale","next","getTranslateValue","value","effect","setTranslate","slides","wrapperEl","slidesSizesGrid","params","multiplier","isCenteredSlides","centeredSlides","margin","slidesOffsetBefore","style","transform","i","length","slideEl","slideProgress","progress","Math","min","max","originalProgress","offset","swiperSlideOffset","t","cssMode","r","custom","isHorizontal","data","forEach","index","abs","val","browser","isSafari","zIndex","round","translateString","join","rotateString","scaleString","opacityString","shadow","shadowEl","querySelector","shadowOpacity","targetEl","origin","transformOrigin","setTransition","duration","transformElements","map","el","transitionDuration","querySelectorAll","allSlides","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-creative.mjs b/build/assets/js/vendor/swiper/modules/effect-creative.mjs new file mode 100644 index 0000000..1351a2b --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-creative.mjs @@ -0,0 +1,148 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { l as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + if (swiper.browser && swiper.browser.isSafari && Math.abs(val) / 90 % 2 === 1) { + val += 0.001; + } + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCreative as default }; diff --git a/build/assets/js/vendor/swiper/modules/effect-creative.scss b/build/assets/js/vendor/swiper/modules/effect-creative.scss new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-creative.scss @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/build/assets/js/vendor/swiper/modules/effect-cube-element.css b/build/assets/js/vendor/swiper/modules/effect-cube-element.css new file mode 100644 index 0000000..af13615 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cube-element.css @@ -0,0 +1,53 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-cube.swiper-rtl ::slotted(swiper-slide) { + transform-origin: 100% 0; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-next), +.swiper-cube ::slotted(.swiper-slide-prev) { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube ::slotted(.swiper-slide-next) + ::slotted(swiper-slide) { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start *//* Cube slide shadows end */ diff --git a/build/assets/js/vendor/swiper/modules/effect-cube-element.min.css b/build/assets/js/vendor/swiper/modules/effect-cube-element.min.css new file mode 100644 index 0000000..afc6ca2 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cube-element.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-cube.css b/build/assets/js/vendor/swiper/modules/effect-cube.css new file mode 100644 index 0000000..14b5d08 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cube.css @@ -0,0 +1,62 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ diff --git a/build/assets/js/vendor/swiper/modules/effect-cube.less b/build/assets/js/vendor/swiper/modules/effect-cube.less new file mode 100644 index 0000000..54bdc01 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cube.less @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/build/assets/js/vendor/swiper/modules/effect-cube.min.css b/build/assets/js/vendor/swiper/modules/effect-cube.min.css new file mode 100644 index 0000000..e91764c --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cube.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-cube.min.mjs b/build/assets/js/vendor/swiper/modules/effect-cube.min.mjs new file mode 100644 index 0000000..ce9efc1 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cube.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{c as createElement}from"../shared/utils.min.mjs";function EffectCube(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const r=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),r||(r=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(r)),a&&(a.style.opacity=Math.max(-t,0)),r&&(r.style.opacity=Math.max(t,0))};effectInit({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:o,height:i,rtlTranslate:l,size:d,browser:n}=t,p=t.params.cubeEffect,c=t.isHorizontal(),w=t.virtual&&t.params.virtual.enabled;let h,f=0;p.shadow&&(c?(h=t.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=createElement("div","swiper-cube-shadow"),t.wrapperEl.append(h)),h.style.height=`${o}px`):(h=e.querySelector(".swiper-cube-shadow"),h||(h=createElement("div","swiper-cube-shadow"),e.append(h))));for(let e=0;e-1&&(f=90*o+90*h,l&&(f=90*-o-90*h),t.browser&&t.browser.isSafari&&Math.abs(f)/90%2==1&&(f+=.001)),s.style.transform=y,p.slideShadows&&r(s,h,c)}if(s.style.transformOrigin=`50% 50% -${d/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${d/2}px`,p.shadow)if(c)h.style.transform=`translate3d(0px, ${o/2+p.shadowOffset}px, ${-o/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,r=p.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${i/2+r}px, ${-i/2/a}px) rotateX(-89.99deg)`}const m=(n.isSafari||n.isWebView)&&n.needPerspectiveFix?-d/2:0;s.style.transform=`translate3d(0px,0,${m}px) rotateX(${t.isHorizontal()?0:f}deg) rotateY(${t.isHorizontal()?-f:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${m}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);r(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}export{EffectCube as default}; +//# sourceMappingURL=effect-cube.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-cube.min.mjs.map b/build/assets/js/vendor/swiper/modules/effect-cube.min.mjs.map new file mode 100644 index 0000000..a62937d --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cube.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cube.mjs.mjs","names":["effectInit","createElement","EffectCube","_ref","swiper","extendParams","on","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","createSlideShadows","slideEl","progress","isHorizontal","shadowBefore","querySelector","shadowAfter","split","append","style","opacity","Math","max","effect","setTranslate","el","wrapperEl","slides","width","swiperWidth","height","swiperHeight","rtlTranslate","rtl","size","swiperSize","browser","params","isVirtual","virtual","enabled","cubeShadowEl","wrapperRotate","i","length","slideIndex","parseInt","getAttribute","slideAngle","round","floor","min","tx","ty","tz","transform","isSafari","abs","transformOrigin","shadowAngle","multiplier","sin","PI","cos","scale1","scale2","offset","zFactor","isWebView","needPerspectiveFix","setProperty","setTransition","duration","forEach","transitionDuration","querySelectorAll","subEl","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","resistanceRatio","spaceBetween","centeredSlides","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-cube.mjs b/build/assets/js/vendor/swiper/modules/effect-cube.mjs new file mode 100644 index 0000000..31589db --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cube.mjs @@ -0,0 +1,176 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { c as createElement } from '../shared/utils.mjs'; + +function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + if (swiper.browser && swiper.browser.isSafari && Math.abs(wrapperRotate) / 90 % 2 === 1) { + wrapperRotate += 0.001; + } + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); +} + +export { EffectCube as default }; diff --git a/build/assets/js/vendor/swiper/modules/effect-cube.scss b/build/assets/js/vendor/swiper/modules/effect-cube.scss new file mode 100644 index 0000000..54bdc01 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-cube.scss @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/build/assets/js/vendor/swiper/modules/effect-fade-element.css b/build/assets/js/vendor/swiper/modules/effect-fade-element.css new file mode 100644 index 0000000..76242c6 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-fade-element.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide) { + transition-timing-function: ease-out; +} +.swiper-fade ::slotted(swiper-slide) { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-fade ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} diff --git a/build/assets/js/vendor/swiper/modules/effect-fade-element.min.css b/build/assets/js/vendor/swiper/modules/effect-fade-element.min.css new file mode 100644 index 0000000..6fb7280 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-fade-element.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-fade.css b/build/assets/js/vendor/swiper/modules/effect-fade.css new file mode 100644 index 0000000..ac7449e --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-fade.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} diff --git a/build/assets/js/vendor/swiper/modules/effect-fade.less b/build/assets/js/vendor/swiper/modules/effect-fade.less new file mode 100644 index 0000000..0fadca4 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-fade.less @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + pointer-events: auto; + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/build/assets/js/vendor/swiper/modules/effect-fade.min.css b/build/assets/js/vendor/swiper/modules/effect-fade.min.css new file mode 100644 index 0000000..e535e7e --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-fade.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-fade.min.mjs b/build/assets/js/vendor/swiper/modules/effect-fade.min.mjs new file mode 100644 index 0000000..ca33c38 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-fade.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{l as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectFade(e){let{swiper:t,extendParams:s,on:a}=e;s({fadeEffect:{crossFade:!1}});effectInit({effect:"fade",swiper:t,on:a,setTranslate:()=>{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFade as default}; +//# sourceMappingURL=effect-fade.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-fade.min.mjs.map b/build/assets/js/vendor/swiper/modules/effect-fade.min.mjs.map new file mode 100644 index 0000000..91e91f1 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-fade.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-fade.mjs.mjs","names":["effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectFade","_ref","swiper","extendParams","on","fadeEffect","crossFade","effect","setTranslate","slides","params","i","length","slideEl","tx","swiperSlideOffset","virtualTranslate","translate","ty","isHorizontal","slideOpacity","Math","max","abs","progress","min","targetEl","style","opacity","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","allSlides","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","cssMode"],"sources":["0"],"mappings":"YAAcA,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,wBAA2B,0BAEzC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,WAAW,KAoCfV,WAAW,CACTW,OAAQ,OACRL,SACAE,KACAI,aArCmB,KACnB,MAAMC,OACJA,GACEP,EACEQ,EAASR,EAAOQ,OAAOL,WAC7B,IAAK,IAAIM,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,GAAK,EAAG,CACzC,MAAME,EAAUX,EAAOO,OAAOE,GAE9B,IAAIG,GADWD,EAAQE,kBAElBb,EAAOQ,OAAOM,mBAAkBF,GAAMZ,EAAOe,WAClD,IAAIC,EAAK,EACJhB,EAAOiB,iBACVD,EAAKJ,EACLA,EAAK,GAEP,MAAMM,EAAelB,EAAOQ,OAAOL,WAAWC,UAAYe,KAAKC,IAAI,EAAID,KAAKE,IAAIV,EAAQW,UAAW,GAAK,EAAIH,KAAKI,IAAIJ,KAAKC,IAAIT,EAAQW,UAAW,GAAI,GAC/IE,EAAW7B,aAAaa,EAAQG,GACtCa,EAASC,MAAMC,QAAUR,EACzBM,EAASC,MAAME,UAAY,eAAef,QAASI,WACrD,GAmBAY,cAjBoBC,IACpB,MAAMC,EAAoB9B,EAAOO,OAAOwB,KAAIpB,GAAWd,oBAAoBc,KAC3EmB,EAAkBE,SAAQC,IACxBA,EAAGR,MAAMS,mBAAqB,GAAGL,KAAY,IAE/CjC,2BAA2B,CACzBI,SACA6B,WACAC,oBACAK,WAAW,GACX,EAQFC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACd1B,kBAAmBd,EAAOQ,OAAOiC,WAGvC,QAES3C"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-fade.mjs b/build/assets/js/vendor/swiper/modules/effect-fade.mjs new file mode 100644 index 0000000..cc796c0 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-fade.mjs @@ -0,0 +1,66 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { l as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFade as default }; diff --git a/build/assets/js/vendor/swiper/modules/effect-fade.scss b/build/assets/js/vendor/swiper/modules/effect-fade.scss new file mode 100644 index 0000000..bb059dd --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-fade.scss @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/build/assets/js/vendor/swiper/modules/effect-flip-element.css b/build/assets/js/vendor/swiper/modules/effect-flip-element.css new file mode 100644 index 0000000..4ae8338 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-flip-element.css @@ -0,0 +1,17 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-flip ::slotted(.swiper-slide-active), +.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +/* Flip slide shadows start *//* Flip slide shadows end */ diff --git a/build/assets/js/vendor/swiper/modules/effect-flip-element.min.css b/build/assets/js/vendor/swiper/modules/effect-flip-element.min.css new file mode 100644 index 0000000..40d852b --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-flip-element.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-flip.css b/build/assets/js/vendor/swiper/modules/effect-flip.css new file mode 100644 index 0000000..f4b1d34 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-flip.css @@ -0,0 +1,26 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ diff --git a/build/assets/js/vendor/swiper/modules/effect-flip.less b/build/assets/js/vendor/swiper/modules/effect-flip.less new file mode 100644 index 0000000..6c16d11 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-flip.less @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/build/assets/js/vendor/swiper/modules/effect-flip.min.css b/build/assets/js/vendor/swiper/modules/effect-flip.min.css new file mode 100644 index 0000000..b7656ff --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-flip.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-flip.min.mjs b/build/assets/js/vendor/swiper/modules/effect-flip.min.mjs new file mode 100644 index 0000000..70536c6 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-flip.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{l as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectFlip(e){let{swiper:t,extendParams:s,on:r}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(e,s)=>{let r=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");r||(r=createShadow("flip",e,t.isHorizontal()?"left":"top")),a||(a=createShadow("flip",e,t.isHorizontal()?"right":"bottom")),r&&(r.style.opacity=Math.max(-s,0)),a&&(a.style.opacity=Math.max(s,0))};effectInit({effect:"flip",swiper:t,on:r,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,r=t.params.flipEffect;for(let i=0;i{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),a(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFlip as default}; +//# sourceMappingURL=effect-flip.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-flip.min.mjs.map b/build/assets/js/vendor/swiper/modules/effect-flip.min.mjs.map new file mode 100644 index 0000000..9987ca6 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-flip.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-flip.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectFlip","_ref","swiper","extendParams","on","flipEffect","slideShadows","limitRotation","createSlideShadows","slideEl","progress","shadowBefore","isHorizontal","querySelector","shadowAfter","style","opacity","Math","max","effect","setTranslate","slides","rtlTranslate","rtl","params","i","length","min","offset","swiperSlideOffset","rotateY","rotateX","tx","cssMode","translate","ty","browser","isSafari","abs","zIndex","round","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","virtualTranslate"],"sources":["0"],"mappings":"YAAcA,iBAAoB,8CACpBC,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,wBAA2B,0BAEzC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,cAAc,EACdC,eAAe,KAGnB,MAAMC,EAAqB,CAACC,EAASC,KACnC,IAAIC,EAAeT,EAAOU,eAAiBH,EAAQI,cAAc,6BAA+BJ,EAAQI,cAAc,4BAClHC,EAAcZ,EAAOU,eAAiBH,EAAQI,cAAc,8BAAgCJ,EAAQI,cAAc,+BACjHF,IACHA,EAAehB,aAAa,OAAQc,EAASP,EAAOU,eAAiB,OAAS,QAE3EE,IACHA,EAAcnB,aAAa,OAAQc,EAASP,EAAOU,eAAiB,QAAU,WAE5ED,IAAcA,EAAaI,MAAMC,QAAUC,KAAKC,KAAKR,EAAU,IAC/DI,IAAaA,EAAYC,MAAMC,QAAUC,KAAKC,IAAIR,EAAU,GAAE,EAsEpEd,WAAW,CACTuB,OAAQ,OACRjB,SACAE,KACAgB,aA7DmB,KACnB,MAAMC,OACJA,EACAC,aAAcC,GACZrB,EACEsB,EAAStB,EAAOsB,OAAOnB,WAC7B,IAAK,IAAIoB,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,GAAK,EAAG,CACzC,MAAMhB,EAAUY,EAAOI,GACvB,IAAIf,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKU,IAAIlB,EAAQC,SAAU,IAAK,IAEtD,MAAMkB,EAASnB,EAAQoB,kBAEvB,IAAIC,GADY,IAAMpB,EAElBqB,EAAU,EACVC,EAAK9B,EAAOsB,OAAOS,SAAWL,EAAS1B,EAAOgC,WAAaN,EAC3DO,EAAK,EACJjC,EAAOU,eAKDW,IACTO,GAAWA,IALXK,EAAKH,EACLA,EAAK,EACLD,GAAWD,EACXA,EAAU,GAIR5B,EAAOkC,SAAWlC,EAAOkC,QAAQC,WAC/BpB,KAAKqB,IAAIR,GAAW,GAAK,GAAM,IACjCA,GAAW,MAETb,KAAKqB,IAAIP,GAAW,GAAK,GAAM,IACjCA,GAAW,OAGftB,EAAQM,MAAMwB,QAAUtB,KAAKqB,IAAIrB,KAAKuB,MAAM9B,IAAaW,EAAOK,OAC5DF,EAAOlB,cACTE,EAAmBC,EAASC,GAE9B,MAAM+B,EAAY,eAAeT,QAASG,qBAAsBJ,iBAAuBD,QACtEjC,aAAa2B,EAAQf,GAC7BM,MAAM0B,UAAYA,CAC7B,GAqBAC,cAnBoBC,IACpB,MAAMC,EAAoB1C,EAAOmB,OAAOwB,KAAIpC,GAAWV,oBAAoBU,KAC3EmC,EAAkBE,SAAQC,IACxBA,EAAGhC,MAAMiC,mBAAqB,GAAGL,MACjCI,EAAGE,iBAAiB,gHAAgHH,SAAQI,IAC1IA,EAASnC,MAAMiC,mBAAqB,GAAGL,KAAY,GACnD,IAEJ7C,2BAA2B,CACzBI,SACAyC,WACAC,qBACA,EAQFO,gBA1EsB,KAEtBjD,EAAOsB,OAAOnB,WACdH,EAAOmB,OAAOyB,SAAQrC,IACpB,IAAIC,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKU,IAAIlB,EAAQC,SAAU,IAAK,IAEtDF,EAAmBC,EAASC,EAAS,GACrC,EAkEF0C,gBAAiB,IAAMlD,EAAOsB,OAAOnB,WACrCgD,YAAa,KAAM,EACnBC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACdC,kBAAmBzD,EAAOsB,OAAOS,WAGvC,QAESjC"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/effect-flip.mjs b/build/assets/js/vendor/swiper/modules/effect-flip.mjs new file mode 100644 index 0000000..adf174a --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-flip.mjs @@ -0,0 +1,118 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { l as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFlip as default }; diff --git a/build/assets/js/vendor/swiper/modules/effect-flip.scss b/build/assets/js/vendor/swiper/modules/effect-flip.scss new file mode 100644 index 0000000..6c16d11 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/effect-flip.scss @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/build/assets/js/vendor/swiper/modules/free-mode-element.css b/build/assets/js/vendor/swiper/modules/free-mode-element.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/free-mode-element.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/build/assets/js/vendor/swiper/modules/free-mode-element.min.css b/build/assets/js/vendor/swiper/modules/free-mode-element.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/free-mode-element.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/free-mode.css b/build/assets/js/vendor/swiper/modules/free-mode.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/free-mode.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/build/assets/js/vendor/swiper/modules/free-mode.less b/build/assets/js/vendor/swiper/modules/free-mode.less new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/free-mode.less @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/build/assets/js/vendor/swiper/modules/free-mode.min.css b/build/assets/js/vendor/swiper/modules/free-mode.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/free-mode.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/free-mode.min.mjs b/build/assets/js/vendor/swiper/modules/free-mode.min.mjs new file mode 100644 index 0000000..e6a4df1 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/free-mode.min.mjs @@ -0,0 +1,2 @@ +import{d as now,j as elementTransitionEnd}from"../shared/utils.min.mjs";function freeMode(e){let{swiper:t,extendParams:o,emit:n,once:s}=e;o({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:o}=t;0===e.velocities.length&&e.velocities.push({position:o[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:o[t.isHorizontal()?"currentX":"currentY"],time:now()})},onTouchEnd:function(e){let{currentPos:o}=e;if(t.params.cssMode)return;const{params:i,wrapperEl:a,rtlTranslate:r,snapGrid:l,touchEventsData:m}=t,c=now()-m.touchStartTime;if(o<-t.minTranslate())t.slideTo(t.activeIndex);else if(o>-t.maxTranslate())t.slides.length1){const e=m.velocities.pop(),o=m.velocities.pop(),n=e.position-o.position,s=e.time-o.time;t.velocity=n/s,t.velocity/=2,Math.abs(t.velocity)150||now()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=i.freeMode.momentumVelocityRatio,m.velocities.length=0;let e=1e3*i.freeMode.momentumRatio;const o=t.velocity*e;let c=t.translate+o;r&&(c=-c);let d,u=!1;const f=20*Math.abs(t.velocity)*i.freeMode.momentumBounceRatio;let p;if(ct.minTranslate())i.freeMode.momentumBounce?(c-t.minTranslate()>f&&(c=t.minTranslate()+f),d=t.minTranslate(),u=!0,m.allowMomentumBounce=!0):c=t.minTranslate(),i.loop&&i.centeredSlides&&(p=!0);else if(i.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(l[e]-c){t.loopFix()})),0!==t.velocity){if(e=r?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),i.freeMode.sticky){const o=Math.abs((r?-c:c)-t.translate),n=t.slidesSizesGrid[t.activeIndex];e=o{t&&!t.destroyed&&m.allowMomentumBounce&&(n("momentumBounce"),t.setTransition(i.speed),setTimeout((()=>{t.setTranslate(d),elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(n("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(i.freeMode.sticky)return void t.slideToClosest();i.freeMode&&n("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||c>=i.longSwipesMs)&&(n("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})}export{freeMode as default}; +//# sourceMappingURL=free-mode.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/free-mode.min.mjs.map b/build/assets/js/vendor/swiper/modules/free-mode.min.mjs.map new file mode 100644 index 0000000..97162ea --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/free-mode.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"free-mode.mjs.mjs","names":["now","elementTransitionEnd","freeMode","_ref","swiper","extendParams","emit","once","enabled","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","Object","assign","onTouchStart","params","cssMode","translate","getTranslate","setTranslate","setTransition","touchEventsData","velocities","length","onTouchEnd","currentPos","rtl","onTouchMove","data","touches","push","position","isHorizontal","time","touchStartTime","_ref2","wrapperEl","rtlTranslate","snapGrid","timeDiff","minTranslate","slideTo","activeIndex","maxTranslate","slides","lastMoveEvent","pop","velocityEvent","distance","velocity","Math","abs","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","allowMomentumBounce","loop","centeredSlides","nextSlide","j","swipeDirection","loopFix","moveDistance","currentSlideSize","slidesSizesGrid","speed","slideToClosest","updateProgress","transitionStart","animating","destroyed","setTimeout","transitionEnd","updateActiveIndex","updateSlidesClasses","longSwipesMs"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/free-mode.mjs b/build/assets/js/vendor/swiper/modules/free-mode.mjs new file mode 100644 index 0000000..b04d7ac --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/free-mode.mjs @@ -0,0 +1,237 @@ +import { d as now, j as elementTransitionEnd } from '../shared/utils.mjs'; + +function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); +} + +export { freeMode as default }; diff --git a/build/assets/js/vendor/swiper/modules/free-mode.scss b/build/assets/js/vendor/swiper/modules/free-mode.scss new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/free-mode.scss @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/build/assets/js/vendor/swiper/modules/grid-element.css b/build/assets/js/vendor/swiper/modules/grid-element.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/grid-element.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/build/assets/js/vendor/swiper/modules/grid-element.min.css b/build/assets/js/vendor/swiper/modules/grid-element.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/grid-element.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/grid.css b/build/assets/js/vendor/swiper/modules/grid.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/grid.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/build/assets/js/vendor/swiper/modules/grid.less b/build/assets/js/vendor/swiper/modules/grid.less new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/grid.less @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/build/assets/js/vendor/swiper/modules/grid.min.css b/build/assets/js/vendor/swiper/modules/grid.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/grid.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/grid.min.mjs b/build/assets/js/vendor/swiper/modules/grid.min.mjs new file mode 100644 index 0000000..84f1b4e --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/grid.min.mjs @@ -0,0 +1,2 @@ +function Grid(e){let i,r,a,t,{swiper:s,extendParams:l,on:o}=e;l({grid:{rows:1,fill:"column"}});const n=()=>{let e=s.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*s.size:"string"==typeof e&&(e=parseFloat(e)),e};o("init",(()=>{t=s.params.grid&&s.params.grid.rows>1})),o("update",(()=>{const{params:e,el:i}=s,r=e.grid&&e.grid.rows>1;t&&!r?(i.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,s.emitContainerClasses()):!t&&r&&(i.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&i.classList.add(`${e.containerModifierClass}grid-column`),s.emitContainerClasses()),t=r})),s.grid={initSlides:e=>{const{slidesPerView:t}=s.params,{rows:l,fill:o}=s.params.grid,n=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:e.length;a=Math.floor(n/l),i=Math.floor(n/l)===n/l?n:Math.ceil(n/l)*l,"auto"!==t&&"row"===o&&(i=Math.max(i,t*l)),r=i/l},unsetSlides:()=>{s.slides&&s.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[s.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,t,l)=>{const{slidesPerGroup:o}=s.params,d=n(),{rows:p,fill:c}=s.params.grid,g=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:l.length;let u,h,m;if("row"===c&&o>1){const r=Math.floor(e/(o*p)),a=e-p*o*r,s=0===r?o:Math.min(Math.ceil((g-r*p*o)/p),o);m=Math.floor(a/s),h=a-m*s+r*o,u=h+m*i/p,t.style.order=u}else"column"===c?(h=Math.floor(e/p),m=e-h*p,(h>a||h===a&&m===p-1)&&(m+=1,m>=p&&(m=0,h+=1))):(m=Math.floor(e/r),h=e-m*r);t.row=m,t.column=h,t.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,t.style[s.getDirectionLabel("margin-top")]=0!==m?d&&`${d}px`:"",t.swiperSlideGridSet=!0},updateWrapperSize:(e,r)=>{const{centeredSlides:a,roundLengths:t}=s.params,l=n(),{rows:o}=s.params.grid;if(s.virtualSize=(e+l)*i,s.virtualSize=Math.ceil(s.virtualSize/o)-l,s.params.cssMode||(s.wrapperEl.style[s.getDirectionLabel("width")]=`${s.virtualSize+l}px`),a){const e=[];for(let i=0;i { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; +} + +export { Grid as default }; diff --git a/build/assets/js/vendor/swiper/modules/grid.scss b/build/assets/js/vendor/swiper/modules/grid.scss new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/grid.scss @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/build/assets/js/vendor/swiper/modules/hash-navigation-element.css b/build/assets/js/vendor/swiper/modules/hash-navigation-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/hash-navigation-element.css diff --git a/build/assets/js/vendor/swiper/modules/hash-navigation-element.min.css b/build/assets/js/vendor/swiper/modules/hash-navigation-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/hash-navigation-element.min.css diff --git a/build/assets/js/vendor/swiper/modules/hash-navigation.css b/build/assets/js/vendor/swiper/modules/hash-navigation.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/hash-navigation.css diff --git a/build/assets/js/vendor/swiper/modules/hash-navigation.less b/build/assets/js/vendor/swiper/modules/hash-navigation.less new file mode 100644 index 0000000..be8912a --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/hash-navigation.less @@ -0,0 +1,2 @@ +@import url('../swiper-vars.less'); + diff --git a/build/assets/js/vendor/swiper/modules/hash-navigation.min.css b/build/assets/js/vendor/swiper/modules/hash-navigation.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/hash-navigation.min.css diff --git a/build/assets/js/vendor/swiper/modules/hash-navigation.min.mjs b/build/assets/js/vendor/swiper/modules/hash-navigation.min.mjs new file mode 100644 index 0000000..0c58eff --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/hash-navigation.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren}from"../shared/utils.min.mjs";function HashNavigation(a){let{swiper:e,extendParams:t,emit:s,on:i}=a,n=!1;const r=getDocument(),h=getWindow();t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(a,t){if(e.virtual&&e.params.virtual.enabled){const a=e.slides.filter((a=>a.getAttribute("data-hash")===t))[0];if(!a)return 0;return parseInt(a.getAttribute("data-swiper-slide-index"),10)}return e.getSlideIndex(elementChildren(e.slidesEl,`.${e.params.slideClass}[data-hash="${t}"], swiper-slide[data-hash="${t}"]`)[0])}}});const d=()=>{s("hashChange");const a=r.location.hash.replace("#",""),t=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex];if(a!==(t?t.getAttribute("data-hash"):"")){const t=e.params.hashNavigation.getSlideIndex(e,a);if(void 0===t||Number.isNaN(t))return;e.slideTo(t)}},l=()=>{if(!n||!e.params.hashNavigation.enabled)return;const a=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],t=a?a.getAttribute("data-hash")||a.getAttribute("data-history"):"";e.params.hashNavigation.replaceState&&h.history&&h.history.replaceState?(h.history.replaceState(null,null,`#${t}`||""),s("hashSet")):(r.location.hash=t||"",s("hashSet"))};i("init",(()=>{e.params.hashNavigation.enabled&&(()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;n=!0;const a=r.location.hash.replace("#","");if(a){const t=0,s=e.params.hashNavigation.getSlideIndex(e,a);e.slideTo(s||0,t,e.params.runCallbacksOnInit,!0)}e.params.hashNavigation.watchState&&h.addEventListener("hashchange",d)})()})),i("destroy",(()=>{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&h.removeEventListener("hashchange",d)})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{n&&l()})),i("slideChange",(()=>{n&&e.params.cssMode&&l()}))}export{HashNavigation as default}; +//# sourceMappingURL=hash-navigation.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/hash-navigation.min.mjs.map b/build/assets/js/vendor/swiper/modules/hash-navigation.min.mjs.map new file mode 100644 index 0000000..373df60 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/hash-navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"hash-navigation.mjs.mjs","names":["getDocument","getWindow","elementChildren","HashNavigation","_ref","swiper","extendParams","emit","on","initialized","document","window","hashNavigation","enabled","replaceState","watchState","getSlideIndex","_s","hash","virtual","params","slideWithHash","slides","filter","slideEl","getAttribute","parseInt","slidesEl","slideClass","onHashChange","newHash","location","replace","activeSlideEl","querySelector","activeIndex","newIndex","Number","isNaN","slideTo","setHash","activeSlideHash","history","speed","index","runCallbacksOnInit","addEventListener","init","removeEventListener","cssMode"],"sources":["0"],"mappings":"YAAcA,iBAAkBC,cAAiB,+CACnCC,oBAAuB,0BAErC,SAASC,eAAeC,GACtB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,KACZA,EAAIC,GACJA,GACEJ,EACAK,GAAc,EAClB,MAAMC,EAAWV,cACXW,EAASV,YACfK,EAAa,CACXM,eAAgB,CACdC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZ,aAAAC,CAAcC,EAAIC,GAChB,GAAIb,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAS,CACnD,MAAMQ,EAAgBhB,EAAOiB,OAAOC,QAAOC,GAAWA,EAAQC,aAAa,eAAiBP,IAAM,GAClG,IAAKG,EAAe,OAAO,EAE3B,OADcK,SAASL,EAAcI,aAAa,2BAA4B,GAEhF,CACA,OAAOpB,EAAOW,cAAcd,gBAAgBG,EAAOsB,SAAU,IAAItB,EAAOe,OAAOQ,yBAAyBV,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMW,EAAe,KACnBtB,EAAK,cACL,MAAMuB,EAAUpB,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IAC9CC,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAElL,GAAIL,KADoBG,EAAgBA,EAAcR,aAAa,aAAe,IACjD,CAC/B,MAAMW,EAAW/B,EAAOe,OAAOR,eAAeI,cAAcX,EAAQyB,GACpE,QAAwB,IAAbM,GAA4BC,OAAOC,MAAMF,GAAW,OAC/D/B,EAAOkC,QAAQH,EACjB,GAEII,EAAU,KACd,IAAK/B,IAAgBJ,EAAOe,OAAOR,eAAeC,QAAS,OAC3D,MAAMoB,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAC5KM,EAAkBR,EAAgBA,EAAcR,aAAa,cAAgBQ,EAAcR,aAAa,gBAAkB,GAC5HpB,EAAOe,OAAOR,eAAeE,cAAgBH,EAAO+B,SAAW/B,EAAO+B,QAAQ5B,cAChFH,EAAO+B,QAAQ5B,aAAa,KAAM,KAAM,IAAI2B,KAAqB,IACjElC,EAAK,aAELG,EAASqB,SAASb,KAAOuB,GAAmB,GAC5ClC,EAAK,WACP,EAoBFC,EAAG,QAAQ,KACLH,EAAOe,OAAOR,eAAeC,SAnBtB,MACX,IAAKR,EAAOe,OAAOR,eAAeC,SAAWR,EAAOe,OAAOsB,SAAWrC,EAAOe,OAAOsB,QAAQ7B,QAAS,OACrGJ,GAAc,EACd,MAAMS,EAAOR,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IACjD,GAAId,EAAM,CACR,MAAMyB,EAAQ,EACRC,EAAQvC,EAAOe,OAAOR,eAAeI,cAAcX,EAAQa,GACjEb,EAAOkC,QAAQK,GAAS,EAAGD,EAAOtC,EAAOe,OAAOyB,oBAAoB,EACtE,CACIxC,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOmC,iBAAiB,aAAcjB,EACxC,EASEkB,EACF,IAEFvC,EAAG,WAAW,KACRH,EAAOe,OAAOR,eAAeC,SAV7BR,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOqC,oBAAoB,aAAcnB,EAW3C,IAEFrB,EAAG,4CAA4C,KACzCC,GACF+B,GACF,IAEFhC,EAAG,eAAe,KACZC,GAAeJ,EAAOe,OAAO6B,SAC/BT,GACF,GAEJ,QAESrC"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/hash-navigation.mjs b/build/assets/js/vendor/swiper/modules/hash-navigation.mjs new file mode 100644 index 0000000..cf33420 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/hash-navigation.mjs @@ -0,0 +1,93 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren } from '../shared/utils.mjs'; + +function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); +} + +export { HashNavigation as default }; diff --git a/build/assets/js/vendor/swiper/modules/hash-navigation.scss b/build/assets/js/vendor/swiper/modules/hash-navigation.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/hash-navigation.scss diff --git a/build/assets/js/vendor/swiper/modules/history-element.css b/build/assets/js/vendor/swiper/modules/history-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/history-element.css diff --git a/build/assets/js/vendor/swiper/modules/history-element.min.css b/build/assets/js/vendor/swiper/modules/history-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/history-element.min.css diff --git a/build/assets/js/vendor/swiper/modules/history.css b/build/assets/js/vendor/swiper/modules/history.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/history.css diff --git a/build/assets/js/vendor/swiper/modules/history.less b/build/assets/js/vendor/swiper/modules/history.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/history.less diff --git a/build/assets/js/vendor/swiper/modules/history.min.css b/build/assets/js/vendor/swiper/modules/history.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/history.min.css diff --git a/build/assets/js/vendor/swiper/modules/history.min.mjs b/build/assets/js/vendor/swiper/modules/history.min.mjs new file mode 100644 index 0000000..3e525fb --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/history.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";function History(e){let{swiper:t,extendParams:a,on:s}=e;a({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let r=!1,i={};const o=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),l=e=>{const t=getWindow();let a;a=e?new URL(e):t.location;const s=a.pathname.slice(1).split("/").filter((e=>""!==e)),r=s.length;return{key:s[r-2],value:s[r-1]}},n=(e,a)=>{const s=getWindow();if(!r||!t.params.history.enabled)return;let i;i=t.params.url?new URL(t.params.url):s.location;const l=t.slides[a];let n=o(l.getAttribute("data-history"));if(t.params.history.root.length>0){let a=t.params.history.root;"/"===a[a.length-1]&&(a=a.slice(0,a.length-1)),n=`${a}/${e?`${e}/`:""}${n}`}else i.pathname.includes(e)||(n=`${e?`${e}/`:""}${n}`);t.params.history.keepQuery&&(n+=i.search);const p=s.history.state;p&&p.value===n||(t.params.history.replaceState?s.history.replaceState({value:n},null,n):s.history.pushState({value:n},null,n))},p=(e,a,s)=>{if(a)for(let r=0,i=t.slides.length;r{i=l(t.params.url),p(t.params.speed,i.value,!1)};s("init",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);r=!0,i=l(t.params.url),i.key||i.value?(p(0,i.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",d)):t.params.history.replaceState||e.addEventListener("popstate",d)}})()})),s("destroy",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();t.params.history.replaceState||e.removeEventListener("popstate",d)})()})),s("transitionEnd _freeModeNoMomentumRelease",(()=>{r&&n(t.params.history.key,t.activeIndex)})),s("slideChange",(()=>{r&&t.params.cssMode&&n(t.params.history.key,t.activeIndex)}))}export{History as default}; +//# sourceMappingURL=history.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/history.min.mjs.map b/build/assets/js/vendor/swiper/modules/history.min.mjs.map new file mode 100644 index 0000000..6c5a493 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/history.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"history.mjs.mjs","names":["getWindow","History","_ref","swiper","extendParams","on","history","enabled","root","replaceState","key","keepQuery","initialized","paths","slugify","text","toString","replace","getPathValues","urlOverride","window","location","URL","pathArray","pathname","slice","split","filter","part","total","length","value","setHistory","index","params","url","slide","slides","getAttribute","includes","search","currentState","state","pushState","scrollToSlide","speed","runCallbacks","i","getSlideIndex","slideTo","setHistoryPopState","hashNavigation","runCallbacksOnInit","addEventListener","init","removeEventListener","destroy","activeIndex","cssMode"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/history.mjs b/build/assets/js/vendor/swiper/modules/history.mjs new file mode 100644 index 0000000..2228d63 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/history.mjs @@ -0,0 +1,142 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; + +function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); +} + +export { History as default }; diff --git a/build/assets/js/vendor/swiper/modules/history.scss b/build/assets/js/vendor/swiper/modules/history.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/history.scss diff --git a/build/assets/js/vendor/swiper/modules/index.min.mjs b/build/assets/js/vendor/swiper/modules/index.min.mjs new file mode 100644 index 0000000..41b89c3 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/index.min.mjs @@ -0,0 +1,2 @@ +export{default as Virtual}from"./virtual.min.mjs";export{default as Keyboard}from"./keyboard.min.mjs";export{default as Mousewheel}from"./mousewheel.min.mjs";export{default as Navigation}from"./navigation.min.mjs";export{default as Pagination}from"./pagination.min.mjs";export{default as Scrollbar}from"./scrollbar.min.mjs";export{default as Parallax}from"./parallax.min.mjs";export{default as Zoom}from"./zoom.min.mjs";export{default as Controller}from"./controller.min.mjs";export{default as A11y}from"./a11y.min.mjs";export{default as History}from"./history.min.mjs";export{default as HashNavigation}from"./hash-navigation.min.mjs";export{default as Autoplay}from"./autoplay.min.mjs";export{default as Thumbs}from"./thumbs.min.mjs";export{default as FreeMode}from"./free-mode.min.mjs";export{default as Grid}from"./grid.min.mjs";export{default as Manipulation}from"./manipulation.min.mjs";export{default as EffectFade}from"./effect-fade.min.mjs";export{default as EffectCube}from"./effect-cube.min.mjs";export{default as EffectFlip}from"./effect-flip.min.mjs";export{default as EffectCoverflow}from"./effect-coverflow.min.mjs";export{default as EffectCreative}from"./effect-creative.min.mjs";export{default as EffectCards}from"./effect-cards.min.mjs"; +//# sourceMappingURL=index.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/index.min.mjs.map b/build/assets/js/vendor/swiper/modules/index.min.mjs.map new file mode 100644 index 0000000..1492964 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/index.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs.mjs","names":[],"sources":["0"],"mappings":"OAAQ,uBAAyB,2BACzB,wBAA0B,4BAC1B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,yBAA2B,6BAC3B,wBAA0B,4BAC1B,oBAAsB,wBACtB,0BAA4B,8BAC5B,oBAAsB,wBACtB,uBAAyB,2BACzB,8BAAgC,mCAChC,wBAA0B,4BAC1B,sBAAwB,0BACxB,wBAA0B,6BAC1B,oBAAsB,wBACtB,4BAA8B,gCAC9B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,+BAAiC,oCACjC,8BAAgC,mCAChC,2BAA6B"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/index.mjs b/build/assets/js/vendor/swiper/modules/index.mjs new file mode 100644 index 0000000..3186045 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/index.mjs @@ -0,0 +1,23 @@ +export {default as Virtual} from './virtual.mjs'; +export {default as Keyboard} from './keyboard.mjs'; +export {default as Mousewheel} from './mousewheel.mjs'; +export {default as Navigation} from './navigation.mjs'; +export {default as Pagination} from './pagination.mjs'; +export {default as Scrollbar} from './scrollbar.mjs'; +export {default as Parallax} from './parallax.mjs'; +export {default as Zoom} from './zoom.mjs'; +export {default as Controller} from './controller.mjs'; +export {default as A11y} from './a11y.mjs'; +export {default as History} from './history.mjs'; +export {default as HashNavigation} from './hash-navigation.mjs'; +export {default as Autoplay} from './autoplay.mjs'; +export {default as Thumbs} from './thumbs.mjs'; +export {default as FreeMode} from './free-mode.mjs'; +export {default as Grid} from './grid.mjs'; +export {default as Manipulation} from './manipulation.mjs'; +export {default as EffectFade} from './effect-fade.mjs'; +export {default as EffectCube} from './effect-cube.mjs'; +export {default as EffectFlip} from './effect-flip.mjs'; +export {default as EffectCoverflow} from './effect-coverflow.mjs'; +export {default as EffectCreative} from './effect-creative.mjs'; +export {default as EffectCards} from './effect-cards.mjs'; \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/keyboard-element.css b/build/assets/js/vendor/swiper/modules/keyboard-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/keyboard-element.css diff --git a/build/assets/js/vendor/swiper/modules/keyboard-element.min.css b/build/assets/js/vendor/swiper/modules/keyboard-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/keyboard-element.min.css diff --git a/build/assets/js/vendor/swiper/modules/keyboard.css b/build/assets/js/vendor/swiper/modules/keyboard.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/keyboard.css diff --git a/build/assets/js/vendor/swiper/modules/keyboard.less b/build/assets/js/vendor/swiper/modules/keyboard.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/keyboard.less diff --git a/build/assets/js/vendor/swiper/modules/keyboard.min.css b/build/assets/js/vendor/swiper/modules/keyboard.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/keyboard.min.css diff --git a/build/assets/js/vendor/swiper/modules/keyboard.min.mjs b/build/assets/js/vendor/swiper/modules/keyboard.min.mjs new file mode 100644 index 0000000..f1d9d2d --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/keyboard.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{a as elementParents,b as elementOffset}from"../shared/utils.min.mjs";function Keyboard(e){let{swiper:t,extendParams:n,on:a,emit:r}=e;const l=getDocument(),i=getWindow();function o(e){if(!t.enabled)return;const{rtlTranslate:n}=t;let a=e;a.originalEvent&&(a=a.originalEvent);const o=a.keyCode||a.charCode,s=t.params.keyboard.pageUpDown,d=s&&33===o,f=s&&34===o,m=37===o,b=39===o,c=38===o,p=40===o;if(!t.allowSlideNext&&(t.isHorizontal()&&b||t.isVertical()&&p||f))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&m||t.isVertical()&&c||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||l.activeElement&&l.activeElement.nodeName&&("input"===l.activeElement.nodeName.toLowerCase()||"textarea"===l.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(d||f||m||b||c||p)){let e=!1;if(elementParents(t.el,`.${t.params.slideClass}, swiper-slide`).length>0&&0===elementParents(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,r=a.clientWidth,l=a.clientHeight,o=i.innerWidth,s=i.innerHeight,d=elementOffset(a);n&&(d.left-=a.scrollLeft);const f=[[d.left,d.top],[d.left+r,d.top],[d.left,d.top+l],[d.left+r,d.top+l]];for(let t=0;t=0&&n[0]<=o&&n[1]>=0&&n[1]<=s){if(0===n[0]&&0===n[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||f||m||b)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((f||b)&&!n||(d||m)&&n)&&t.slideNext(),((d||m)&&!n||(f||b)&&n)&&t.slidePrev()):((d||f||c||p)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(f||p)&&t.slideNext(),(d||c)&&t.slidePrev()),r("keyPress",o)}}function s(){t.keyboard.enabled||(l.addEventListener("keydown",o),t.keyboard.enabled=!0)}function d(){t.keyboard.enabled&&(l.removeEventListener("keydown",o),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},n({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&s()})),a("destroy",(()=>{t.keyboard.enabled&&d()})),Object.assign(t.keyboard,{enable:s,disable:d})}export{Keyboard as default}; +//# sourceMappingURL=keyboard.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/keyboard.min.mjs.map b/build/assets/js/vendor/swiper/modules/keyboard.min.mjs.map new file mode 100644 index 0000000..04ab4eb --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/keyboard.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"keyboard.mjs.mjs","names":["getDocument","getWindow","elementParents","elementOffset","Keyboard","_ref","swiper","extendParams","on","emit","document","window","handle","event","enabled","rtlTranslate","rtl","e","originalEvent","kc","keyCode","charCode","pageUpDown","params","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","shiftKey","altKey","ctrlKey","metaKey","activeElement","nodeName","toLowerCase","onlyInViewport","inView","el","slideClass","length","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","left","scrollLeft","swiperCoord","top","i","point","preventDefault","returnValue","slideNext","slidePrev","enable","addEventListener","disable","removeEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/keyboard.mjs b/build/assets/js/vendor/swiper/modules/keyboard.mjs new file mode 100644 index 0000000..ba62a46 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/keyboard.mjs @@ -0,0 +1,117 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { a as elementParents, b as elementOffset } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); +} + +export { Keyboard as default }; diff --git a/build/assets/js/vendor/swiper/modules/keyboard.scss b/build/assets/js/vendor/swiper/modules/keyboard.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/keyboard.scss diff --git a/build/assets/js/vendor/swiper/modules/manipulation-element.css b/build/assets/js/vendor/swiper/modules/manipulation-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/manipulation-element.css diff --git a/build/assets/js/vendor/swiper/modules/manipulation-element.min.css b/build/assets/js/vendor/swiper/modules/manipulation-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/manipulation-element.min.css diff --git a/build/assets/js/vendor/swiper/modules/manipulation.css b/build/assets/js/vendor/swiper/modules/manipulation.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/manipulation.css diff --git a/build/assets/js/vendor/swiper/modules/manipulation.less b/build/assets/js/vendor/swiper/modules/manipulation.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/manipulation.less diff --git a/build/assets/js/vendor/swiper/modules/manipulation.min.css b/build/assets/js/vendor/swiper/modules/manipulation.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/manipulation.min.css diff --git a/build/assets/js/vendor/swiper/modules/manipulation.min.mjs b/build/assets/js/vendor/swiper/modules/manipulation.min.mjs new file mode 100644 index 0000000..1b7832f --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/manipulation.min.mjs @@ -0,0 +1,2 @@ +function appendSlide(e){const l=this,{params:o,slidesEl:i}=l;o.loop&&l.loopDestroy();const t=e=>{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,i.append(l.children[0]),l.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let l=0;l{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,t.prepend(l.children[0]),l.innerHTML=""}else t.prepend(e)};if("object"==typeof e&&"length"in e){for(let l=0;l=s)return void o.appendSlide(l);let p=d>e?d+1:d;const r=[];for(let l=s-1;l>=e;l-=1){const e=o.slides[l];e.remove(),r.unshift(e)}if("object"==typeof l&&"length"in l){for(let e=0;ee?d+l.length:d}else n.append(l);for(let e=0;e { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } +} + +function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} + +function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); +} + +export { Manipulation as default }; diff --git a/build/assets/js/vendor/swiper/modules/manipulation.scss b/build/assets/js/vendor/swiper/modules/manipulation.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/manipulation.scss diff --git a/build/assets/js/vendor/swiper/modules/mousewheel-element.css b/build/assets/js/vendor/swiper/modules/mousewheel-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/mousewheel-element.css diff --git a/build/assets/js/vendor/swiper/modules/mousewheel-element.min.css b/build/assets/js/vendor/swiper/modules/mousewheel-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/mousewheel-element.min.css diff --git a/build/assets/js/vendor/swiper/modules/mousewheel.css b/build/assets/js/vendor/swiper/modules/mousewheel.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/mousewheel.css diff --git a/build/assets/js/vendor/swiper/modules/mousewheel.less b/build/assets/js/vendor/swiper/modules/mousewheel.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/mousewheel.less diff --git a/build/assets/js/vendor/swiper/modules/mousewheel.min.css b/build/assets/js/vendor/swiper/modules/mousewheel.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/mousewheel.min.css diff --git a/build/assets/js/vendor/swiper/modules/mousewheel.min.mjs b/build/assets/js/vendor/swiper/modules/mousewheel.min.mjs new file mode 100644 index 0000000..312e9b6 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/mousewheel.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{n as nextTick,d as now}from"../shared/utils.min.mjs";function Mousewheel(e){let{swiper:t,extendParams:a,on:s,emit:n}=e;const l=getWindow();let i;a({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let r,o=now();const d=[];function m(){t.enabled&&(t.mouseEntered=!0)}function p(){t.enabled&&(t.mouseEntered=!1)}function u(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&now()-o<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),n("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),n("scroll",e.raw)),o=(new l.Date).getTime(),!1)))}function h(e){let a=e,s=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const l=t.params.mousewheel;t.params.cssMode&&a.preventDefault();let o=t.el;"container"!==t.params.mousewheel.eventsTarget&&(o=document.querySelector(t.params.mousewheel.eventsTarget));const m=o&&o.contains(a.target);if(!t.mouseEntered&&!m&&!l.releaseOnEdges)return!0;a.originalEvent&&(a=a.originalEvent);let p=0;const h=t.rtlTranslate?-1:1,c=function(e){let t=0,a=0,s=0,n=0;return"detail"in e&&(a=e.detail),"wheelDelta"in e&&(a=-e.wheelDelta/120),"wheelDeltaY"in e&&(a=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=a,a=0),s=10*t,n=10*a,"deltaY"in e&&(n=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=n,n=0),(s||n)&&e.deltaMode&&(1===e.deltaMode?(s*=40,n*=40):(s*=800,n*=800)),s&&!t&&(t=s<1?-1:1),n&&!a&&(a=n<1?-1:1),{spinX:t,spinY:a,pixelX:s,pixelY:n}}(a);if(l.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(c.pixelX)>Math.abs(c.pixelY)))return!0;p=-c.pixelX*h}else{if(!(Math.abs(c.pixelY)>Math.abs(c.pixelX)))return!0;p=-c.pixelY}else p=Math.abs(c.pixelX)>Math.abs(c.pixelY)?-c.pixelX*h:-c.pixelY;if(0===p)return!0;l.invert&&(p=-p);let w=t.getTranslate()+p*l.sensitivity;if(w>=t.minTranslate()&&(w=t.minTranslate()),w<=t.maxTranslate()&&(w=t.maxTranslate()),s=!!t.params.loop||!(w===t.minTranslate()||w===t.maxTranslate()),s&&t.params.nested&&a.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:now(),delta:Math.abs(p),direction:Math.sign(p)},s=r&&e.time=t.minTranslate()&&(o=t.minTranslate()),o<=t.maxTranslate()&&(o=t.maxTranslate()),t.setTransition(0),t.setTranslate(o),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!m&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(i),i=void 0,d.length>=15&&d.shift();const a=d.length?d[d.length-1]:void 0,s=d[0];if(d.push(e),a&&(e.delta>a.delta||e.direction!==a.direction))d.splice(0);else if(d.length>=15&&e.time-s.time<500&&s.delta-e.delta>=1&&e.delta<=6){const a=p>0?.8:.2;r=e,d.splice(0),i=nextTick((()=>{t.slideToClosest(t.params.speed,!0,void 0,a)}),0)}i||(i=nextTick((()=>{r=e,d.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(s||n("scroll",a),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),l.releaseOnEdges&&(o===t.minTranslate()||o===t.maxTranslate()))return!0}}else{const a={time:now(),delta:Math.abs(p),direction:Math.sign(p),raw:e};d.length>=2&&d.shift();const s=d.length?d[d.length-1]:void 0;if(d.push(a),s?(a.direction!==s.direction||a.delta>s.delta||a.time>s.time+150)&&u(a):u(a),function(e){const a=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&a.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&a.releaseOnEdges)return!0;return!1}(a))return!0}return a.preventDefault?a.preventDefault():a.returnValue=!1,!1}function c(e){let a=t.el;"container"!==t.params.mousewheel.eventsTarget&&(a=document.querySelector(t.params.mousewheel.eventsTarget)),a[e]("mouseenter",m),a[e]("mouseleave",p),a[e]("wheel",h)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",h),!0):!t.mousewheel.enabled&&(c("addEventListener"),t.mousewheel.enabled=!0,!0)}function f(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,h),!0):!!t.mousewheel.enabled&&(c("removeEventListener"),t.mousewheel.enabled=!1,!0)}s("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&f(),t.params.mousewheel.enabled&&w()})),s("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&f()})),Object.assign(t.mousewheel,{enable:w,disable:f})}export{Mousewheel as default}; +//# sourceMappingURL=mousewheel.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/mousewheel.min.mjs.map b/build/assets/js/vendor/swiper/modules/mousewheel.min.mjs.map new file mode 100644 index 0000000..678fdba --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/mousewheel.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"mousewheel.mjs.mjs","names":["getWindow","nextTick","now","Mousewheel","_ref","swiper","extendParams","on","emit","window","timeout","mousewheel","enabled","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","params","delta","direction","isEnd","loop","animating","slideNext","raw","isBeginning","slidePrev","Date","getTime","handle","event","e","disableParentSwiper","target","closest","cssMode","preventDefault","targetEl","el","document","querySelector","targetElContainsTarget","contains","originalEvent","rtlFactor","rtlTranslate","data","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","normalize","isHorizontal","Math","abs","positions","getTranslate","minTranslate","maxTranslate","nested","stopPropagation","freeMode","time","sign","ignoreWheelEvents","undefined","position","wasBeginning","wasEnd","setTransition","setTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","loopFix","byMousewheel","sticky","clearTimeout","length","shift","prevEvent","firstEvent","push","splice","snapToThreshold","slideToClosest","speed","autoplay","autoplayDisableOnInteraction","stop","releaseScroll","returnValue","events","method","enable","wrapperEl","removeEventListener","disable","addEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/mousewheel.mjs b/build/assets/js/vendor/swiper/modules/mousewheel.mjs new file mode 100644 index 0000000..28c4d2e --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/mousewheel.mjs @@ -0,0 +1,393 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { n as nextTick, d as now } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); +} + +export { Mousewheel as default }; diff --git a/build/assets/js/vendor/swiper/modules/mousewheel.scss b/build/assets/js/vendor/swiper/modules/mousewheel.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/mousewheel.scss diff --git a/build/assets/js/vendor/swiper/modules/navigation-element.css b/build/assets/js/vendor/swiper/modules/navigation-element.css new file mode 100644 index 0000000..46a2918 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/navigation-element.css @@ -0,0 +1,63 @@ +:host { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start *//* Navigation font end */ diff --git a/build/assets/js/vendor/swiper/modules/navigation-element.min.css b/build/assets/js/vendor/swiper/modules/navigation-element.min.css new file mode 100644 index 0000000..70d1870 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/navigation-element.min.css @@ -0,0 +1 @@ +:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/navigation.css b/build/assets/js/vendor/swiper/modules/navigation.css new file mode 100644 index 0000000..a287b8a --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/navigation.css @@ -0,0 +1,86 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ diff --git a/build/assets/js/vendor/swiper/modules/navigation.less b/build/assets/js/vendor/swiper/modules/navigation.less new file mode 100644 index 0000000..5243fe6 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/navigation.less @@ -0,0 +1,86 @@ +@import url('../swiper-vars.less'); + +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +/* Navigation font end */ diff --git a/build/assets/js/vendor/swiper/modules/navigation.min.css b/build/assets/js/vendor/swiper/modules/navigation.min.css new file mode 100644 index 0000000..d93c5d8 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/navigation.min.css @@ -0,0 +1 @@ +:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/navigation.min.mjs b/build/assets/js/vendor/swiper/modules/navigation.min.mjs new file mode 100644 index 0000000..24226bd --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/navigation.min.mjs @@ -0,0 +1,2 @@ +import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";function Navigation(a){let{swiper:n,extendParams:e,on:i,emit:t}=a;e({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),n.navigation={nextEl:null,prevEl:null};const s=a=>(Array.isArray(a)?a:[a]).filter((a=>!!a));function l(a){let e;return a&&"string"==typeof a&&n.isElement&&(e=n.el.querySelector(a),e)?e:(a&&("string"==typeof a&&(e=[...document.querySelectorAll(a)]),n.params.uniqueNavElements&&"string"==typeof a&&e.length>1&&1===n.el.querySelectorAll(a).length&&(e=n.el.querySelector(a))),a&&!e?a:e)}function o(a,e){const i=n.params.navigation;(a=s(a)).forEach((a=>{a&&(a.classList[e?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===a.tagName&&(a.disabled=e),n.params.watchOverflow&&n.enabled&&a.classList[n.isLocked?"add":"remove"](i.lockClass))}))}function r(){const{nextEl:a,prevEl:e}=n.navigation;if(n.params.loop)return o(e,!1),void o(a,!1);o(e,n.isBeginning&&!n.params.rewind),o(a,n.isEnd&&!n.params.rewind)}function d(a){a.preventDefault(),(!n.isBeginning||n.params.loop||n.params.rewind)&&(n.slidePrev(),t("navigationPrev"))}function c(a){a.preventDefault(),(!n.isEnd||n.params.loop||n.params.rewind)&&(n.slideNext(),t("navigationNext"))}function p(){const a=n.params.navigation;if(n.params.navigation=createElementIfNotDefined(n,n.originalParams.navigation,n.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!a.nextEl&&!a.prevEl)return;let e=l(a.nextEl),i=l(a.prevEl);Object.assign(n.navigation,{nextEl:e,prevEl:i}),e=s(e),i=s(i);const t=(e,i)=>{e&&e.addEventListener("click","next"===i?c:d),!n.enabled&&e&&e.classList.add(...a.lockClass.split(" "))};e.forEach((a=>t(a,"next"))),i.forEach((a=>t(a,"prev")))}function v(){let{nextEl:a,prevEl:e}=n.navigation;a=s(a),e=s(e);const i=(a,e)=>{a.removeEventListener("click","next"===e?c:d),a.classList.remove(...n.params.navigation.disabledClass.split(" "))};a.forEach((a=>i(a,"next"))),e.forEach((a=>i(a,"prev")))}i("init",(()=>{!1===n.params.navigation.enabled?g():(p(),r())})),i("toEdge fromEdge lock unlock",(()=>{r()})),i("destroy",(()=>{v()})),i("enable disable",(()=>{let{nextEl:a,prevEl:e}=n.navigation;a=s(a),e=s(e),n.enabled?r():[...a,...e].filter((a=>!!a)).forEach((a=>a.classList.add(n.params.navigation.lockClass)))})),i("click",((a,e)=>{let{nextEl:i,prevEl:l}=n.navigation;i=s(i),l=s(l);const o=e.target;if(n.params.navigation.hideOnClick&&!l.includes(o)&&!i.includes(o)){if(n.pagination&&n.params.pagination&&n.params.pagination.clickable&&(n.pagination.el===o||n.pagination.el.contains(o)))return;let a;i.length?a=i[0].classList.contains(n.params.navigation.hiddenClass):l.length&&(a=l[0].classList.contains(n.params.navigation.hiddenClass)),t(!0===a?"navigationShow":"navigationHide"),[...i,...l].filter((a=>!!a)).forEach((a=>a.classList.toggle(n.params.navigation.hiddenClass)))}}));const g=()=>{n.el.classList.add(...n.params.navigation.navigationDisabledClass.split(" ")),v()};Object.assign(n.navigation,{enable:()=>{n.el.classList.remove(...n.params.navigation.navigationDisabledClass.split(" ")),p(),r()},disable:g,update:r,init:p,destroy:v})}export{Navigation as default}; +//# sourceMappingURL=navigation.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/navigation.min.mjs.map b/build/assets/js/vendor/swiper/modules/navigation.min.mjs.map new file mode 100644 index 0000000..5a0e37f --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"navigation.mjs.mjs","names":["createElementIfNotDefined","Navigation","_ref","swiper","extendParams","on","emit","navigation","nextEl","prevEl","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","el","Array","isArray","filter","e","getEl","res","isElement","querySelector","document","querySelectorAll","params","uniqueNavElements","length","toggleEl","disabled","forEach","subEl","classList","split","tagName","watchOverflow","enabled","isLocked","update","loop","isBeginning","rewind","isEnd","onPrevClick","preventDefault","slidePrev","onNextClick","slideNext","init","originalParams","Object","assign","initButton","dir","addEventListener","add","destroy","destroyButton","removeEventListener","remove","disable","_s","targetEl","target","includes","pagination","clickable","contains","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/navigation.mjs b/build/assets/js/vendor/swiper/modules/navigation.mjs new file mode 100644 index 0000000..07eb863 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/navigation.mjs @@ -0,0 +1,191 @@ +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; + +function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); +} + +export { Navigation as default }; diff --git a/build/assets/js/vendor/swiper/modules/navigation.scss b/build/assets/js/vendor/swiper/modules/navigation.scss new file mode 100644 index 0000000..8fb729d --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/navigation.scss @@ -0,0 +1,87 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ + } +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +/* Navigation font end */ diff --git a/build/assets/js/vendor/swiper/modules/pagination-element.css b/build/assets/js/vendor/swiper/modules/pagination-element.css new file mode 100644 index 0000000..cae824f --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/pagination-element.css @@ -0,0 +1,184 @@ +:host { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/build/assets/js/vendor/swiper/modules/pagination-element.min.css b/build/assets/js/vendor/swiper/modules/pagination-element.min.css new file mode 100644 index 0000000..398a345 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/pagination-element.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/pagination.css b/build/assets/js/vendor/swiper/modules/pagination.css new file mode 100644 index 0000000..20bda39 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/pagination.css @@ -0,0 +1,184 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/build/assets/js/vendor/swiper/modules/pagination.less b/build/assets/js/vendor/swiper/modules/pagination.less new file mode 100644 index 0000000..202e40c --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/pagination.less @@ -0,0 +1,187 @@ +@import url('../swiper-vars.less'); + +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/build/assets/js/vendor/swiper/modules/pagination.min.css b/build/assets/js/vendor/swiper/modules/pagination.min.css new file mode 100644 index 0000000..398a345 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/pagination.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/pagination.min.mjs b/build/assets/js/vendor/swiper/modules/pagination.min.mjs new file mode 100644 index 0000000..d0c1ac1 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/pagination.min.mjs @@ -0,0 +1,2 @@ +import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{f as elementOuterSize,g as elementIndex,a as elementParents}from"../shared/utils.min.mjs";function Pagination(a){let{swiper:e,extendParams:s,on:l,emit:t}=a;const i="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:a=>a,formatFractionTotal:a=>a,bulletClass:`${i}-bullet`,bulletActiveClass:`${i}-bullet-active`,modifierClass:`${i}-`,currentClass:`${i}-current`,totalClass:`${i}-total`,hiddenClass:`${i}-hidden`,progressbarFillClass:`${i}-progressbar-fill`,progressbarOppositeClass:`${i}-progressbar-opposite`,clickableClass:`${i}-clickable`,lockClass:`${i}-lock`,horizontalClass:`${i}-horizontal`,verticalClass:`${i}-vertical`,paginationDisabledClass:`${i}-disabled`}}),e.pagination={el:null,bullets:[]};let r=0;const o=a=>(Array.isArray(a)?a:[a]).filter((a=>!!a));function p(){return!e.params.pagination.el||!e.pagination.el||Array.isArray(e.pagination.el)&&0===e.pagination.el.length}function c(a,s){const{bulletActiveClass:l}=e.params.pagination;a&&(a=a[("prev"===s?"previous":"next")+"ElementSibling"])&&(a.classList.add(`${l}-${s}`),(a=a[("prev"===s?"previous":"next")+"ElementSibling"])&&a.classList.add(`${l}-${s}-${s}`))}function d(a){const s=a.target.closest(classesToSelector(e.params.pagination.bulletClass));if(!s)return;a.preventDefault();const l=elementIndex(s)*e.params.slidesPerGroup;if(e.params.loop){if(e.realIndex===l)return;e.slideToLoop(l)}else e.slideTo(l)}function u(){const a=e.rtl,s=e.params.pagination;if(p())return;let l,i,d=e.pagination.el;d=o(d);const u=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,m=e.params.loop?Math.ceil(u/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(i=e.previousRealIndex||0,l=e.params.slidesPerGroup>1?Math.floor(e.realIndex/e.params.slidesPerGroup):e.realIndex):void 0!==e.snapIndex?(l=e.snapIndex,i=e.previousSnapIndex):(i=e.previousIndex||0,l=e.activeIndex||0),"bullets"===s.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const t=e.pagination.bullets;let o,p,u;if(s.dynamicBullets&&(n=elementOuterSize(t[0],e.isHorizontal()?"width":"height",!0),d.forEach((a=>{a.style[e.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==i&&(r+=l-(i||0),r>s.dynamicMainBullets-1?r=s.dynamicMainBullets-1:r<0&&(r=0)),o=Math.max(l-r,0),p=o+(Math.min(t.length,s.dynamicMainBullets)-1),u=(p+o)/2),t.forEach((a=>{const e=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((a=>`${s.bulletActiveClass}${a}`))].map((a=>"string"==typeof a&&a.includes(" ")?a.split(" "):a)).flat();a.classList.remove(...e)})),d.length>1)t.forEach((a=>{const t=elementIndex(a);t===l?a.classList.add(...s.bulletActiveClass.split(" ")):e.isElement&&a.setAttribute("part","bullet"),s.dynamicBullets&&(t>=o&&t<=p&&a.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),t===o&&c(a,"prev"),t===p&&c(a,"next"))}));else{const a=t[l];if(a&&a.classList.add(...s.bulletActiveClass.split(" ")),e.isElement&&t.forEach(((a,e)=>{a.setAttribute("part",e===l?"bullet-active":"bullet")})),s.dynamicBullets){const a=t[o],e=t[p];for(let a=o;a<=p;a+=1)t[a]&&t[a].classList.add(...`${s.bulletActiveClass}-main`.split(" "));c(a,"prev"),c(e,"next")}}if(s.dynamicBullets){const l=Math.min(t.length,s.dynamicMainBullets+4),i=(n*l-n)/2-u*n,r=a?"right":"left";t.forEach((a=>{a.style[e.isHorizontal()?r:"top"]=`${i}px`}))}}d.forEach(((a,i)=>{if("fraction"===s.type&&(a.querySelectorAll(classesToSelector(s.currentClass)).forEach((a=>{a.textContent=s.formatFractionCurrent(l+1)})),a.querySelectorAll(classesToSelector(s.totalClass)).forEach((a=>{a.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let t;t=s.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const i=(l+1)/m;let n=1,r=1;"horizontal"===t?n=i:r=i,a.querySelectorAll(classesToSelector(s.progressbarFillClass)).forEach((a=>{a.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${r})`,a.style.transitionDuration=`${e.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(a.innerHTML=s.renderCustom(e,l+1,m),0===i&&t("paginationRender",a)):(0===i&&t("paginationRender",a),t("paginationUpdate",a)),e.params.watchOverflow&&e.enabled&&a.classList[e.isLocked?"add":"remove"](s.lockClass)}))}function m(){const a=e.params.pagination;if(p())return;const s=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.grid&&e.params.grid.rows>1?e.slides.length/Math.ceil(e.params.grid.rows):e.slides.length;let l=e.pagination.el;l=o(l);let i="";if("bullets"===a.type){let l=e.params.loop?Math.ceil(s/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&l>s&&(l=s);for(let s=0;s`}"fraction"===a.type&&(i=a.renderFraction?a.renderFraction.call(e,a.currentClass,a.totalClass):` / `),"progressbar"===a.type&&(i=a.renderProgressbar?a.renderProgressbar.call(e,a.progressbarFillClass):``),e.pagination.bullets=[],l.forEach((s=>{"custom"!==a.type&&(s.innerHTML=i||""),"bullets"===a.type&&e.pagination.bullets.push(...s.querySelectorAll(classesToSelector(a.bulletClass)))})),"custom"!==a.type&&t("paginationRender",l[0])}function g(){e.params.pagination=createElementIfNotDefined(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const a=e.params.pagination;if(!a.el)return;let s;"string"==typeof a.el&&e.isElement&&(s=e.el.querySelector(a.el)),s||"string"!=typeof a.el||(s=[...document.querySelectorAll(a.el)]),s||(s=a.el),s&&0!==s.length&&(e.params.uniqueNavElements&&"string"==typeof a.el&&Array.isArray(s)&&s.length>1&&(s=[...e.el.querySelectorAll(a.el)],s.length>1&&(s=s.filter((a=>elementParents(a,".swiper")[0]===e.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(e.pagination,{el:s}),s=o(s),s.forEach((s=>{"bullets"===a.type&&a.clickable&&s.classList.add(...(a.clickableClass||"").split(" ")),s.classList.add(a.modifierClass+a.type),s.classList.add(e.isHorizontal()?a.horizontalClass:a.verticalClass),"bullets"===a.type&&a.dynamicBullets&&(s.classList.add(`${a.modifierClass}${a.type}-dynamic`),r=0,a.dynamicMainBullets<1&&(a.dynamicMainBullets=1)),"progressbar"===a.type&&a.progressbarOpposite&&s.classList.add(a.progressbarOppositeClass),a.clickable&&s.addEventListener("click",d),e.enabled||s.classList.add(a.lockClass)})))}function b(){const a=e.params.pagination;if(p())return;let s=e.pagination.el;s&&(s=o(s),s.forEach((s=>{s.classList.remove(a.hiddenClass),s.classList.remove(a.modifierClass+a.type),s.classList.remove(e.isHorizontal()?a.horizontalClass:a.verticalClass),a.clickable&&(s.classList.remove(...(a.clickableClass||"").split(" ")),s.removeEventListener("click",d))}))),e.pagination.bullets&&e.pagination.bullets.forEach((e=>e.classList.remove(...a.bulletActiveClass.split(" "))))}l("changeDirection",(()=>{if(!e.pagination||!e.pagination.el)return;const a=e.params.pagination;let{el:s}=e.pagination;s=o(s),s.forEach((s=>{s.classList.remove(a.horizontalClass,a.verticalClass),s.classList.add(e.isHorizontal()?a.horizontalClass:a.verticalClass)}))})),l("init",(()=>{!1===e.params.pagination.enabled?f():(g(),m(),u())})),l("activeIndexChange",(()=>{void 0===e.snapIndex&&u()})),l("snapIndexChange",(()=>{u()})),l("snapGridLengthChange",(()=>{m(),u()})),l("destroy",(()=>{b()})),l("enable disable",(()=>{let{el:a}=e.pagination;a&&(a=o(a),a.forEach((a=>a.classList[e.enabled?"remove":"add"](e.params.pagination.lockClass))))})),l("lock unlock",(()=>{u()})),l("click",((a,s)=>{const l=s.target,i=o(e.pagination.el);if(e.params.pagination.el&&e.params.pagination.hideOnClick&&i&&i.length>0&&!l.classList.contains(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&l===e.navigation.nextEl||e.navigation.prevEl&&l===e.navigation.prevEl))return;const a=i[0].classList.contains(e.params.pagination.hiddenClass);t(!0===a?"paginationShow":"paginationHide"),i.forEach((a=>a.classList.toggle(e.params.pagination.hiddenClass)))}}));const f=()=>{e.el.classList.add(e.params.pagination.paginationDisabledClass);let{el:a}=e.pagination;a&&(a=o(a),a.forEach((a=>a.classList.add(e.params.pagination.paginationDisabledClass)))),b()};Object.assign(e.pagination,{enable:()=>{e.el.classList.remove(e.params.pagination.paginationDisabledClass);let{el:a}=e.pagination;a&&(a=o(a),a.forEach((a=>a.classList.remove(e.params.pagination.paginationDisabledClass)))),g(),m(),u()},disable:f,render:m,update:u,init:g,destroy:b})}export{Pagination as default}; +//# sourceMappingURL=pagination.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/pagination.min.mjs.map b/build/assets/js/vendor/swiper/modules/pagination.min.mjs.map new file mode 100644 index 0000000..121feda --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/pagination.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"pagination.mjs.mjs","names":["classesToSelector","createElementIfNotDefined","elementOuterSize","elementIndex","elementParents","Pagination","_ref","swiper","extendParams","on","emit","pfx","bulletSize","pagination","el","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","type","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","makeElementsArray","Array","isArray","filter","e","isPaginationDisabled","params","length","setSideBullets","bulletEl","position","classList","add","onBulletClick","target","closest","preventDefault","index","slidesPerGroup","loop","realIndex","slideToLoop","slideTo","update","rtl","current","previousIndex","slidesLength","virtual","enabled","slides","total","Math","ceil","snapGrid","previousRealIndex","floor","snapIndex","previousSnapIndex","activeIndex","firstIndex","lastIndex","midIndex","isHorizontal","forEach","subEl","style","undefined","max","min","classesToRemove","map","suffix","s","includes","split","flat","remove","bullet","bulletIndex","isElement","setAttribute","firstDisplayedBullet","lastDisplayedBullet","i","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","querySelectorAll","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","innerHTML","watchOverflow","isLocked","render","grid","rows","paginationHTML","numberOfBullets","freeMode","call","push","init","originalParams","querySelector","document","uniqueNavElements","Object","assign","addEventListener","destroy","removeEventListener","disable","_s","targetEl","contains","navigation","nextEl","prevEl","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/pagination.mjs b/build/assets/js/vendor/swiper/modules/pagination.mjs new file mode 100644 index 0000000..6d91ae0 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/pagination.mjs @@ -0,0 +1,444 @@ +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs'; + +function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); +} + +export { Pagination as default }; diff --git a/build/assets/js/vendor/swiper/modules/pagination.scss b/build/assets/js/vendor/swiper/modules/pagination.scss new file mode 100644 index 0000000..5595484 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/pagination.scss @@ -0,0 +1,188 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ + } +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + @at-root button#{&} { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/build/assets/js/vendor/swiper/modules/parallax-element.css b/build/assets/js/vendor/swiper/modules/parallax-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/parallax-element.css diff --git a/build/assets/js/vendor/swiper/modules/parallax-element.min.css b/build/assets/js/vendor/swiper/modules/parallax-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/parallax-element.min.css diff --git a/build/assets/js/vendor/swiper/modules/parallax.css b/build/assets/js/vendor/swiper/modules/parallax.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/parallax.css diff --git a/build/assets/js/vendor/swiper/modules/parallax.less b/build/assets/js/vendor/swiper/modules/parallax.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/parallax.less diff --git a/build/assets/js/vendor/swiper/modules/parallax.min.css b/build/assets/js/vendor/swiper/modules/parallax.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/parallax.min.css diff --git a/build/assets/js/vendor/swiper/modules/parallax.min.mjs b/build/assets/js/vendor/swiper/modules/parallax.min.mjs new file mode 100644 index 0000000..b70fbd0 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/parallax.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren}from"../shared/utils.min.mjs";function Parallax(a){let{swiper:e,extendParams:t,on:l}=a;t({parallax:{enabled:!1}});const r="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",s=(a,t)=>{const{rtl:l}=e,r=l?-1:1,s=a.getAttribute("data-swiper-parallax")||"0";let i=a.getAttribute("data-swiper-parallax-x"),p=a.getAttribute("data-swiper-parallax-y");const n=a.getAttribute("data-swiper-parallax-scale"),o=a.getAttribute("data-swiper-parallax-opacity"),d=a.getAttribute("data-swiper-parallax-rotate");if(i||p?(i=i||"0",p=p||"0"):e.isHorizontal()?(i=s,p="0"):(p=s,i="0"),i=i.indexOf("%")>=0?parseInt(i,10)*t*r+"%":i*t*r+"px",p=p.indexOf("%")>=0?parseInt(p,10)*t+"%":p*t+"px",null!=o){const e=o-(o-1)*(1-Math.abs(t));a.style.opacity=e}let x=`translate3d(${i}, ${p}, 0px)`;if(null!=n){x+=` scale(${n-(n-1)*(1-Math.abs(t))})`}if(d&&null!=d){x+=` rotate(${d*t*-1}deg)`}a.style.transform=x},i=()=>{const{el:a,slides:t,progress:l,snapGrid:i,isElement:p}=e,n=elementChildren(a,r);e.isElement&&n.push(...elementChildren(e.hostEl,r)),n.forEach((a=>{s(a,l)})),t.forEach(((a,t)=>{let p=a.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(p+=Math.ceil(t/2)-l*(i.length-1)),p=Math.min(Math.max(p,-1),1),a.querySelectorAll(`${r}, [data-swiper-parallax-rotate]`).forEach((a=>{s(a,p)}))}))};l("beforeInit",(()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)})),l("init",(()=>{e.params.parallax.enabled&&i()})),l("setTranslate",(()=>{e.params.parallax.enabled&&i()})),l("setTransition",((a,t)=>{e.params.parallax.enabled&&function(a){void 0===a&&(a=e.params.speed);const{el:t,hostEl:l}=e,s=[...t.querySelectorAll(r)];e.isElement&&s.push(...l.querySelectorAll(r)),s.forEach((e=>{let t=parseInt(e.getAttribute("data-swiper-parallax-duration"),10)||a;0===a&&(t=0),e.style.transitionDuration=`${t}ms`}))}(t)}))}export{Parallax as default}; +//# sourceMappingURL=parallax.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/parallax.min.mjs.map b/build/assets/js/vendor/swiper/modules/parallax.min.mjs.map new file mode 100644 index 0000000..395322a --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/parallax.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"parallax.mjs.mjs","names":["elementChildren","Parallax","_ref","swiper","extendParams","on","parallax","enabled","elementsSelector","setTransform","el","progress","rtl","rtlFactor","p","getAttribute","x","y","scale","opacity","rotate","isHorizontal","indexOf","parseInt","currentOpacity","Math","abs","style","transform","setTranslate","slides","snapGrid","isElement","elements","push","hostEl","forEach","subEl","slideEl","slideIndex","slideProgress","params","slidesPerGroup","slidesPerView","ceil","length","min","max","querySelectorAll","watchSlidesProgress","originalParams","_swiper","duration","speed","parallaxEl","parallaxDuration","transitionDuration","setTransition"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/parallax.mjs b/build/assets/js/vendor/swiper/modules/parallax.mjs new file mode 100644 index 0000000..1f467de --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/parallax.mjs @@ -0,0 +1,124 @@ +import { e as elementChildren } from '../shared/utils.mjs'; + +function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); +} + +export { Parallax as default }; diff --git a/build/assets/js/vendor/swiper/modules/parallax.scss b/build/assets/js/vendor/swiper/modules/parallax.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/parallax.scss diff --git a/build/assets/js/vendor/swiper/modules/scrollbar-element.css b/build/assets/js/vendor/swiper/modules/scrollbar-element.css new file mode 100644 index 0000000..b6b755e --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/scrollbar-element.css @@ -0,0 +1,58 @@ +:host { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/build/assets/js/vendor/swiper/modules/scrollbar-element.min.css b/build/assets/js/vendor/swiper/modules/scrollbar-element.min.css new file mode 100644 index 0000000..dc9860f --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/scrollbar-element.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/scrollbar.css b/build/assets/js/vendor/swiper/modules/scrollbar.css new file mode 100644 index 0000000..678451c --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/scrollbar.css @@ -0,0 +1,58 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/build/assets/js/vendor/swiper/modules/scrollbar.less b/build/assets/js/vendor/swiper/modules/scrollbar.less new file mode 100644 index 0000000..4920d9b --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/scrollbar.less @@ -0,0 +1,59 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/build/assets/js/vendor/swiper/modules/scrollbar.min.css b/build/assets/js/vendor/swiper/modules/scrollbar.min.css new file mode 100644 index 0000000..dc9860f --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/scrollbar.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/scrollbar.min.mjs b/build/assets/js/vendor/swiper/modules/scrollbar.min.mjs new file mode 100644 index 0000000..7118794 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/scrollbar.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{h as classesToTokens,c as createElement,n as nextTick,b as elementOffset}from"../shared/utils.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";function Scrollbar(s){let{swiper:l,extendParams:e,on:r,emit:a}=s;const t=getDocument();let o,n,i,c,p=!1,m=null,d=null;function b(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s,rtlTranslate:e}=l,{dragEl:r,el:a}=s,t=l.params.scrollbar,o=l.params.loop?l.progressLoop:l.progress;let c=n,p=(i-n)*o;e?(p=-p,p>0?(c=n-p,p=0):-p+n>i&&(c=i+p)):p<0?(c=n+p,p=0):p+n>i&&(c=i-p),l.isHorizontal()?(r.style.transform=`translate3d(${p}px, 0, 0)`,r.style.width=`${c}px`):(r.style.transform=`translate3d(0px, ${p}px, 0)`,r.style.height=`${c}px`),t.hide&&(clearTimeout(m),a.style.opacity=1,m=setTimeout((()=>{a.style.opacity=0,a.style.transitionDuration="400ms"}),1e3))}function u(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s}=l,{dragEl:e,el:r}=s;e.style.width="",e.style.height="",i=l.isHorizontal()?r.offsetWidth:r.offsetHeight,c=l.size/(l.virtualSize+l.params.slidesOffsetBefore-(l.params.centeredSlides?l.snapGrid[0]:0)),n="auto"===l.params.scrollbar.dragSize?i*c:parseInt(l.params.scrollbar.dragSize,10),l.isHorizontal()?e.style.width=`${n}px`:e.style.height=`${n}px`,r.style.display=c>=1?"none":"",l.params.scrollbar.hide&&(r.style.opacity=0),l.params.watchOverflow&&l.enabled&&s.el.classList[l.isLocked?"add":"remove"](l.params.scrollbar.lockClass)}function f(s){return l.isHorizontal()?s.clientX:s.clientY}function g(s){const{scrollbar:e,rtlTranslate:r}=l,{el:a}=e;let t;t=(f(s)-elementOffset(a)[l.isHorizontal()?"left":"top"]-(null!==o?o:n/2))/(i-n),t=Math.max(Math.min(t,1),0),r&&(t=1-t);const c=l.minTranslate()+(l.maxTranslate()-l.minTranslate())*t;l.updateProgress(c),l.setTranslate(c),l.updateActiveIndex(),l.updateSlidesClasses()}function y(s){const e=l.params.scrollbar,{scrollbar:r,wrapperEl:t}=l,{el:n,dragEl:i}=r;p=!0,o=s.target===i?f(s)-s.target.getBoundingClientRect()[l.isHorizontal()?"left":"top"]:null,s.preventDefault(),s.stopPropagation(),t.style.transitionDuration="100ms",i.style.transitionDuration="100ms",g(s),clearTimeout(d),n.style.transitionDuration="0ms",e.hide&&(n.style.opacity=1),l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="none"),a("scrollbarDragStart",s)}function T(s){const{scrollbar:e,wrapperEl:r}=l,{el:t,dragEl:o}=e;p&&(s.preventDefault?s.preventDefault():s.returnValue=!1,g(s),r.style.transitionDuration="0ms",t.style.transitionDuration="0ms",o.style.transitionDuration="0ms",a("scrollbarDragMove",s))}function h(s){const e=l.params.scrollbar,{scrollbar:r,wrapperEl:t}=l,{el:o}=r;p&&(p=!1,l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="",t.style.transitionDuration=""),e.hide&&(clearTimeout(d),d=nextTick((()=>{o.style.opacity=0,o.style.transitionDuration="400ms"}),1e3)),a("scrollbarDragEnd",s),e.snapOnRelease&&l.slideToClosest())}function v(s){const{scrollbar:e,params:r}=l,a=e.el;if(!a)return;const o=a,n=!!r.passiveListeners&&{passive:!1,capture:!1},i=!!r.passiveListeners&&{passive:!0,capture:!1};if(!o)return;const c="on"===s?"addEventListener":"removeEventListener";o[c]("pointerdown",y,n),t[c]("pointermove",T,n),t[c]("pointerup",h,i)}function D(){const{scrollbar:s,el:e}=l;l.params.scrollbar=createElementIfNotDefined(l,l.originalParams.scrollbar,l.params.scrollbar,{el:"swiper-scrollbar"});const r=l.params.scrollbar;if(!r.el)return;let a,o;if("string"==typeof r.el&&l.isElement&&(a=l.el.querySelector(r.el)),a||"string"!=typeof r.el)a||(a=r.el);else if(a=t.querySelectorAll(r.el),!a.length)return;l.params.uniqueNavElements&&"string"==typeof r.el&&a.length>1&&1===e.querySelectorAll(r.el).length&&(a=e.querySelector(r.el)),a.length>0&&(a=a[0]),a.classList.add(l.isHorizontal()?r.horizontalClass:r.verticalClass),a&&(o=a.querySelector(classesToSelector(l.params.scrollbar.dragClass)),o||(o=createElement("div",l.params.scrollbar.dragClass),a.append(o))),Object.assign(s,{el:a,dragEl:o}),r.draggable&&l.params.scrollbar.el&&l.scrollbar.el&&v("on"),a&&a.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))}function C(){const s=l.params.scrollbar,e=l.scrollbar.el;e&&e.classList.remove(...classesToTokens(l.isHorizontal()?s.horizontalClass:s.verticalClass)),l.params.scrollbar.el&&l.scrollbar.el&&v("off")}e({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),l.scrollbar={el:null,dragEl:null},r("init",(()=>{!1===l.params.scrollbar.enabled?E():(D(),u(),b())})),r("update resize observerUpdate lock unlock",(()=>{u()})),r("setTranslate",(()=>{b()})),r("setTransition",((s,e)=>{!function(s){l.params.scrollbar.el&&l.scrollbar.el&&(l.scrollbar.dragEl.style.transitionDuration=`${s}ms`)}(e)})),r("enable disable",(()=>{const{el:s}=l.scrollbar;s&&s.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))})),r("destroy",(()=>{C()}));const E=()=>{l.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),C()};Object.assign(l.scrollbar,{enable:()=>{l.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),D(),u(),b()},disable:E,updateSize:u,setTranslate:b,init:D,destroy:C})}export{Scrollbar as default}; +//# sourceMappingURL=scrollbar.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/scrollbar.min.mjs.map b/build/assets/js/vendor/swiper/modules/scrollbar.min.mjs.map new file mode 100644 index 0000000..2748a77 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/scrollbar.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"scrollbar.mjs.mjs","names":["getDocument","classesToTokens","createElement","nextTick","elementOffset","createElementIfNotDefined","classesToSelector","Scrollbar","_ref","swiper","extendParams","on","emit","document","dragStartPos","dragSize","trackSize","divider","isTouched","timeout","dragTimeout","setTranslate","params","scrollbar","el","rtlTranslate","rtl","dragEl","progress","loop","progressLoop","newSize","newPos","isHorizontal","style","transform","width","height","hide","clearTimeout","opacity","setTimeout","transitionDuration","updateSize","offsetWidth","offsetHeight","size","virtualSize","slidesOffsetBefore","centeredSlides","snapGrid","parseInt","display","watchOverflow","enabled","classList","isLocked","lockClass","getPointerPosition","e","clientX","clientY","setDragPosition","positionRatio","Math","max","min","position","minTranslate","maxTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","onDragStart","wrapperEl","target","getBoundingClientRect","preventDefault","stopPropagation","cssMode","onDragMove","returnValue","onDragEnd","snapOnRelease","slideToClosest","events","method","activeListener","passiveListeners","passive","capture","passiveListener","eventMethod","init","swiperEl","originalParams","isElement","querySelector","querySelectorAll","length","uniqueNavElements","add","horizontalClass","verticalClass","dragClass","append","Object","assign","draggable","destroy","remove","scrollbarDisabledClass","disable","_s","duration","setTransition","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/scrollbar.mjs b/build/assets/js/vendor/swiper/modules/scrollbar.mjs new file mode 100644 index 0000000..167be7f --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/scrollbar.mjs @@ -0,0 +1,354 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { h as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; + +function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); +} + +export { Scrollbar as default }; diff --git a/build/assets/js/vendor/swiper/modules/scrollbar.scss b/build/assets/js/vendor/swiper/modules/scrollbar.scss new file mode 100644 index 0000000..93882d3 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/scrollbar.scss @@ -0,0 +1,61 @@ +@at-root { + :root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ + } +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/build/assets/js/vendor/swiper/modules/thumbs-element.css b/build/assets/js/vendor/swiper/modules/thumbs-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/thumbs-element.css diff --git a/build/assets/js/vendor/swiper/modules/thumbs-element.min.css b/build/assets/js/vendor/swiper/modules/thumbs-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/thumbs-element.min.css diff --git a/build/assets/js/vendor/swiper/modules/thumbs.css b/build/assets/js/vendor/swiper/modules/thumbs.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/thumbs.css diff --git a/build/assets/js/vendor/swiper/modules/thumbs.less b/build/assets/js/vendor/swiper/modules/thumbs.less new file mode 100644 index 0000000..9eaa1b3 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/thumbs.less @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/build/assets/js/vendor/swiper/modules/thumbs.min.css b/build/assets/js/vendor/swiper/modules/thumbs.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/thumbs.min.css diff --git a/build/assets/js/vendor/swiper/modules/thumbs.min.mjs b/build/assets/js/vendor/swiper/modules/thumbs.min.mjs new file mode 100644 index 0000000..793c847 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/thumbs.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{k as isObject,e as elementChildren}from"../shared/utils.min.mjs";function Thumb(e){let{swiper:s,extendParams:i,on:t}=e;i({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,a=!1;function l(){const e=s.thumbs.swiper;if(!e||e.destroyed)return;const i=e.clickedIndex,t=e.clickedSlide;if(t&&t.classList.contains(s.params.thumbs.slideThumbActiveClass))return;if(null==i)return;let r;r=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):i,s.params.loop?s.slideToLoop(r):s.slideTo(r)}function n(){const{thumbs:e}=s.params;if(r)return!1;r=!0;const i=s.constructor;if(e.swiper instanceof i)s.thumbs.swiper=e.swiper,Object.assign(s.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(s.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper.update();else if(isObject(e.swiper)){const t=Object.assign({},e.swiper);Object.assign(t,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper=new i(t),a=!0}return s.thumbs.swiper.el.classList.add(s.params.thumbs.thumbsContainerClass),s.thumbs.swiper.on("tap",l),!0}function d(e){const i=s.thumbs.swiper;if(!i||i.destroyed)return;const t="auto"===i.params.slidesPerView?i.slidesPerViewDynamic():i.params.slidesPerView;let r=1;const a=s.params.thumbs.slideThumbActiveClass;if(s.params.slidesPerView>1&&!s.params.centeredSlides&&(r=s.params.slidesPerView),s.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),i.slides.forEach((e=>e.classList.remove(a))),i.params.loop||i.params.virtual&&i.params.virtual.enabled)for(let e=0;e{e.classList.add(a)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${s.realIndex}`))[0];a=i.slides.indexOf(e),d=s.activeIndex>s.previousIndex?"next":"prev"}else a=s.realIndex,d=a>s.previousIndex?"next":"prev";n&&(a+="next"===d?l:-1*l),i.visibleSlidesIndexes&&i.visibleSlidesIndexes.indexOf(a)<0&&(i.params.centeredSlides?a=a>r?a-Math.floor(t/2)+1:a+Math.floor(t/2)-1:a>r&&i.params.slidesPerGroup,i.slideTo(a,e?0:void 0))}}s.thumbs={swiper:null},t("beforeInit",(()=>{const{thumbs:e}=s.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const i=getDocument(),t=()=>{const t="string"==typeof e.swiper?i.querySelector(e.swiper):e.swiper;if(t&&t.swiper)e.swiper=t.swiper,n(),d(!0);else if(t){const i=r=>{e.swiper=r.detail[0],t.removeEventListener("init",i),n(),d(!0),e.swiper.update(),s.update()};t.addEventListener("init",i)}return t},r=()=>{if(s.destroyed)return;t()||requestAnimationFrame(r)};requestAnimationFrame(r)}else n(),d(!0)})),t("slideChange update resize observerUpdate",(()=>{d()})),t("setTransition",((e,i)=>{const t=s.thumbs.swiper;t&&!t.destroyed&&t.setTransition(i)})),t("beforeDestroy",(()=>{const e=s.thumbs.swiper;e&&!e.destroyed&&a&&e.destroy()})),Object.assign(s.thumbs,{init:n,update:d})}export{Thumb as default}; +//# sourceMappingURL=thumbs.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/thumbs.min.mjs.map b/build/assets/js/vendor/swiper/modules/thumbs.min.mjs.map new file mode 100644 index 0000000..6d3de20 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/thumbs.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"thumbs.mjs.mjs","names":["getDocument","isObject","elementChildren","Thumb","_ref","swiper","extendParams","on","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","onThumbClick","thumbsSwiper","destroyed","clickedIndex","clickedSlide","classList","contains","params","slideToIndex","loop","parseInt","getAttribute","slideToLoop","slideTo","init","thumbsParams","SwiperClass","constructor","Object","assign","originalParams","watchSlidesProgress","slideToClickedSlide","update","thumbsSwiperParams","el","add","initial","slidesPerView","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","centeredSlides","Math","floor","slides","forEach","slideEl","remove","virtual","enabled","i","slidesEl","realIndex","useOffset","currentThumbsIndex","activeIndex","newThumbsIndex","direction","newThumbsSlide","filter","indexOf","previousIndex","visibleSlidesIndexes","slidesPerGroup","undefined","HTMLElement","document","getThumbsElementAndInit","thumbsElement","querySelector","onThumbsSwiper","e","detail","removeEventListener","addEventListener","watchForThumbsToAppear","requestAnimationFrame","_s","duration","setTransition","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/thumbs.mjs b/build/assets/js/vendor/swiper/modules/thumbs.mjs new file mode 100644 index 0000000..2d61771 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/thumbs.mjs @@ -0,0 +1,192 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { k as isObject, e as elementChildren } from '../shared/utils.mjs'; + +function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener('init', onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener('init', onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); +} + +export { Thumb as default }; diff --git a/build/assets/js/vendor/swiper/modules/thumbs.scss b/build/assets/js/vendor/swiper/modules/thumbs.scss new file mode 100644 index 0000000..9eaa1b3 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/thumbs.scss @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/build/assets/js/vendor/swiper/modules/virtual-element.css b/build/assets/js/vendor/swiper/modules/virtual-element.css new file mode 100644 index 0000000..432b52b --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/virtual-element.css @@ -0,0 +1,19 @@ +.swiper-virtual ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/build/assets/js/vendor/swiper/modules/virtual-element.min.css b/build/assets/js/vendor/swiper/modules/virtual-element.min.css new file mode 100644 index 0000000..d0e6043 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/virtual-element.min.css @@ -0,0 +1 @@ +.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/virtual.css b/build/assets/js/vendor/swiper/modules/virtual.css new file mode 100644 index 0000000..60ebeea --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/virtual.css @@ -0,0 +1,19 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/build/assets/js/vendor/swiper/modules/virtual.less b/build/assets/js/vendor/swiper/modules/virtual.less new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/virtual.less @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/build/assets/js/vendor/swiper/modules/virtual.min.css b/build/assets/js/vendor/swiper/modules/virtual.min.css new file mode 100644 index 0000000..dbb4007 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/virtual.min.css @@ -0,0 +1 @@ +.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/virtual.min.mjs b/build/assets/js/vendor/swiper/modules/virtual.min.mjs new file mode 100644 index 0000000..761b2d7 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/virtual.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{s as setCSSProperty,e as elementChildren,c as createElement}from"../shared/utils.min.mjs";function Virtual(e){let s,{swiper:t,extendParams:r,on:i,emit:a}=e;r({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=getDocument();t.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const d=l.createElement("div");function n(e,s){const r=t.params.virtual;if(r.cache&&t.virtual.cache[s])return t.virtual.cache[s];let i;return r.renderSlide?(i=r.renderSlide.call(t,e,s),"string"==typeof i&&(d.innerHTML=i,i=d.children[0])):i=t.isElement?createElement("swiper-slide"):createElement("div",t.params.slideClass),i.setAttribute("data-swiper-slide-index",s),r.renderSlide||(i.innerHTML=e),r.cache&&(t.virtual.cache[s]=i),i}function c(e){const{slidesPerView:s,slidesPerGroup:r,centeredSlides:i,loop:l}=t.params,{addSlidesBefore:d,addSlidesAfter:c}=t.params.virtual,{from:o,to:u,slides:p,slidesGrid:h,offset:f}=t.virtual;t.params.cssMode||t.updateActiveIndex();const v=t.activeIndex||0;let m,g,E;m=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",i?(g=Math.floor(s/2)+r+c,E=Math.floor(s/2)+r+d):(g=s+(r-1)+c,E=(l?s:r)+d);let x=v-E,w=v+g;l||(x=Math.max(x,0),w=Math.min(w,p.length-1));let S=(t.slidesGrid[x]||0)-(t.slidesGrid[0]||0);function b(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),a("virtualUpdate")}if(l&&v>=E?(x-=E,i||(S+=t.slidesGrid[0])):l&&v{e.style[m]=S-Math.abs(t.cssOverflowAdjustment())+"px"})),t.updateProgress(),void a("virtualUpdate");if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:S,from:x,to:w,slides:function(){const e=[];for(let s=x;s<=w;s+=1)e.push(p[s]);return e}()}),void(t.params.virtual.renderExternalUpdate?b():a("virtualUpdate"));const A=[],M=[],y=e=>{let s=e;return e<0?s=p.length+e:s>=p.length&&(s-=p.length),s};if(e)t.slides.filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=o;e<=u;e+=1)if(ew){const s=y(e);t.slides.filter((e=>e.matches(`.${t.params.slideClass}[data-swiper-slide-index="${s}"], swiper-slide[data-swiper-slide-index="${s}"]`))).forEach((e=>{e.remove()}))}const P=l?-p.length:0,j=l?2*p.length:p.length;for(let s=P;s=x&&s<=w){const t=y(s);void 0===u||e?M.push(t):(s>u&&M.push(t),s{t.slidesEl.append(n(p[e],e))})),l)for(let e=A.length-1;e>=0;e-=1){const s=A[e];t.slidesEl.prepend(n(p[s],s))}else A.sort(((e,s)=>s-e)),A.forEach((e=>{t.slidesEl.prepend(n(p[e],e))}));elementChildren(t.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[m]=S-Math.abs(t.cssOverflowAdjustment())+"px"})),b()}i("beforeInit",(()=>{if(!t.params.virtual.enabled)return;let e;if(void 0===t.passedParams.virtual.slides){const s=[...t.slidesEl.children].filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`)));s&&s.length&&(t.virtual.slides=[...s],e=!0,s.forEach(((e,s)=>{e.setAttribute("data-swiper-slide-index",s),t.virtual.cache[s]=e,e.remove()})))}e||(t.virtual.slides=t.params.virtual.slides),t.classNames.push(`${t.params.containerModifierClass}virtual`),t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0,c()})),i("setTranslate",(()=>{t.params.virtual.enabled&&(t.params.cssMode&&!t._immediateVirtual?(clearTimeout(s),s=setTimeout((()=>{c()}),100)):c())})),i("init update resize",(()=>{t.params.virtual.enabled&&t.params.cssMode&&setCSSProperty(t.wrapperEl,"--swiper-virtual-size",`${t.virtualSize}px`)})),Object.assign(t.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let s=0;s{const r=e[t],a=r.getAttribute("data-swiper-slide-index");a&&r.setAttribute("data-swiper-slide-index",parseInt(a,10)+i),s[parseInt(t,10)+i]=r})),t.virtual.cache=s}c(!0),t.slideTo(r,0)},removeSlide:function(e){if(null==e)return;let s=t.activeIndex;if(Array.isArray(e))for(let r=e.length-1;r>=0;r-=1)t.params.virtual.cache&&(delete t.virtual.cache[e[r]],Object.keys(t.virtual.cache).forEach((s=>{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e[r],1),e[r]{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e,1),e= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); +} + +export { Virtual as default }; diff --git a/build/assets/js/vendor/swiper/modules/virtual.scss b/build/assets/js/vendor/swiper/modules/virtual.scss new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/virtual.scss @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/build/assets/js/vendor/swiper/modules/zoom-element.css b/build/assets/js/vendor/swiper/modules/zoom-element.css new file mode 100644 index 0000000..f81a92b --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/zoom-element.css @@ -0,0 +1,5 @@ +/* Zoom container styles start *//* Zoom container styles end */ +::slotted(.swiper-slide-zoomed) { + cursor: move; + touch-action: none; +} diff --git a/build/assets/js/vendor/swiper/modules/zoom-element.min.css b/build/assets/js/vendor/swiper/modules/zoom-element.min.css new file mode 100644 index 0000000..17d073f --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/zoom-element.min.css @@ -0,0 +1 @@ +::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/zoom.css b/build/assets/js/vendor/swiper/modules/zoom.css new file mode 100644 index 0000000..40f5b10 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/zoom.css @@ -0,0 +1,21 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/build/assets/js/vendor/swiper/modules/zoom.less b/build/assets/js/vendor/swiper/modules/zoom.less new file mode 100644 index 0000000..d226ae9 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/zoom.less @@ -0,0 +1,23 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} +/* Zoom container styles end */ + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/build/assets/js/vendor/swiper/modules/zoom.min.css b/build/assets/js/vendor/swiper/modules/zoom.min.css new file mode 100644 index 0000000..e55cd9a --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/zoom.min.css @@ -0,0 +1 @@ +.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/zoom.min.mjs b/build/assets/js/vendor/swiper/modules/zoom.min.mjs new file mode 100644 index 0000000..cf83989 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/zoom.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren,a as elementParents,b as elementOffset,i as getTranslate}from"../shared/utils.min.mjs";function Zoom(e){let{swiper:t,extendParams:i,on:a,emit:r}=e;const s=getWindow();i({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let o,n,l=1,m=!1;const c=[],d={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},u={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},p={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let g=1;function h(){if(c.length<2)return 1;const e=c[0].pageX,t=c[0].pageY,i=c[1].pageX,a=c[1].pageY;return Math.sqrt((i-e)**2+(a-t)**2)}function E(e){const i=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(i)||t.slides.filter((t=>t.contains(e.target))).length>0}function v(e){if("mouse"===e.pointerType&&c.splice(0,c.length),!E(e))return;const i=t.params.zoom;if(o=!1,n=!1,c.push(e),!(c.length<2)){if(o=!0,d.scaleStart=h(),!d.slideEl){d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),d.slideEl||(d.slideEl=t.slides[t.activeIndex]);let a=d.slideEl.querySelector(`.${i.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=a,d.imageWrapEl=a?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0,!d.imageWrapEl)return void(d.imageEl=void 0);d.maxRatio=d.imageWrapEl.getAttribute("data-swiper-zoom")||i.maxRatio}if(d.imageEl){const[e,t]=function(){if(c.length<2)return{x:null,y:null};const e=d.imageEl.getBoundingClientRect();return[(c[0].pageX+(c[1].pageX-c[0].pageX)/2-e.x-s.scrollX)/l,(c[0].pageY+(c[1].pageY-c[0].pageY)/2-e.y-s.scrollY)/l]}();d.originX=e,d.originY=t,d.imageEl.style.transitionDuration="0ms"}m=!0}}function f(e){if(!E(e))return;const i=t.params.zoom,a=t.zoom,r=c.findIndex((t=>t.pointerId===e.pointerId));r>=0&&(c[r]=e),c.length<2||(n=!0,d.scaleMove=h(),d.imageEl&&(a.scale=d.scaleMove/d.scaleStart*l,a.scale>d.maxRatio&&(a.scale=d.maxRatio-1+(a.scale-d.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));r>=0&&c.splice(r,1),o&&n&&(o=!1,n=!1,d.imageEl&&(a.scale=Math.max(Math.min(a.scale,d.maxRatio),i.minRatio),d.imageEl.style.transitionDuration=`${t.params.speed}ms`,d.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,l=a.scale,m=!1,a.scale>1&&d.slideEl?d.slideEl.classList.add(`${i.zoomedSlideClass}`):a.scale<=1&&d.slideEl&&d.slideEl.classList.remove(`${i.zoomedSlideClass}`),1===a.scale&&(d.originX=0,d.originY=0,d.slideEl=void 0)))}function X(e){if(!E(e)||!function(e){const i=`.${t.params.zoom.containerClass}`;return!!e.target.matches(i)||[...t.hostEl.querySelectorAll(i)].filter((t=>t.contains(e.target))).length>0}(e))return;const i=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!d.slideEl)return;u.isMoved||(u.width=d.imageEl.offsetWidth,u.height=d.imageEl.offsetHeight,u.startX=getTranslate(d.imageWrapEl,"x")||0,u.startY=getTranslate(d.imageWrapEl,"y")||0,d.slideWidth=d.slideEl.offsetWidth,d.slideHeight=d.slideEl.offsetHeight,d.imageWrapEl.style.transitionDuration="0ms");const a=u.width*i.scale,r=u.height*i.scale;if(a0?c[0].pageX:e.pageX,u.touchesCurrent.y=c.length>0?c[0].pageY:e.pageY;if(Math.max(Math.abs(u.touchesCurrent.x-u.touchesStart.x),Math.abs(u.touchesCurrent.y-u.touchesStart.y))>5&&(t.allowClick=!1),!u.isMoved&&!m){if(t.isHorizontal()&&(Math.floor(u.minX)===Math.floor(u.startX)&&u.touchesCurrent.xu.touchesStart.x))return void(u.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(u.minY)===Math.floor(u.startY)&&u.touchesCurrent.yu.touchesStart.y))return void(u.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),u.isMoved=!0;const s=(i.scale-l)/(d.maxRatio-t.params.zoom.minRatio),{originX:o,originY:n}=d;u.currentX=u.touchesCurrent.x-u.touchesStart.x+u.startX+s*(u.width-2*o),u.currentY=u.touchesCurrent.y-u.touchesStart.y+u.startY+s*(u.height-2*n),u.currentXu.maxX&&(u.currentX=u.maxX-1+(u.currentX-u.maxX+1)**.8),u.currentYu.maxY&&(u.currentY=u.maxY-1+(u.currentY-u.maxY+1)**.8),p.prevPositionX||(p.prevPositionX=u.touchesCurrent.x),p.prevPositionY||(p.prevPositionY=u.touchesCurrent.y),p.prevTime||(p.prevTime=Date.now()),p.x=(u.touchesCurrent.x-p.prevPositionX)/(Date.now()-p.prevTime)/2,p.y=(u.touchesCurrent.y-p.prevPositionY)/(Date.now()-p.prevTime)/2,Math.abs(u.touchesCurrent.x-p.prevPositionX)<2&&(p.x=0),Math.abs(u.touchesCurrent.y-p.prevPositionY)<2&&(p.y=0),p.prevPositionX=u.touchesCurrent.x,p.prevPositionY=u.touchesCurrent.y,p.prevTime=Date.now(),d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}function Y(){const e=t.zoom;d.slideEl&&t.activeIndex!==t.slides.indexOf(d.slideEl)&&(d.imageEl&&(d.imageEl.style.transform="translate3d(0,0,0) scale(1)"),d.imageWrapEl&&(d.imageWrapEl.style.transform="translate3d(0,0,0)"),d.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,l=1,d.slideEl=void 0,d.imageEl=void 0,d.imageWrapEl=void 0,d.originX=0,d.originY=0)}function y(e){const i=t.zoom,a=t.params.zoom;if(!d.slideEl){e&&e.target&&(d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),d.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex]);let i=d.slideEl.querySelector(`.${a.containerClass}`);i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=i,d.imageWrapEl=i?elementParents(d.imageEl,`.${a.containerClass}`)[0]:void 0}if(!d.imageEl||!d.imageWrapEl)return;let r,o,n,m,c,p,g,h,E,v,f,x,X,Y,y,z,C,w;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),d.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===u.touchesStart.x&&e?(r=e.pageX,o=e.pageY):(r=u.touchesStart.x,o=u.touchesStart.y);const M="number"==typeof e?e:null;1===l&&M&&(r=void 0,o=void 0),i.scale=M||d.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,l=M||d.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,!e||1===l&&M?(g=0,h=0):(C=d.slideEl.offsetWidth,w=d.slideEl.offsetHeight,n=elementOffset(d.slideEl).left+s.scrollX,m=elementOffset(d.slideEl).top+s.scrollY,c=n+C/2-r,p=m+w/2-o,E=d.imageEl.offsetWidth,v=d.imageEl.offsetHeight,f=E*i.scale,x=v*i.scale,X=Math.min(C/2-f/2,0),Y=Math.min(w/2-x/2,0),y=-X,z=-Y,g=c*i.scale,h=p*i.scale,gy&&(g=y),hz&&(h=z)),M&&1===i.scale&&(d.originX=0,d.originY=0),d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform=`translate3d(${g}px, ${h}px,0)`,d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`}function z(){const e=t.zoom,i=t.params.zoom;if(!d.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex];let e=d.slideEl.querySelector(`.${i.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=e,d.imageWrapEl=e?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0}d.imageEl&&d.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,l=1,d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform="translate3d(0,0,0)",d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform="translate3d(0,0,0) scale(1)",d.slideEl.classList.remove(`${i.zoomedSlideClass}`),d.slideEl=void 0,d.originX=0,d.originY=0)}function C(e){const i=t.zoom;i.scale&&1!==i.scale?z():y(e)}function w(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function M(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:i,activeListenerWithCapture:a}=w();t.wrapperEl.addEventListener("pointerdown",v,i),t.wrapperEl.addEventListener("pointermove",f,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,x,i)})),t.wrapperEl.addEventListener("pointermove",X,a)}function W(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:i,activeListenerWithCapture:a}=w();t.wrapperEl.removeEventListener("pointerdown",v,i),t.wrapperEl.removeEventListener("pointermove",f,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,x,i)})),t.wrapperEl.removeEventListener("pointermove",X,a)}Object.defineProperty(t.zoom,"scale",{get:()=>g,set(e){if(g!==e){const t=d.imageEl,i=d.slideEl;r("zoomChange",e,t,i)}g=e}}),a("init",(()=>{t.params.zoom.enabled&&M()})),a("destroy",(()=>{W()})),a("touchStart",((e,i)=>{t.zoom.enabled&&function(e){const i=t.device;if(!d.imageEl)return;if(u.isTouched)return;i.android&&e.cancelable&&e.preventDefault(),u.isTouched=!0;const a=c.length>0?c[0]:e;u.touchesStart.x=a.pageX,u.touchesStart.y=a.pageY}(i)})),a("touchEnd",((e,i)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!u.isMoved)return u.isTouched=!1,void(u.isMoved=!1);u.isTouched=!1,u.isMoved=!1;let i=300,a=300;const r=p.x*i,s=u.currentX+r,o=p.y*a,n=u.currentY+o;0!==p.x&&(i=Math.abs((s-u.currentX)/p.x)),0!==p.y&&(a=Math.abs((n-u.currentY)/p.y));const l=Math.max(i,a);u.currentX=s,u.currentY=n;const m=u.width*e.scale,c=u.height*e.scale;u.minX=Math.min(d.slideWidth/2-m/2,0),u.maxX=-u.minX,u.minY=Math.min(d.slideHeight/2-c/2,0),u.maxY=-u.minY,u.currentX=Math.max(Math.min(u.currentX,u.maxX),u.minX),u.currentY=Math.max(Math.min(u.currentY,u.maxY),u.minY),d.imageWrapEl.style.transitionDuration=`${l}ms`,d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}()})),a("doubleTap",((e,i)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&C(i)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&Y()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&Y()})),Object.assign(t.zoom,{enable:M,disable:W,in:y,out:z,toggle:C})}export{Zoom as default}; +//# sourceMappingURL=zoom.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/zoom.min.mjs.map b/build/assets/js/vendor/swiper/modules/zoom.min.mjs.map new file mode 100644 index 0000000..89bd7ac --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/zoom.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"zoom.mjs.mjs","names":["getWindow","elementChildren","elementParents","elementOffset","getTranslate","Zoom","_ref","swiper","extendParams","on","emit","window","zoom","enabled","maxRatio","minRatio","toggle","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideEl","undefined","slideWidth","slideHeight","imageEl","imageWrapEl","image","isTouched","isMoved","currentX","currentY","minX","minY","maxX","maxY","width","height","startX","startY","touchesStart","touchesCurrent","velocity","x","y","prevPositionX","prevPositionY","prevTime","scale","getDistanceBetweenTouches","length","x1","pageX","y1","pageY","x2","y2","Math","sqrt","eventWithinSlide","e","slideSelector","isElement","params","slideClass","target","matches","slides","filter","contains","onGestureStart","pointerType","splice","push","scaleStart","closest","activeIndex","querySelector","querySelectorAll","getAttribute","box","getBoundingClientRect","scrollX","scrollY","getScaleOrigin","style","transitionDuration","onGestureChange","pointerIndex","findIndex","cachedEv","pointerId","scaleMove","transform","onGestureEnd","type","max","min","speed","classList","add","remove","onTouchMove","selector","hostEl","containerEl","eventWithinZoomContainer","offsetWidth","offsetHeight","scaledWidth","scaledHeight","abs","allowClick","isHorizontal","floor","cancelable","preventDefault","stopPropagation","scaleRatio","Date","now","onTransitionEnd","indexOf","zoomIn","virtual","slidesEl","slideActiveClass","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","cssMode","wrapperEl","overflow","touchAction","forceZoomRatio","left","top","zoomOut","zoomToggle","getListeners","passiveListener","passiveListeners","passive","capture","activeListenerWithCapture","enable","addEventListener","forEach","eventName","disable","removeEventListener","Object","defineProperty","get","set","value","_s","device","android","event","onTouchStart","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTouchEnd","animating","assign","in","out"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/modules/zoom.mjs b/build/assets/js/vendor/swiper/modules/zoom.mjs new file mode 100644 index 0000000..47dfc21 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/zoom.mjs @@ -0,0 +1,591 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren, a as elementParents, b as elementOffset, i as getTranslate } from '../shared/utils.mjs'; + +function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !gesture.slideEl) return; + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth; + image.height = gesture.imageEl.offsetHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth; + imageHeight = gesture.imageEl.offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); +} + +export { Zoom as default }; diff --git a/build/assets/js/vendor/swiper/modules/zoom.scss b/build/assets/js/vendor/swiper/modules/zoom.scss new file mode 100644 index 0000000..1f56449 --- /dev/null +++ b/build/assets/js/vendor/swiper/modules/zoom.scss @@ -0,0 +1,21 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/build/assets/js/vendor/swiper/package.json b/build/assets/js/vendor/swiper/package.json new file mode 100644 index 0000000..1591986 --- /dev/null +++ b/build/assets/js/vendor/swiper/package.json @@ -0,0 +1,208 @@ +{ + "name": "swiper", + "version": "11.0.5", + "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", + "typings": "swiper.d.ts", + "type": "module", + "main": "./swiper.mjs", + "module": "./swiper.mjs", + "exports": { + ".": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./core": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./bundle": { + "types": "./swiper.d.ts", + "default": "./swiper-bundle.mjs" + }, + "./css": "./swiper.css", + "./css/bundle": "./swiper-bundle.css", + "./swiper-bundle.css": "./swiper-bundle.css", + "./css/a11y": "./modules/a11y.css", + "./css/autoplay": "./modules/autoplay.css", + "./css/controller": "./modules/controller.css", + "./css/effect-coverflow": "./modules/effect-coverflow.css", + "./css/effect-cube": "./modules/effect-cube.css", + "./css/effect-fade": "./modules/effect-fade.css", + "./css/effect-flip": "./modules/effect-flip.css", + "./css/effect-creative": "./modules/effect-creative.css", + "./css/effect-cards": "./modules/effect-cards.css", + "./css/free-mode": "./modules/free-mode.css", + "./css/grid": "./modules/grid.css", + "./css/hash-navigation": "./modules/hash-navigation.css", + "./css/history": "./modules/history.css", + "./css/keyboard": "./modules/keyboard.css", + "./css/manipulation": "./modules/manipulation.css", + "./css/mousewheel": "./modules/mousewheel.css", + "./css/navigation": "./modules/navigation.css", + "./css/pagination": "./modules/pagination.css", + "./css/parallax": "./modules/parallax.css", + "./css/scrollbar": "./modules/scrollbar.css", + "./css/thumbs": "./modules/thumbs.css", + "./css/virtual": "./modules/virtual.css", + "./css/zoom": "./modules/zoom.css", + "./less": "./swiper.less", + "./less/a11y": "./modules/a11y.less", + "./less/autoplay": "./modules/autoplay.less", + "./less/controller": "./modules/controller.less", + "./less/effect-coverflow": "./modules/effect-coverflow.less", + "./less/effect-cube": "./modules/effect-cube.less", + "./less/effect-fade": "./modules/effect-fade.less", + "./less/effect-flip": "./modules/effect-flip.less", + "./less/effect-creative": "./modules/effect-creative.less", + "./less/effect-cards": "./modules/effect-cards.less", + "./less/free-mode": "./modules/free-mode.less", + "./less/grid": "./modules/grid.less", + "./less/hash-navigation": "./modules/hash-navigation.less", + "./less/history": "./modules/history.less", + "./less/keyboard": "./modules/keyboard.less", + "./less/manipulation": "./modules/manipulation.less", + "./less/mousewheel": "./modules/mousewheel.less", + "./less/navigation": "./modules/navigation.less", + "./less/pagination": "./modules/pagination.less", + "./less/parallax": "./modules/parallax.less", + "./less/scrollbar": "./modules/scrollbar.less", + "./less/thumbs": "./modules/thumbs.less", + "./less/virtual": "./modules/virtual.less", + "./less/zoom": "./modules/zoom.less", + "./scss": "./swiper.scss", + "./scss/a11y": "./modules/a11y.scss", + "./scss/autoplay": "./modules/autoplay.scss", + "./scss/controller": "./modules/controller.scss", + "./scss/effect-coverflow": "./modules/effect-coverflow.scss", + "./scss/effect-cube": "./modules/effect-cube.scss", + "./scss/effect-fade": "./modules/effect-fade.scss", + "./scss/effect-flip": "./modules/effect-flip.scss", + "./scss/effect-creative": "./modules/effect-creative.scss", + "./scss/effect-cards": "./modules/effect-cards.scss", + "./scss/free-mode": "./modules/free-mode.scss", + "./scss/grid": "./modules/grid.scss", + "./scss/hash-navigation": "./modules/hash-navigation.scss", + "./scss/history": "./modules/history.scss", + "./scss/keyboard": "./modules/keyboard.scss", + "./scss/manipulation": "./modules/manipulation.scss", + "./scss/mousewheel": "./modules/mousewheel.scss", + "./scss/navigation": "./modules/navigation.scss", + "./scss/pagination": "./modules/pagination.scss", + "./scss/parallax": "./modules/parallax.scss", + "./scss/scrollbar": "./modules/scrollbar.scss", + "./scss/thumbs": "./modules/thumbs.scss", + "./scss/virtual": "./modules/virtual.scss", + "./scss/zoom": "./modules/zoom.scss", + "./element": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element.mjs" + }, + "./element/bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element-bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element/css/a11y": "./modules/a11y-element.css", + "./element/css/autoplay": "./modules/autoplay-element.css", + "./element/css/controller": "./modules/controller-element.css", + "./element/css/effect-coverflow": "./modules/effect-coverflow-element.css", + "./element/css/effect-cube": "./modules/effect-cube-element.css", + "./element/css/effect-fade": "./modules/effect-fade-element.css", + "./element/css/effect-flip": "./modules/effect-flip-element.css", + "./element/css/effect-creative": "./modules/effect-creative-element.css", + "./element/css/effect-cards": "./modules/effect-cards-element.css", + "./element/css/free-mode": "./modules/free-mode-element.css", + "./element/css/grid": "./modules/grid-element.css", + "./element/css/hash-navigation": "./modules/hash-navigation-element.css", + "./element/css/history": "./modules/history-element.css", + "./element/css/keyboard": "./modules/keyboard-element.css", + "./element/css/manipulation": "./modules/manipulation-element.css", + "./element/css/mousewheel": "./modules/mousewheel-element.css", + "./element/css/navigation": "./modules/navigation-element.css", + "./element/css/pagination": "./modules/pagination-element.css", + "./element/css/parallax": "./modules/parallax-element.css", + "./element/css/scrollbar": "./modules/scrollbar-element.css", + "./element/css/thumbs": "./modules/thumbs-element.css", + "./element/css/virtual": "./modules/virtual-element.css", + "./element/css/zoom": "./modules/zoom-element.css", + "./react": { + "types": "./swiper-react.d.ts", + "default": "./swiper-react.mjs" + }, + "./vue": { + "types": "./swiper-vue.d.ts", + "default": "./swiper-vue.mjs" + }, + "./modules": { + "types": "./types/modules/index.d.ts", + "default": "./modules/index.mjs" + }, + "./types": "./types/index.d.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "modules": [ + "./types/modules/index.d.ts" + ], + "element": [ + "./swiper-element.d.ts" + ], + "element/bundle": [ + "./swiper-element.d.ts" + ], + "react": [ + "./swiper-react.d.ts" + ], + "vue": [ + "./swiper-vue.d.ts" + ] + } + }, + "repository": { + "type": "git", + "url": "https://github.com/nolimits4web/Swiper.git" + }, + "keywords": [ + "swiper", + "swipe", + "slider", + "touch", + "ios", + "mobile", + "cordova", + "phonegap", + "app", + "framework", + "framework7", + "carousel", + "gallery", + "plugin", + "react", + "vue", + "slideshow" + ], + "author": "Vladimir Kharlampidi", + "license": "MIT", + "bugs": { + "url": "https://github.com/nolimits4web/swiper/issues" + }, + "homepage": "https://swiperjs.com", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + }, + "releaseDate": "November 22, 2023" +} diff --git a/build/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs b/build/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs new file mode 100644 index 0000000..f177f5b --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs @@ -0,0 +1,2 @@ +function classesToSelector(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}export{classesToSelector as c}; +//# sourceMappingURL=classes-to-selector.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs.map b/build/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs.map new file mode 100644 index 0000000..d817369 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"classes-to-selector.mjs.mjs","names":["classesToSelector","classes","trim","replace"],"sources":["0"],"mappings":"AAAA,SAASA,kBAAkBC,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEL,IAAIA,EAAQC,OAAOC,QAAQ,eAAgB,QACjDA,QAAQ,KAAM,MACjB,QAESH"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/classes-to-selector.mjs b/build/assets/js/vendor/swiper/shared/classes-to-selector.mjs new file mode 100644 index 0000000..dd142d5 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/classes-to-selector.mjs @@ -0,0 +1,9 @@ +function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; +} + +export { classesToSelector as c }; diff --git a/build/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs b/build/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs new file mode 100644 index 0000000..f92d40d --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren,c as createElement}from"./utils.min.mjs";function createElementIfNotDefined(e,t,n,a){return e.params.createElements&&Object.keys(a).forEach((l=>{if(!n[l]&&!0===n.auto){let r=elementChildren(e.el,`.${a[l]}`)[0];r||(r=createElement("div",a[l]),r.className=a[l],e.el.append(r)),n[l]=r,t[l]=r}})),n}export{createElementIfNotDefined as c}; +//# sourceMappingURL=create-element-if-not-defined.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs.map b/build/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs.map new file mode 100644 index 0000000..85a319b --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-element-if-not-defined.mjs.mjs","names":["elementChildren","createElement","createElementIfNotDefined","swiper","originalParams","params","checkProps","createElements","Object","keys","forEach","key","auto","element","el","className","append"],"sources":["0"],"mappings":"YAAcA,qBAAsBC,kBAAqB,kBAEzD,SAASC,0BAA0BC,EAAQC,EAAgBC,EAAQC,GAejE,OAdIH,EAAOE,OAAOE,gBAChBC,OAAOC,KAAKH,GAAYI,SAAQC,IAC9B,IAAKN,EAAOM,KAAwB,IAAhBN,EAAOO,KAAe,CACxC,IAAIC,EAAUb,gBAAgBG,EAAOW,GAAI,IAAIR,EAAWK,MAAQ,GAC3DE,IACHA,EAAUZ,cAAc,MAAOK,EAAWK,IAC1CE,EAAQE,UAAYT,EAAWK,GAC/BR,EAAOW,GAAGE,OAAOH,IAEnBR,EAAOM,GAAOE,EACdT,EAAeO,GAAOE,CACxB,KAGGR,CACT,QAESH"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/create-element-if-not-defined.mjs b/build/assets/js/vendor/swiper/shared/create-element-if-not-defined.mjs new file mode 100644 index 0000000..10b283f --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/create-element-if-not-defined.mjs @@ -0,0 +1,21 @@ +import { e as elementChildren, c as createElement } from './utils.mjs'; + +function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; +} + +export { createElementIfNotDefined as c }; diff --git a/build/assets/js/vendor/swiper/shared/create-shadow.min.mjs b/build/assets/js/vendor/swiper/shared/create-shadow.min.mjs new file mode 100644 index 0000000..5d337da --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/create-shadow.min.mjs @@ -0,0 +1,2 @@ +import{l as getSlideTransformEl,c as createElement}from"./utils.min.mjs";function createShadow(e,t,r){const s=`swiper-slide-shadow${r?`-${r}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=getSlideTransformEl(t);let i=a.querySelector(`.${s.split(" ").join(".")}`);return i||(i=createElement("div",s.split(" ")),a.append(i)),i}export{createShadow as c}; +//# sourceMappingURL=create-shadow.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/create-shadow.min.mjs.map b/build/assets/js/vendor/swiper/shared/create-shadow.min.mjs.map new file mode 100644 index 0000000..4505556 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/create-shadow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-shadow.mjs.mjs","names":["getSlideTransformEl","createElement","createShadow","suffix","slideEl","side","shadowClass","shadowContainer","shadowEl","querySelector","split","join","append"],"sources":["0"],"mappings":"YAAcA,yBAA0BC,kBAAqB,kBAE7D,SAASC,aAAaC,EAAQC,EAASC,GACrC,MAAMC,EAAc,sBAAsBD,EAAO,IAAIA,IAAS,KAAKF,EAAS,wBAAwBA,IAAW,KACzGI,EAAkBP,oBAAoBI,GAC5C,IAAII,EAAWD,EAAgBE,cAAc,IAAIH,EAAYI,MAAM,KAAKC,KAAK,QAK7E,OAJKH,IACHA,EAAWP,cAAc,MAAOK,EAAYI,MAAM,MAClDH,EAAgBK,OAAOJ,IAElBA,CACT,QAESN"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/create-shadow.mjs b/build/assets/js/vendor/swiper/shared/create-shadow.mjs new file mode 100644 index 0000000..66e7f05 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/create-shadow.mjs @@ -0,0 +1,14 @@ +import { l as getSlideTransformEl, c as createElement } from './utils.mjs'; + +function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; +} + +export { createShadow as c }; diff --git a/build/assets/js/vendor/swiper/shared/effect-init.min.mjs b/build/assets/js/vendor/swiper/shared/effect-init.min.mjs new file mode 100644 index 0000000..feed86e --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/effect-init.min.mjs @@ -0,0 +1,2 @@ +function effectInit(e){const{effect:s,swiper:a,on:t,setTranslate:r,setTransition:i,overwriteParams:n,perspective:o,recreateShadows:f,getEffectParams:l}=e;let c;t("beforeInit",(()=>{if(a.params.effect!==s)return;a.classNames.push(`${a.params.containerModifierClass}${s}`),o&&o()&&a.classNames.push(`${a.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(a.params,e),Object.assign(a.originalParams,e)})),t("setTranslate",(()=>{a.params.effect===s&&r()})),t("setTransition",((e,t)=>{a.params.effect===s&&i(t)})),t("transitionEnd",(()=>{if(a.params.effect===s&&f){if(!l||!l().slideShadows)return;a.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),f()}})),t("virtualUpdate",(()=>{a.params.effect===s&&(a.slides.length||(c=!0),requestAnimationFrame((()=>{c&&a.slides&&a.slides.length&&(r(),c=!1)})))}))}export{effectInit as e}; +//# sourceMappingURL=effect-init.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/effect-init.min.mjs.map b/build/assets/js/vendor/swiper/shared/effect-init.min.mjs.map new file mode 100644 index 0000000..7250e5b --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/effect-init.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-init.mjs.mjs","names":["effectInit","params","effect","swiper","on","setTranslate","setTransition","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","push","containerModifierClass","overwriteParamsResult","Object","assign","originalParams","_s","duration","slideShadows","slides","forEach","slideEl","querySelectorAll","shadowEl","remove","length","requestAnimationFrame"],"sources":["0"],"mappings":"AAAA,SAASA,WAAWC,GAClB,MAAMC,OACJA,EAAMC,OACNA,EAAMC,GACNA,EAAEC,aACFA,EAAYC,cACZA,EAAaC,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACET,EA+BJ,IAAIU,EA9BJP,EAAG,cAAc,KACf,GAAID,EAAOF,OAAOC,SAAWA,EAAQ,OACrCC,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,yBAAyBZ,KAC7DM,GAAeA,KACjBL,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,4BAE1C,MAAMC,EAAwBR,EAAkBA,IAAoB,CAAC,EACrES,OAAOC,OAAOd,EAAOF,OAAQc,GAC7BC,OAAOC,OAAOd,EAAOe,eAAgBH,EAAsB,IAE7DX,EAAG,gBAAgB,KACbD,EAAOF,OAAOC,SAAWA,GAC7BG,GAAc,IAEhBD,EAAG,iBAAiB,CAACe,EAAIC,KACnBjB,EAAOF,OAAOC,SAAWA,GAC7BI,EAAcc,EAAS,IAEzBhB,EAAG,iBAAiB,KAClB,GAAID,EAAOF,OAAOC,SAAWA,GACzBO,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBW,aAAc,OAEzDlB,EAAOmB,OAAOC,SAAQC,IACpBA,EAAQC,iBAAiB,gHAAgHF,SAAQG,GAAYA,EAASC,UAAS,IAGjLlB,GACF,KAGFL,EAAG,iBAAiB,KACdD,EAAOF,OAAOC,SAAWA,IACxBC,EAAOmB,OAAOM,SACjBjB,GAAyB,GAE3BkB,uBAAsB,KAChBlB,GAA0BR,EAAOmB,QAAUnB,EAAOmB,OAAOM,SAC3DvB,IACAM,GAAyB,EAC3B,IACA,GAEN,QAESX"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/effect-init.mjs b/build/assets/js/vendor/swiper/shared/effect-init.mjs new file mode 100644 index 0000000..d418687 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/effect-init.mjs @@ -0,0 +1,58 @@ +function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); +} + +export { effectInit as e }; diff --git a/build/assets/js/vendor/swiper/shared/effect-target.min.mjs b/build/assets/js/vendor/swiper/shared/effect-target.min.mjs new file mode 100644 index 0000000..82d30c6 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/effect-target.min.mjs @@ -0,0 +1,2 @@ +import{l as getSlideTransformEl}from"./utils.min.mjs";function effectTarget(e,i){const t=getSlideTransformEl(i);return t!==i&&(t.style.backfaceVisibility="hidden",t.style["-webkit-backface-visibility"]="hidden"),t}export{effectTarget as e}; +//# sourceMappingURL=effect-target.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/effect-target.min.mjs.map b/build/assets/js/vendor/swiper/shared/effect-target.min.mjs.map new file mode 100644 index 0000000..9d0c540 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/effect-target.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-target.mjs.mjs","names":["getSlideTransformEl","effectTarget","effectParams","slideEl","transformEl","style","backfaceVisibility"],"sources":["0"],"mappings":"YAAcA,wBAA2B,kBAEzC,SAASC,aAAaC,EAAcC,GAClC,MAAMC,EAAcJ,oBAAoBG,GAKxC,OAJIC,IAAgBD,IAClBC,EAAYC,MAAMC,mBAAqB,SACvCF,EAAYC,MAAM,+BAAiC,UAE9CD,CACT,QAESH"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/effect-target.mjs b/build/assets/js/vendor/swiper/shared/effect-target.mjs new file mode 100644 index 0000000..ba17d5b --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/effect-target.mjs @@ -0,0 +1,12 @@ +import { l as getSlideTransformEl } from './utils.mjs'; + +function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; +} + +export { effectTarget as e }; diff --git a/build/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs b/build/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs new file mode 100644 index 0000000..270263b --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs @@ -0,0 +1,2 @@ +import{j as elementTransitionEnd}from"./utils.min.mjs";function effectVirtualTransitionEnd(e){let{swiper:t,duration:n,transformElements:r,allSlides:i}=e;const{activeIndex:a}=t;if(t.params.virtualTranslate&&0!==n){let e,n=!1;e=i?r:r.filter((e=>{const n=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(n)===a})),e.forEach((e=>{elementTransitionEnd(e,(()=>{if(n)return;if(!t||t.destroyed)return;n=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}export{effectVirtualTransitionEnd as e}; +//# sourceMappingURL=effect-virtual-transition-end.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs.map b/build/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs.map new file mode 100644 index 0000000..da4e095 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-virtual-transition-end.mjs.mjs","names":["elementTransitionEnd","effectVirtualTransitionEnd","_ref","swiper","duration","transformElements","allSlides","activeIndex","params","virtualTranslate","transitionEndTarget","eventTriggered","filter","transformEl","el","classList","contains","parentElement","slides","slideEl","shadowRoot","parentNode","getSlide","getSlideIndex","forEach","destroyed","animating","evt","window","CustomEvent","bubbles","cancelable","wrapperEl","dispatchEvent"],"sources":["0"],"mappings":"YAAcA,yBAA4B,kBAE1C,SAASC,2BAA2BC,GAClC,IAAIC,OACFA,EAAMC,SACNA,EAAQC,kBACRA,EAAiBC,UACjBA,GACEJ,EACJ,MAAMK,YACJA,GACEJ,EASJ,GAAIA,EAAOK,OAAOC,kBAAiC,IAAbL,EAAgB,CACpD,IACIM,EADAC,GAAiB,EAGnBD,EADEJ,EACoBD,EAEAA,EAAkBO,QAAOC,IAC7C,MAAMC,EAAKD,EAAYE,UAAUC,SAAS,0BAf/BF,KACf,IAAKA,EAAGG,cAGN,OADcd,EAAOe,OAAON,QAAOO,GAAWA,EAAQC,YAAcD,EAAQC,aAAeN,EAAGO,aAAY,GAG5G,OAAOP,EAAGG,aAAa,EASmDK,CAAST,GAAeA,EAC9F,OAAOV,EAAOoB,cAAcT,KAAQP,CAAW,IAGnDG,EAAoBc,SAAQV,IAC1Bd,qBAAqBc,GAAI,KACvB,GAAIH,EAAgB,OACpB,IAAKR,GAAUA,EAAOsB,UAAW,OACjCd,GAAiB,EACjBR,EAAOuB,WAAY,EACnB,MAAMC,EAAM,IAAIC,OAAOC,YAAY,gBAAiB,CAClDC,SAAS,EACTC,YAAY,IAEd5B,EAAO6B,UAAUC,cAAcN,EAAI,GACnC,GAEN,CACF,QAES1B"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/effect-virtual-transition-end.mjs b/build/assets/js/vendor/swiper/shared/effect-virtual-transition-end.mjs new file mode 100644 index 0000000..42109a3 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/effect-virtual-transition-end.mjs @@ -0,0 +1,48 @@ +import { j as elementTransitionEnd } from './utils.mjs'; + +function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } +} + +export { effectVirtualTransitionEnd as e }; diff --git a/build/assets/js/vendor/swiper/shared/get-element-params.min.mjs b/build/assets/js/vendor/swiper/shared/get-element-params.min.mjs new file mode 100644 index 0000000..8a456d3 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/get-element-params.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,i as isObject,c as attrToProp,p as paramsList}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";const formatValue=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let a;try{a=JSON.parse(e)}catch(t){a=e}return a}return e}},modulesParamsList=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function getParams(e,a,t){const r={},n={};extend(r,defaults);const i=[...paramsList,"on"],o=i.map((e=>e.replace(/_/,"")));i.forEach((a=>{a=a.replace("_",""),void 0!==e[a]&&(n[a]=e[a])}));const s=[...e.attributes];return"string"==typeof a&&void 0!==t&&s.push({name:a,value:isObject(t)?{...t}:t}),s.forEach((e=>{const a=modulesParamsList.filter((a=>0===e.name.indexOf(`${a}-`)))[0];if(a){const t=attrToProp(a),r=attrToProp(e.name.split(`${a}-`)[1]);void 0===n[t]&&(n[t]={}),!0===n[t]&&(n[t]={enabled:!0}),n[t][r]=formatValue(e.value)}else{const a=attrToProp(e.name);if(!o.includes(a))return;const t=formatValue(e.value);n[a]&&modulesParamsList.includes(e.name)&&!isObject(t)?(n[a].constructor!==Object&&(n[a]={}),n[a].enabled=!!t):n[a]=t}})),extend(r,n),r.navigation?r.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==r.navigation?r.navigation:{}}:!1===r.navigation&&delete r.navigation,r.scrollbar?r.scrollbar={el:".swiper-scrollbar",...!0!==r.scrollbar?r.scrollbar:{}}:!1===r.scrollbar&&delete r.scrollbar,r.pagination?r.pagination={el:".swiper-pagination",...!0!==r.pagination?r.pagination:{}}:!1===r.pagination&&delete r.pagination,{params:r,passedParams:n}}export{getParams as g}; +//# sourceMappingURL=get-element-params.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/get-element-params.min.mjs.map b/build/assets/js/vendor/swiper/shared/get-element-params.min.mjs.map new file mode 100644 index 0000000..883b699 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/get-element-params.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"get-element-params.mjs.mjs","names":["extend","isObject","attrToProp","paramsList","defaults","formatValue","val","parseFloat","Number","includes","v","JSON","parse","err","modulesParamsList","getParams","element","propName","propValue","params","passedParams","localParamsList","allowedParams","map","key","replace","forEach","paramName","attrsList","attributes","push","name","value","attr","moduleParam","filter","mParam","indexOf","parentObjName","subObjName","split","enabled","constructor","Object","navigation","prevEl","nextEl","scrollbar","el","pagination"],"sources":["0"],"mappings":"YAAcA,YAAaC,cAAeC,gBAAiBC,eAAkB,sCAC/DC,aAAgB,wBAE9B,MAAMC,YAAcC,IAClB,GAAIC,WAAWD,KAASE,OAAOF,GAAM,OAAOE,OAAOF,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,iBAARA,GAAoBA,EAAIG,SAAS,MAAQH,EAAIG,SAAS,MAAQH,EAAIG,SAAS,KAAM,CAC1F,IAAIC,EACJ,IACEA,EAAIC,KAAKC,MAAMN,EACjB,CAAE,MAAOO,GACPH,EAAIJ,CACN,CACA,OAAOI,CACT,CACA,OAAOJ,CAVkC,CAU/B,EAENQ,kBAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,UAAUC,EAASC,EAAUC,GACpC,MAAMC,EAAS,CAAC,EACVC,EAAe,CAAC,EACtBpB,OAAOmB,EAAQf,UACf,MAAMiB,EAAkB,IAAIlB,WAAY,MAClCmB,EAAgBD,EAAgBE,KAAIC,GAAOA,EAAIC,QAAQ,IAAK,MAGlEJ,EAAgBK,SAAQC,IACtBA,EAAYA,EAAUF,QAAQ,IAAK,SACD,IAAvBT,EAAQW,KACjBP,EAAaO,GAAaX,EAAQW,GACpC,IAIF,MAAMC,EAAY,IAAIZ,EAAQa,YA6D9B,MA5DwB,iBAAbZ,QAA8C,IAAdC,GACzCU,EAAUE,KAAK,CACbC,KAAMd,EACNe,MAAO/B,SAASiB,GAAa,IACxBA,GACDA,IAGRU,EAAUF,SAAQO,IAChB,MAAMC,EAAcpB,kBAAkBqB,QAAOC,GAA8C,IAApCH,EAAKF,KAAKM,QAAQ,GAAGD,QAAkB,GAC9F,GAAIF,EAAa,CACf,MAAMI,EAAgBpC,WAAWgC,GAC3BK,EAAarC,WAAW+B,EAAKF,KAAKS,MAAM,GAAGN,MAAgB,SACtB,IAAhCd,EAAakB,KAAgClB,EAAakB,GAAiB,CAAC,IACnD,IAAhClB,EAAakB,KACflB,EAAakB,GAAiB,CAC5BG,SAAS,IAGbrB,EAAakB,GAAeC,GAAclC,YAAY4B,EAAKD,MAC7D,KAAO,CACL,MAAMD,EAAO7B,WAAW+B,EAAKF,MAC7B,IAAKT,EAAcb,SAASsB,GAAO,OACnC,MAAMC,EAAQ3B,YAAY4B,EAAKD,OAC3BZ,EAAaW,IAASjB,kBAAkBL,SAASwB,EAAKF,QAAU9B,SAAS+B,IACvEZ,EAAaW,GAAMW,cAAgBC,SACrCvB,EAAaW,GAAQ,CAAC,GAExBX,EAAaW,GAAMU,UAAYT,GAE/BZ,EAAaW,GAAQC,CAEzB,KAEFhC,OAAOmB,EAAQC,GACXD,EAAOyB,WACTzB,EAAOyB,WAAa,CAClBC,OAAQ,sBACRC,OAAQ,0BACkB,IAAtB3B,EAAOyB,WAAsBzB,EAAOyB,WAAa,CAAC,IAEzB,IAAtBzB,EAAOyB,mBACTzB,EAAOyB,WAEZzB,EAAO4B,UACT5B,EAAO4B,UAAY,CACjBC,GAAI,wBACqB,IAArB7B,EAAO4B,UAAqB5B,EAAO4B,UAAY,CAAC,IAExB,IAArB5B,EAAO4B,kBACT5B,EAAO4B,UAEZ5B,EAAO8B,WACT9B,EAAO8B,WAAa,CAClBD,GAAI,yBACsB,IAAtB7B,EAAO8B,WAAsB9B,EAAO8B,WAAa,CAAC,IAEzB,IAAtB9B,EAAO8B,mBACT9B,EAAO8B,WAET,CACL9B,SACAC,eAEJ,QAESL"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/get-element-params.mjs b/build/assets/js/vendor/swiper/shared/get-element-params.mjs new file mode 100644 index 0000000..eb00b03 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/get-element-params.mjs @@ -0,0 +1,106 @@ +import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; +}; +const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; +function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; +} + +export { getParams as g }; diff --git a/build/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs b/build/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs new file mode 100644 index 0000000..4ee44c8 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs @@ -0,0 +1,2 @@ +function isObject(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((n=>{void 0===e[n]?e[n]=t[n]:isObject(t[n])&&isObject(e[n])&&Object.keys(t[n]).length>0&&extend(e[n],t[n])}))}const ssrDocument={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function getDocument(){const e="undefined"!=typeof document?document:{};return extend(e,ssrDocument),e}const ssrWindow={document:ssrDocument,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function getWindow(){const e="undefined"!=typeof window?window:{};return extend(e,ssrWindow),e}export{getWindow as a,getDocument as g}; +//# sourceMappingURL=ssr-window.esm.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs.map b/build/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs.map new file mode 100644 index 0000000..2a3d646 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"ssr-window.esm.mjs.mjs","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window"],"sources":["0"],"mappings":"AAYA,SAASA,SAASC,GAChB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,OAAOC,EAAQC,QACP,IAAXD,IACFA,EAAS,CAAC,QAEA,IAARC,IACFA,EAAM,CAAC,GAETH,OAAOI,KAAKD,GAAKE,SAAQC,SACI,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcT,SAASM,EAAIG,KAAST,SAASK,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GACpJN,OAAOC,EAAOI,GAAMH,EAAIG,GAC1B,GAEJ,CACA,MAAME,YAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChBC,qBAAoB,IACX,KAIbC,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,cACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EAE1D,OADAtC,OAAOqC,EAAK9B,aACL8B,CACT,CACA,MAAME,UAAY,CAChBD,SAAU/B,YACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAvC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBuC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEVC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9B,oBAAAC,CAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,YACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADA/D,OAAO8D,EAAKvB,WACLuB,CACT,QAESD,eAAgBzB"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/ssr-window.esm.mjs b/build/assets/js/vendor/swiper/shared/ssr-window.esm.mjs new file mode 100644 index 0000000..874f0e9 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/ssr-window.esm.mjs @@ -0,0 +1,145 @@ +/** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ +/* eslint-disable no-param-reassign */ +function isObject(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; +} +function extend(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + extend(target[key], src[key]); + } + }); +} +const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } +}; +function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend(doc, ssrDocument); + return doc; +} +const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } +}; +function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend(win, ssrWindow); + return win; +} + +export { getWindow as a, getDocument as g }; diff --git a/build/assets/js/vendor/swiper/shared/swiper-core.min.mjs b/build/assets/js/vendor/swiper/shared/swiper-core.min.mjs new file mode 100644 index 0000000..b67ba34 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/swiper-core.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";import{a as elementParents,m as elementStyle,e as elementChildren,s as setCSSProperty,f as elementOuterSize,o as elementNextAll,p as elementPrevAll,i as getTranslate,q as animateCSSModeScroll,n as nextTick,r as showWarning,c as createElement,d as now,t as extend,g as elementIndex,u as deleteProps}from"./utils.min.mjs";let support,deviceCached,browser;function calcSupport(){const e=getWindow(),t=getDocument();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice(e){let{userAgent:t}=void 0===e?{}:e;const s=getSupport(),i=getWindow(),r=i.navigator.platform,n=t||i.navigator.userAgent,a={ios:!1,android:!1},l=i.screen.width,o=i.screen.height,d=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const p=n.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===r;let m="MacIntel"===r;return!c&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${o}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),m=!1),d&&!h&&(a.os="android",a.android=!0),(c||u||p)&&(a.os="ios",a.ios=!0),a}function getDevice(e){return void 0===e&&(e={}),deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){const e=getWindow();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,i]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&i<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}function getBrowser(){return browser||(browser=calcBrowser()),browser}function Resize(e){let{swiper:t,on:s,emit:i}=e;const r=getWindow();let n=null,a=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},o=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{a=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),n.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",o))})),s("destroy",(()=>{a&&r.cancelAnimationFrame(a),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",o)}))}function Observer(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=[],a=getWindow(),l=function(e,s){void 0===s&&(s={});const i=new(a.MutationObserver||a.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};a.requestAnimationFrame?a.requestAnimationFrame(s):a.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=elementParents(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}var eventsEmitter={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};function updateSize(){const e=this;let t,s;const i=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:i.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:i.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(elementStyle(i,"padding-left")||0,10)-parseInt(elementStyle(i,"padding-right")||0,10),s=s-parseInt(elementStyle(i,"padding-top")||0,10)-parseInt(elementStyle(i,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this;function t(t,s){return parseFloat(t.getPropertyValue(e.getDirectionLabel(s))||0)}const s=e.params,{wrapperEl:i,slidesEl:r,size:n,rtlTranslate:a,wrongRTL:l}=e,o=e.virtual&&s.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=elementChildren(r,`.${e.params.slideClass}, swiper-slide`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=s.slidesOffsetBefore;"function"==typeof f&&(f=s.slidesOffsetBefore.call(e));let v=s.slidesOffsetAfter;"function"==typeof v&&(v=s.slidesOffsetAfter.call(e));const g=e.snapGrid.length,w=e.slidesGrid.length;let S=s.spaceBetween,T=-f,b=0,x=0;if(void 0===n)return;"string"==typeof S&&S.indexOf("%")>=0?S=parseFloat(S.replace("%",""))/100*n:"string"==typeof S&&(S=parseFloat(S)),e.virtualSize=-S,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(setCSSProperty(i,"--swiper-centered-offset-before",""),setCSSProperty(i,"--swiper-centered-offset-after",""));const y=s.grid&&s.grid.rows>1&&e.grid;let E;y?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const C="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-n)}if(o&&s.loop){const t=m[0]+S;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${S}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(S||0)})),e-=S;const t=e-n;u=u.map((e=>e<=0?-f:e>t?t+v:e))}if(s.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(S||0)})),e-=S,e{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){setCSSProperty(i,"--swiper-centered-offset-before",-u[0]+"px"),setCSSProperty(i,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==g&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==w&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}}function updateAutoHeight(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)}function updateSlidesOffset(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&h<=t.size||u<=0&&h>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),m&&i[e].classList.add(s.slideFullyVisibleClass),o.progress=r?-c:c,o.originalProgress=r?-p:p}}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:l}=t;const o=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=l||r>=1,s&&(r=0),l&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=r?(o-r)/a:(o+a-n)/a,l>1&&(l-=1)}Object.assign(t,{progress:r,progressLoop:l,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!o&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(o&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)}function updateSlidesClasses(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,l=e=>elementChildren(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${r}"]`);else a?(o=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):o=t[r];o&&(o.classList.add(s.slideActiveClass),a?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=elementNextAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=elementPrevAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()}const processLazyPreloader=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},unlazy=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},preload=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&unlazy(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&unlazy(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=getActiveIndexByTranslate(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/r.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===n&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&preload(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))}function updateClickedSlide(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;eo?o:i&&ea?"next":n=o.length&&(v=o.length-1);const g=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(u?g>n.translate&&g>n.minTranslate():gn.translate&&g>n.maxTranslate()&&(p||0)!==a)return!1}let w;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(g),w=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return animateCSSModeScroll({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(g),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,w),0===t?n.transitionEnd(s,w):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,w))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0}function slideToLoop(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this,n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let i=r.params.slidesPerView;"auto"===i?i=r.slidesPerViewDynamic():(i=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r}function slideNext(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r)return i;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)}function slidePrev(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:l,enabled:o,animating:d}=i;if(!o)return i;const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?i.translate:-i.translate),h=n.map((e=>p(e)));let m=n[h.indexOf(u)-1];if(void 0===m&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(m=n[e>0?e-1:e])}let f=0;if(void 0!==m&&(f=a.indexOf(m),f<0&&(f=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)}function slideReset(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);return this.slideTo(this.activeIndex,e,t,s)}function slideToClosest(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),l=a+Math.floor((n-a)/r.params.slidesPerGroup),o=r.rtlTranslate?r.translate:-r.translate;if(o>=r.snapGrid[l]){const e=r.snapGrid[l];o-e>(r.snapGrid[l+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[l-1];o-e<=(r.snapGrid[l]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)}function slideToClickedSlide(){const e=this,{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const a=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{elementChildren(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),l=t.slides.length%a!=0,o=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):b=n;const x="next"===i||!i,y="prev"===i||!i;let E=0,C=0;const P=w?Math.ceil(d.length/h.grid.rows):d.length,M=(w?d[n].column:n)+(m&&void 0===r?-f/2+.5:0);if(M=0;t-=1)d[t].column===e&&S.push(t)}else S.push(P-t-1)}}else if(M+f>P-g){C=Math.max(M-(P-2*g),v);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),y&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===h.slidesPerView?o.updateSlides():w&&(S.length>0&&y||T.length>0&&x)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),h.watchSlidesProgress&&o.updateSlidesOffset(),s)if(S.length>0&&y){if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b+E]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b+E,0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(r){const e=w?S.length/h.grid.rows:S.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(T.length>0&&x)if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b-C,0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=w?T.length/h.grid.rows:T.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===h.slidesPerView&&s})}o.emit("loopFix")}function loopDestroy(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))}function unsetGrabCursor(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function closestElement(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===getDocument()||s===getWindow())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}function preventEdgeSwipe(e,t,s){const i=getWindow(),{params:r}=e,n=r.edgeSwipeDetection,a=r.edgeSwipeThreshold;return!n||!(s<=a||s>=i.innerWidth-a)||"prevent"===n&&(t.preventDefault(),!0)}function onTouchStart(e){const t=this,s=getDocument();let i=e;i.originalEvent&&(i=i.originalEvent);const r=t.touchEventsData;if("pointerdown"===i.type){if(null!==r.pointerId&&r.pointerId!==i.pointerId)return;r.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(r.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void preventEdgeSwipe(t,i,i.targetTouches[0].pageX);const{params:n,touches:a,enabled:l}=t;if(!l)return;if(!n.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&n.preventInteractionOnTransition)return;!t.animating&&n.cssMode&&n.loop&&t.loopFix();let o=i.target;if("wrapper"===n.touchEventsTarget&&!t.wrapperEl.contains(o))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(r.isTouched&&r.isMoved)return;const d=!!n.noSwipingClass&&""!==n.noSwipingClass,c=i.composedPath?i.composedPath():i.path;d&&i.target&&i.target.shadowRoot&&c&&(o=c[0]);const p=n.noSwipingSelector?n.noSwipingSelector:`.${n.noSwipingClass}`,u=!(!i.target||!i.target.shadowRoot);if(n.noSwiping&&(u?closestElement(p,o):o.closest(p)))return void(t.allowClick=!0);if(n.swipeHandler&&!o.closest(n.swipeHandler))return;a.currentX=i.pageX,a.currentY=i.pageY;const h=a.currentX,m=a.currentY;if(!preventEdgeSwipe(t,i,h))return;Object.assign(r,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),a.startX=h,a.startY=m,r.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,n.threshold>0&&(r.allowThresholdMove=!1);let f=!0;o.matches(r.focusableElements)&&(f=!1,"SELECT"===o.nodeName&&(r.isTouched=!1)),s.activeElement&&s.activeElement.matches(r.focusableElements)&&s.activeElement!==o&&s.activeElement.blur();const v=f&&t.allowTouchMove&&n.touchStartPreventDefault;!n.touchStartForcePreventDefault&&!v||o.isContentEditable||i.preventDefault(),n.freeMode&&n.freeMode.enabled&&t.freeMode&&t.animating&&!n.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function onTouchMove(e){const t=getDocument(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:a,enabled:l}=s;if(!l)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let o,d=e;if(d.originalEvent&&(d=d.originalEvent),"pointermove"===d.type){if(null!==i.touchId)return;if(d.pointerId!==i.pointerId)return}if("touchmove"===d.type){if(o=[...d.changedTouches].filter((e=>e.identifier===i.touchId))[0],!o||o.identifier!==i.touchId)return}else o=d;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",d));const c=o.pageX,p=o.pageY;if(d.preventedByNestedSwiper)return n.startX=c,void(n.startY=p);if(!s.allowTouchMove)return d.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p}),i.touchStartTime=now()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(pn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(cn.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&d.target===t.activeElement&&d.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",d),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=c,n.currentY=p;const u=n.currentX-n.startX,h=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(u**2+h**2)=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",d),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&d.cancelable&&d.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&d.stopPropagation();let m=s.isHorizontal()?u:h,f=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(m=Math.abs(m)*(a?1:-1),f=Math.abs(f)*(a?1:-1)),n.diff=m,m*=r.touchRatio,a&&(m=-m,f=-f);const v=s.touchesDirection;s.swipeDirection=m>0?"prev":"next",s.touchesDirection=f>0?"prev":"next";const g=s.params.loop&&!r.cssMode,w="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(g&&w&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",d)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&v!==s.touchesDirection&&g&&w&&Math.abs(m)>=1)return Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",d),i.isMoved=!0,i.currentTranslate=m+i.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),m>0?(g&&w&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+m)**T))):m<0&&(g&&w&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(m)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:a,rtlTranslate:l,slidesGrid:o,enabled:d}=t;if(!d)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const c=now(),p=c-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),p<300&&c-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=now(),nextTick((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===a.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let u;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,u=n.followFinger?l?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:u});const h=u>=-t.maxTranslate()&&!t.params.loop;let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=o[e]&&u=o[e])&&(m=e,f=o[o.length-1]-o[o.length-2])}let v=null,g=null;n.rewind&&(t.isBeginning?g=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const w=(u-o[m])/f,S=mn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?v:m+S):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-n.longSwipesRatio?t.slideTo(m+S):null!==g&&w<0&&Math.abs(w)>n.longSwipesRatio?t.slideTo(g):t.slideTo(m))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(m+S):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==v?v:m+S),"prev"===t.swipeDirection&&t.slideTo(null!==g?g:m))}}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function onClick(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function onScroll(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function onLoad(e){const t=this;processLazyPreloader(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function onDocumentTouchStart(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const events=(e,t)=>{const s=getDocument(),{params:i,el:r,wrapperEl:n,device:a}=e,l=!!i.nested,o="on"===t?"addEventListener":"removeEventListener",d=t;s[o]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),r[o]("touchstart",e.onTouchStart,{passive:!1}),r[o]("pointerdown",e.onTouchStart,{passive:!1}),s[o]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[o]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[o]("touchend",e.onTouchEnd,{passive:!0}),s[o]("pointerup",e.onTouchEnd,{passive:!0}),s[o]("pointercancel",e.onTouchEnd,{passive:!0}),s[o]("touchcancel",e.onTouchEnd,{passive:!0}),s[o]("pointerout",e.onTouchEnd,{passive:!0}),s[o]("pointerleave",e.onTouchEnd,{passive:!0}),s[o]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[o]("click",e.onClick,!0),i.cssMode&&n[o]("scroll",e.onScroll),i.updateOnWindowResize?e[d](a.ios||a.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e[d]("observerUpdate",onResize,!0),r[o]("load",e.onLoad,{capture:!0})};function attachEvents(){const e=this,{params:t}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),e.onDocumentTouchStart=onDocumentTouchStart.bind(e),t.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),e.onLoad=onLoad.bind(e),events(e,"on")}function detachEvents(){events(this,"off")}var events$1={attachEvents:attachEvents,detachEvents:detachEvents};const isGridEnabled=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;function setBreakpoint(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const l=(a in n?n[a]:void 0)||e.originalParams,o=isGridEnabled(e,i),d=isGridEnabled(e,l),c=i.enabled;o&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,r=l[t]&&l[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const p=l.direction&&l.direction!==i.direction,u=i.loop&&(l.slidesPerView!==i.slidesPerView||p),h=i.loop;p&&s&&e.changeDirection(),extend(e.params,l);const m=e.params.enabled,f=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),c&&!m?e.disable():!c&&m&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",l),s&&(u?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&f?(e.loopCreate(t),e.updateSlides()):h&&!f&&e.loopDestroy()),e.emit("breakpoint",l)}function getBreakpoint(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=getWindow(),n="window"===t?r.innerHeight:s.clientHeight,a=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));a.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=prepareClasses(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()}function removeClasses(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}var classes={addClasses:addClasses,removeClasses:removeClasses};function checkOverflow(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:i}=s;if(i){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*i;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function moduleExtendParams(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),extend(t,s)):extend(t,s)):extend(t,s)}}const prototypes={eventsEmitter:eventsEmitter,update:update,translate:translate,transition:transition,slide:slide,loop:loop,grabCursor:grabCursor,events:events$1,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes},extendedDefaults={};class Swiper{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=extend({},t,{el:s});e.push(new Swiper(i))})),e}const a=this;a.__swiper__=!0,a.support=getSupport(),a.device=getDevice({userAgent:t.userAgent}),a.browser=getBrowser(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],t.modules&&Array.isArray(t.modules)&&a.modules.push(...t.modules);const l={};a.modules.forEach((e=>{e({params:t,swiper:a,extendParams:moduleExtendParams(t,l),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})}));const o=extend({},defaults,l);return a.params=extend({},o,extendedDefaults,t),a.originalParams=extend({},a.params),a.passedParams=extend({},t),a.params&&a.params.on&&Object.keys(a.params.on).forEach((e=>{a.on(e,a.params.on[e])})),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===a.params.direction,isVertical:()=>"vertical"===a.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=elementChildren(t,`.${s.slideClass}, swiper-slide`),r=elementIndex(i[0]);return elementIndex(e)-r}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=elementChildren(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?i[l].swiperSlideSize:0;for(let s=l+1;sa&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>a&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){r[l]-r[e]{t.complete&&processLazyPreloader(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return elementChildren(s,i())[0]})();return!r&&t.params.createElements&&(r=createElement("div",t.params.wrapperClass),s.append(r),elementChildren(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction")),wrongRTL:"-webkit-box"===elementStyle(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?processLazyPreloader(t,e):e.addEventListener("load",(e=>{processLazyPreloader(t,e.target)}))})),preload(t),t.initialized=!0,preload(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttribute("style"),n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,deleteProps(s)),s.destroyed=!0),null}static extendDefaults(e){extend(extendedDefaults,e)}static get extendedDefaults(){return extendedDefaults}static get defaults(){return defaults}static installModule(e){Swiper.prototype.__modules__||(Swiper.prototype.__modules__=[]);const t=Swiper.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Swiper.installModule(e))),Swiper):(Swiper.installModule(e),Swiper)}}Object.keys(prototypes).forEach((e=>{Object.keys(prototypes[e]).forEach((t=>{Swiper.prototype[t]=prototypes[e][t]}))})),Swiper.use([Resize,Observer]);export{Swiper as S,defaults as d}; +//# sourceMappingURL=swiper-core.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/swiper-core.min.mjs.map b/build/assets/js/vendor/swiper/shared/swiper-core.min.mjs.map new file mode 100644 index 0000000..7a44a6f --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/swiper-core.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-core.mjs.mjs","names":["getWindow","getDocument","elementParents","elementStyle","elementChildren","setCSSProperty","elementOuterSize","elementNextAll","elementPrevAll","getTranslate","animateCSSModeScroll","nextTick","showWarning","createElement","now","extend","elementIndex","deleteProps","support","deviceCached","browser","calcSupport","window","document","smoothScroll","documentElement","style","touch","DocumentTouch","getSupport","calcDevice","_temp","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","indexOf","os","getDevice","overrides","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","split","map","num","Number","isWebView","test","getBrowser","Resize","_ref","swiper","on","emit","observer","animationFrame","resizeHandler","destroyed","initialized","orientationChangeHandler","params","resizeObserver","ResizeObserver","entries","requestAnimationFrame","newWidth","newHeight","forEach","_ref2","contentBoxSize","contentRect","target","el","inlineSize","blockSize","observe","addEventListener","cancelAnimationFrame","unobserve","removeEventListener","Observer","extendParams","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","length","observerUpdate","setTimeout","attributes","childList","characterData","push","observeParents","observeSlideChildren","containerParents","hostEl","i","wrapperEl","disconnect","splice","eventsEmitter","events","handler","priority","self","this","eventsListeners","method","event","once","onceHandler","off","__emitterProxy","_len","arguments","args","Array","_key","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","_len2","_key2","isArray","slice","unshift","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","Object","assign","size","updateSlides","getDirectionPropertyValue","node","label","parseFloat","getPropertyValue","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","call","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","replace","virtualSize","slideEl","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slidesPerView","breakpoints","keys","filter","key","slide","updateSlide","slideStyles","getComputedStyle","currentTransform","transform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","offsetWidth","Math","floor","swiperSlideSize","abs","slidesPerGroup","min","slidesPerGroupSkip","max","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","loop","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","classList","contains","maxBackfaceHiddenSlides","add","remove","updateAutoHeight","speed","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","isElement","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","progress","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","selector","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","column","emitSlidesClasses","processLazyPreloader","imageEl","closest","lazyEl","querySelector","lazyPreloaderClass","shadowRoot","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","len","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","matches","slideFound","clickedSlide","undefined","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","axis","virtualTranslate","currentTranslate","setTranslate","byController","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","targetPosition","side","scrollTo","behavior","onTranslateToWrapperTransitionEnd","e","duration","transitionDuration","transitionDelay","transitionEmit","direction","step","dir","transitionStart","transitionEnd","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","scrollSnapType","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","setAttribute","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","c","constructor","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","host","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","pointerType","targetEl","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","nodeName","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","PI","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","CustomEvent","bubbles","dispatchEvent","allowMomentumBounce","Date","getTime","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","clearTimeout","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","prop","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","a","b","matchMedia","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","autoheight","centered","removeClasses","classes","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","init","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","obj","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","prototype","toString","querySelectorAll","swipers","newParams","__swiper__","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","current","cls","className","join","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","element","mounted","parentNode","getWrapperSelector","trim","getWrapper","slideSlots","lazyElements","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/swiper-core.mjs b/build/assets/js/vendor/swiper/shared/swiper-core.mjs new file mode 100644 index 0000000..8bf1e07 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/swiper-core.mjs @@ -0,0 +1,3880 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; +import { a as elementParents, m as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, o as elementNextAll, p as elementPrevAll, i as getTranslate, q as animateCSSModeScroll, n as nextTick, r as showWarning, c as createElement, d as now, t as extend, g as elementIndex, u as deleteProps } from './utils.mjs'; + +let support; +function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; +} +function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; +} + +let deviceCached; +function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; +} +function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; +} + +let browser; +function calcBrowser() { + const window = getWindow(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + return { + isSafari: needPerspectiveFix || isSafari(), + needPerspectiveFix, + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; +} +function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; +} + +function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); +} + +function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); +} + +/* eslint-disable no-underscore-dangle */ + +var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } +}; + +function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); +} + +function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } +} + +function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; +} + +function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } +} + +function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } +} + +function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); +} + +function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); +} + +const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } +}; +const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); +}; +const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } +}; + +function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; +} +function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } +} + +function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide +}; + +function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; +} + +function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate() { + return -this.snapGrid[0]; +} + +function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; +} + +function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; +} + +var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo +}; + +function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); +} + +function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } +} + +function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); +} + +function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); +} + +var transition = { + setTransition, + transitionStart, + transitionEnd +}; + +function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; +} + +function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; +} + +/* eslint no-unused-vars: "off" */ +function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide +}; + +function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); +} + +function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + slidesPrepended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); +} + +function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy +}; + +function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor +}; + +// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd +function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); +} +function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; +} +function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); +} + +function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); +} + +function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); +} + +function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } +} + +const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); +}; +function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); +} +function detachEvents() { + const swiper = this; + events(swiper, 'off'); +} +var events$1 = { + attachEvents, + detachEvents +}; + +const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; +}; +function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); +} + +function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} + +var breakpoints = { + setBreakpoint, + getBreakpoint +}; + +function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; +} +function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); +} + +function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); +} + +var classes = { + addClasses, + removeClasses +}; + +function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } +} +var checkOverflow$1 = { + checkOverflow +}; + +var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false +}; + +function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; +} + +/* eslint no-param-reassign: "off" */ +const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes +}; +const extendedDefaults = {}; +class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } +} +Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); +}); +Swiper.use([Resize, Observer]); + +export { Swiper as S, defaults as d }; diff --git a/build/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs b/build/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs new file mode 100644 index 0000000..54c8e04 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,p as paramsList,i as isObject,n as needsNavigation,a as needsPagination,b as needsScrollbar}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";function getParams(a,e){void 0===a&&(a={}),void 0===e&&(e=!0);const s={on:{}},n={},t={};extend(s,defaults),s._emitClasses=!0,s.init=!1;const r={},i=paramsList.map((a=>a.replace(/_/,""))),l=Object.assign({},a);return Object.keys(l).forEach((l=>{void 0!==a[l]&&(i.indexOf(l)>=0?isObject(a[l])?(s[l]={},t[l]={},extend(s[l],a[l]),extend(t[l],a[l])):(s[l]=a[l],t[l]=a[l]):0===l.search(/on[A-Z]/)&&"function"==typeof a[l]?e?n[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:s.on[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:r[l]=a[l])})),["navigation","pagination","scrollbar"].forEach((a=>{!0===s[a]&&(s[a]={}),!1===s[a]&&delete s[a]})),{params:s,passedParams:t,rest:r,events:n}}function mountSwiper(a,e){let{el:s,nextEl:n,prevEl:t,paginationEl:r,scrollbarEl:i,swiper:l}=a;needsNavigation(e)&&n&&t&&(l.params.navigation.nextEl=n,l.originalParams.navigation.nextEl=n,l.params.navigation.prevEl=t,l.originalParams.navigation.prevEl=t),needsPagination(e)&&r&&(l.params.pagination.el=r,l.originalParams.pagination.el=r),needsScrollbar(e)&&i&&(l.params.scrollbar.el=i,l.originalParams.scrollbar.el=i),l.init(s)}function getChangedParams(a,e,s,n,t){const r=[];if(!e)return r;const i=a=>{r.indexOf(a)<0&&r.push(a)};if(s&&n){const a=n.map(t),e=s.map(t);a.join("")!==e.join("")&&i("children"),n.length!==s.length&&i("children")}return paramsList.filter((a=>"_"===a[0])).map((a=>a.replace(/_/,""))).forEach((s=>{if(s in a&&s in e)if(isObject(a[s])&&isObject(e[s])){const n=Object.keys(a[s]),t=Object.keys(e[s]);n.length!==t.length?i(s):(n.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})),t.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})))}else a[s]!==e[s]&&i(s)})),r}const updateOnVirtualData=a=>{!a||a.destroyed||!a.params.virtual||a.params.virtual&&!a.params.virtual.enabled||(a.updateSlides(),a.updateProgress(),a.updateSlidesClasses(),a.parallax&&a.params.parallax&&a.params.parallax.enabled&&a.parallax.setTranslate())};export{getChangedParams as a,getParams as g,mountSwiper as m,updateOnVirtualData as u}; +//# sourceMappingURL=update-on-virtual-data.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs.map b/build/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs.map new file mode 100644 index 0000000..88b07d2 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-on-virtual-data.mjs.mjs","names":["extend","paramsList","isObject","needsNavigation","needsPagination","needsScrollbar","defaults","getParams","obj","splitEvents","params","on","events","passedParams","_emitClasses","init","rest","allowedParams","map","key","replace","plainObj","Object","assign","keys","forEach","indexOf","search","toLowerCase","substr","mountSwiper","_ref","swiperParams","el","nextEl","prevEl","paginationEl","scrollbarEl","swiper","navigation","originalParams","pagination","scrollbar","getChangedParams","oldParams","children","oldChildren","getKey","addKey","push","oldChildrenKeys","childrenKeys","join","length","filter","newKeys","oldKeys","newKey","oldKey","updateOnVirtualData","destroyed","virtual","enabled","updateSlides","updateProgress","updateSlidesClasses","parallax","setTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/update-on-virtual-data.mjs b/build/assets/js/vendor/swiper/shared/update-on-virtual-data.mjs new file mode 100644 index 0000000..0fc3050 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/update-on-virtual-data.mjs @@ -0,0 +1,130 @@ +import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +function getParams(obj, splitEvents) { + if (obj === void 0) { + obj = {}; + } + if (splitEvents === void 0) { + splitEvents = true; + } + const params = { + on: {} + }; + const events = {}; + const passedParams = {}; + extend(params, defaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map(key => key.replace(/_/, '')); + const plainObj = Object.assign({}, obj); + Object.keys(plainObj).forEach(key => { + if (typeof obj[key] === 'undefined') return; + if (allowedParams.indexOf(key) >= 0) { + if (isObject(obj[key])) { + params[key] = {}; + passedParams[key] = {}; + extend(params[key], obj[key]); + extend(passedParams[key], obj[key]); + } else { + params[key] = obj[key]; + passedParams[key] = obj[key]; + } + } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + if (splitEvents) { + events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } else { + params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } + } else { + rest[key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach(key => { + if (params[key] === true) params[key] = {}; + if (params[key] === false) delete params[key]; + }); + return { + params, + passedParams, + rest, + events + }; +} + +function mountSwiper(_ref, swiperParams) { + let { + el, + nextEl, + prevEl, + paginationEl, + scrollbarEl, + swiper + } = _ref; + if (needsNavigation(swiperParams) && nextEl && prevEl) { + swiper.params.navigation.nextEl = nextEl; + swiper.originalParams.navigation.nextEl = nextEl; + swiper.params.navigation.prevEl = prevEl; + swiper.originalParams.navigation.prevEl = prevEl; + } + if (needsPagination(swiperParams) && paginationEl) { + swiper.params.pagination.el = paginationEl; + swiper.originalParams.pagination.el = paginationEl; + } + if (needsScrollbar(swiperParams) && scrollbarEl) { + swiper.params.scrollbar.el = scrollbarEl; + swiper.originalParams.scrollbar.el = scrollbarEl; + } + swiper.init(el); +} + +function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) { + const keys = []; + if (!oldParams) return keys; + const addKey = key => { + if (keys.indexOf(key) < 0) keys.push(key); + }; + if (children && oldChildren) { + const oldChildrenKeys = oldChildren.map(getKey); + const childrenKeys = children.map(getKey); + if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children'); + if (oldChildren.length !== children.length) addKey('children'); + } + const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, '')); + watchParams.forEach(key => { + if (key in swiperParams && key in oldParams) { + if (isObject(swiperParams[key]) && isObject(oldParams[key])) { + const newKeys = Object.keys(swiperParams[key]); + const oldKeys = Object.keys(oldParams[key]); + if (newKeys.length !== oldKeys.length) { + addKey(key); + } else { + newKeys.forEach(newKey => { + if (swiperParams[key][newKey] !== oldParams[key][newKey]) { + addKey(key); + } + }); + oldKeys.forEach(oldKey => { + if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key); + }); + } + } else if (swiperParams[key] !== oldParams[key]) { + addKey(key); + } + } + }); + return keys; +} + +const updateOnVirtualData = swiper => { + if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { + swiper.parallax.setTranslate(); + } +}; + +export { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u }; diff --git a/build/assets/js/vendor/swiper/shared/update-swiper.min.mjs b/build/assets/js/vendor/swiper/shared/update-swiper.min.mjs new file mode 100644 index 0000000..b61cade --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/update-swiper.min.mjs @@ -0,0 +1,2 @@ +const paramsList=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function extend(e,t){const i=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>i.indexOf(e)<0)).forEach((i=>{void 0===e[i]?e[i]=t[i]:isObject(t[i])&&isObject(e[i])&&Object.keys(t[i]).length>0?t[i].__swiper__?e[i]=t[i]:extend(e[i],t[i]):e[i]=t[i]}))}function needsNavigation(e){return void 0===e&&(e={}),e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}function needsPagination(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}function needsScrollbar(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}function uniqueClasses(e){void 0===e&&(e="");const t=e.split(" ").map((e=>e.trim())).filter((e=>!!e)),i=[];return t.forEach((e=>{i.indexOf(e)<0&&i.push(e)})),i.join(" ")}function attrToProp(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}function wrapperClass(e){return void 0===e&&(e=""),e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}function updateSwiper(e){let{swiper:t,slides:i,passedParams:l,changedParams:n,nextEl:o,prevEl:r,scrollbarEl:a,paginationEl:s}=e;const d=n.filter((e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:v,virtual:g,thumbs:b}=t;let f,_,w,h,S,E,m,C;n.includes("thumbs")&&l.thumbs&&l.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(f=!0),n.includes("controller")&&l.controller&&l.controller.control&&c.controller&&!c.controller.control&&(_=!0),n.includes("pagination")&&l.pagination&&(l.pagination.el||s)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),n.includes("scrollbar")&&l.scrollbar&&(l.scrollbar.el||a)&&(c.scrollbar||!1===c.scrollbar)&&v&&!v.el&&(h=!0),n.includes("navigation")&&l.navigation&&(l.navigation.prevEl||r)&&(l.navigation.nextEl||o)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const x=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};if(n.includes("loop")&&t.isElement&&(c.loop&&!l.loop?E=!0:!c.loop&&l.loop?m=!0:C=!0),d.forEach((e=>{if(isObject(c[e])&&isObject(l[e]))Object.assign(c[e],l[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in l[e])||l[e].enabled||x(e);else{const t=l[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=l[e]:!1===t&&x(e)}})),d.includes("controller")&&!_&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),n.includes("children")&&i&&g&&c.virtual.enabled?(g.slides=i,g.update(!0)):n.includes("virtual")&&g&&c.virtual.enabled&&(i&&(g.slides=i),g.update(!0)),n.includes("children")&&i&&c.loop&&(C=!0),f){b.init()&&b.update(!0)}_&&(t.controller.control=c.controller.control),w&&(!t.isElement||s&&"string"!=typeof s||(s=document.createElement("div"),s.classList.add("swiper-pagination"),s.part.add("pagination"),t.el.appendChild(s)),s&&(c.pagination.el=s),p.init(),p.render(),p.update()),h&&(!t.isElement||a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-scrollbar"),a.part.add("scrollbar"),t.el.appendChild(a)),a&&(c.scrollbar.el=a),v.init(),v.updateSize(),v.setTranslate()),S&&(t.isElement&&(o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-button-next"),o.innerHTML=t.hostEl.constructor.nextButtonSvg,o.part.add("button-next"),t.el.appendChild(o)),r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-prev"),r.innerHTML=t.hostEl.constructor.prevButtonSvg,r.part.add("button-prev"),t.el.appendChild(r))),o&&(c.navigation.nextEl=o),r&&(c.navigation.prevEl=r),u.init(),u.update()),n.includes("allowSlideNext")&&(t.allowSlideNext=l.allowSlideNext),n.includes("allowSlidePrev")&&(t.allowSlidePrev=l.allowSlidePrev),n.includes("direction")&&t.changeDirection(l.direction,!1),(E||C)&&t.loopDestroy(),(m||C)&&t.loopCreate(),t.update()}export{needsPagination as a,needsScrollbar as b,attrToProp as c,uniqueClasses as d,extend as e,isObject as i,needsNavigation as n,paramsList as p,updateSwiper as u,wrapperClass as w}; +//# sourceMappingURL=update-swiper.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/update-swiper.min.mjs.map b/build/assets/js/vendor/swiper/shared/update-swiper.min.mjs.map new file mode 100644 index 0000000..f2edef9 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/update-swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-swiper.mjs.mjs","names":["paramsList","isObject","o","constructor","Object","prototype","toString","call","slice","__swiper__","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","needsNavigation","params","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classNames","classes","split","map","c","trim","unique","push","join","attrToProp","attrName","replace","l","toUpperCase","wrapperClass","className","includes","updateSwiper","_ref","swiper","slides","passedParams","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","virtual","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","controller","control","destroyModule","mod","destroy","isElement","remove","undefined","loop","assign","enabled","newValue","update","init","document","createElement","classList","add","part","appendChild","render","updateSize","setTranslate","innerHTML","hostEl","nextButtonSvg","prevButtonSvg","allowSlideNext","allowSlidePrev","changeDirection","direction","loopDestroy","loopCreate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/update-swiper.mjs b/build/assets/js/vendor/swiper/shared/update-swiper.mjs new file mode 100644 index 0000000..da63c81 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/update-swiper.mjs @@ -0,0 +1,236 @@ +/* underscore in name -> watch for changes */ +const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', +// modules +'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; +} +function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); +} +function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; +} +function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; +} +function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; +} +function uniqueClasses(classNames) { + if (classNames === void 0) { + classNames = ''; + } + const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c); + const unique = []; + classes.forEach(c => { + if (unique.indexOf(c) < 0) unique.push(c); + }); + return unique.join(' '); +} +function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); +} +function wrapperClass(className) { + if (className === void 0) { + className = ''; + } + if (!className) return 'swiper-wrapper'; + if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`; + return className; +} + +function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); +} + +export { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w }; diff --git a/build/assets/js/vendor/swiper/shared/utils.min.mjs b/build/assets/js/vendor/swiper/shared/utils.min.mjs new file mode 100644 index 0000000..83dd858 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/utils.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";function classesToTokens(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function deleteProps(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}function nextTick(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function now(){return Date.now()}function getComputedStyle(e){const t=getWindow();let n;return t.getComputedStyle&&(n=t.getComputedStyle(e,null)),!n&&e.currentStyle&&(n=e.currentStyle),n||(n=e.style),n}function getTranslate(e,t){void 0===t&&(t="x");const n=getWindow();let r,o,l;const s=getComputedStyle(e);return n.WebKitCSSMatrix?(o=s.transform||s.webkitTransform,o.split(",").length>6&&(o=o.split(", ").map((e=>e.replace(",","."))).join(", ")),l=new n.WebKitCSSMatrix("none"===o?"":o)):(l=s.MozTransform||s.OTransform||s.MsTransform||s.msTransform||s.transform||s.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),r=l.toString().split(",")),"x"===t&&(o=n.WebKitCSSMatrix?l.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(o=n.WebKitCSSMatrix?l.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),o||0}function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function isNode(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function extend(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let n=1;nt.indexOf(e)<0));for(let t=0,o=n.length;tl?"next":"prev",m=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{s=(new Date).getTime(),null===i&&(i=s);const e=Math.max(Math.min((s-i)/a,1),0),c=.5-Math.cos(e*Math.PI)/2;let p=l+c*(n-l);if(m(p,n)&&(p=n),t.wrapperEl.scrollTo({[r]:p}),m(p,n))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[r]:p})})),void o.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=o.requestAnimationFrame(u)};u()}function getSlideTransformEl(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function elementChildren(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function showWarning(e){try{return void console.warn(e)}catch(e){}}function createElement(e,t){void 0===t&&(t=[]);const n=document.createElement(e);return n.classList.add(...Array.isArray(t)?t:classesToTokens(t)),n}function elementOffset(e){const t=getWindow(),n=getDocument(),r=e.getBoundingClientRect(),o=n.body,l=e.clientTop||o.clientTop||0,s=e.clientLeft||o.clientLeft||0,i=e===t?t.scrollY:e.scrollTop,a=e===t?t.scrollX:e.scrollLeft;return{top:r.top+i-l,left:r.left+a-s}}function elementPrevAll(e,t){const n=[];for(;e.previousElementSibling;){const r=e.previousElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementNextAll(e,t){const n=[];for(;e.nextElementSibling;){const r=e.nextElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementStyle(e,t){return getWindow().getComputedStyle(e,null).getPropertyValue(t)}function elementIndex(e){let t,n=e;if(n){for(t=0;null!==(n=n.previousSibling);)1===n.nodeType&&(t+=1);return t}}function elementParents(e,t){const n=[];let r=e.parentElement;for(;r;)t?r.matches(t)&&n.push(r):n.push(r),r=r.parentElement;return n}function elementTransitionEnd(e,t){t&&e.addEventListener("transitionend",(function n(r){r.target===e&&(t.call(e,r),e.removeEventListener("transitionend",n))}))}function elementOuterSize(e,t,n){const r=getWindow();return n?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}export{elementParents as a,elementOffset as b,createElement as c,now as d,elementChildren as e,elementOuterSize as f,elementIndex as g,classesToTokens as h,getTranslate as i,elementTransitionEnd as j,isObject as k,getSlideTransformEl as l,elementStyle as m,nextTick as n,elementNextAll as o,elementPrevAll as p,animateCSSModeScroll as q,showWarning as r,setCSSProperty as s,extend as t,deleteProps as u}; +//# sourceMappingURL=utils.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/utils.min.mjs.map b/build/assets/js/vendor/swiper/shared/utils.min.mjs.map new file mode 100644 index 0000000..f6717ed --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.mjs.mjs","names":["getWindow","getDocument","classesToTokens","classes","trim","split","filter","c","deleteProps","obj","object","Object","keys","forEach","key","e","nextTick","callback","delay","setTimeout","now","Date","getComputedStyle","el","window","style","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","transform","webkitTransform","length","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","parseFloat","m42","isObject","o","constructor","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend","to","arguments","undefined","noExtend","i","nextSource","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","current","target","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSlideTransformEl","slideEl","querySelector","shadowRoot","elementChildren","element","selector","children","matches","showWarning","text","console","warn","err","createElement","tag","document","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","push","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","addEventListener","fireCallBack","removeEventListener","elementOuterSize","size","includeMargins","offsetWidth"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/shared/utils.mjs b/build/assets/js/vendor/swiper/shared/utils.mjs new file mode 100644 index 0000000..0689d83 --- /dev/null +++ b/build/assets/js/vendor/swiper/shared/utils.mjs @@ -0,0 +1,289 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; + +function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); +} + +function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); +} +function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); +} +function now() { + return Date.now(); +} +function getComputedStyle(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; +} +function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; +} +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; +} +function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); +} +function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; +} +function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); +} +function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); +} +function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; +} +function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); +} +function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } +} +function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; +} +function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; +} +function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; +} +function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; +} +function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); +} +function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; +} +function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; +} +function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } +} +function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; +} + +export { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, classesToTokens as h, getTranslate as i, elementTransitionEnd as j, isObject as k, getSlideTransformEl as l, elementStyle as m, nextTick as n, elementNextAll as o, elementPrevAll as p, animateCSSModeScroll as q, showWarning as r, setCSSProperty as s, extend as t, deleteProps as u }; diff --git a/build/assets/js/vendor/swiper/swiper-bundle.css b/build/assets/js/vendor/swiper/swiper-bundle.css new file mode 100644 index 0000000..cd5a440 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-bundle.css @@ -0,0 +1,735 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/build/assets/js/vendor/swiper/swiper-bundle.js b/build/assets/js/vendor/swiper/swiper-bundle.js new file mode 100644 index 0000000..e0763d5 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-bundle.js @@ -0,0 +1,9538 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + return { + isSafari: needPerspectiveFix || isSafari(), + needPerspectiveFix, + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + slidesPrepended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop + } = swiper.params; + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !gesture.slideEl) return; + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth; + image.height = gesture.imageEl.offsetHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth; + imageHeight = gesture.imageEl.offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElement = document.querySelector(swiper.params.controller.control); + if (controlElement && controlElement.swiper) { + swiper.controller.control = controlElement.swiper; + } else if (controlElement) { + const onControllerSwiper = e => { + swiper.controller.control = e.detail[0]; + swiper.update(); + controlElement.removeEventListener('init', onControllerSwiper); + }; + controlElement.addEventListener('init', onControllerSwiper); + } + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = () => { + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const handleFocus = e => { + if (swiper.a11y.clicked) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener('init', onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener('init', onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + if (swiper.browser && swiper.browser.isSafari && Math.abs(wrapperRotate) / 90 % 2 === 1) { + wrapperRotate += 0.001; + } + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + if (swiper.browser && swiper.browser.isSafari && Math.abs(val) / 90 % 2 === 1) { + val += 0.001; + } + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + return Swiper; + +})(); diff --git a/build/assets/js/vendor/swiper/swiper-bundle.min.css b/build/assets/js/vendor/swiper/swiper-bundle.min.css new file mode 100644 index 0000000..519ed77 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-bundle.min.js b/build/assets/js/vendor/swiper/swiper-bundle.min.js new file mode 100644 index 0000000..436b921 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function c(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function p(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let a=1;at.indexOf(e)<0));for(let t=0,a=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function E(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function x(e,t){t&&e.addEventListener("transitionend",(function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let T,M,C;function P(){return T||(T=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),T}function L(e){return void 0===e&&(e={}),M||(M=function(e){let{userAgent:t}=void 0===e?{}:e;const s=P(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),M}function A(){return C||(C=function(){const e=r();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,a]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&a<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),C}var I={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};const z=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},$=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},k=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=i,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+a+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&$(e,s)}))}const r=i+a-1;if(e.params.rewind||e.params.loop)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;(tr)&&$(e,t)}else for(let a=Math.max(i-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&(a>r||a=0?x=parseFloat(x.replace("%",""))/100*r:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(a,"--swiper-centered-offset-before",""),u(a,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const A="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let a=0;a1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const a=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),i=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(x||0)})),e-=x,e{m[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(a,"--swiper-centered-offset-before",-m[0]+"px"),u(a,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==E&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,a=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?a||e.el.classList.add(t):a&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&m<=t.size||u<=0&&m>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),a[e].classList.add(s.slideVisibleClass)),h&&a[e].classList.add(s.slideFullyVisibleClass),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${i}"]`);else n?(o=t.filter((e=>e.column===i))[0],c=t.filter((e=>e.column===i+1))[0],d=t.filter((e=>e.column===i-1))[0]):o=t[i];o&&(o.classList.add(s.slideActiveClass),n?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e=t[e]&&a=t[e]&&a=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&i.grid&&i.grid.rows>1;let u;if(t.virtual&&i.virtual.enabled&&i.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/i.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&k(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,a=s.params;let i=e.closest(`.${a.slideClass}, swiper-slide`);!i&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!i&&e.matches&&e.matches(`.${a.slideClass}, swiper-slide`)&&(i=e)}));let r,n=!1;if(i)for(let e=0;eo?o:a&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const i=this,r=i.grid&&i.params.grid&&i.params.grid.rows>1;let n=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)n+=i.virtual.slidesBefore;else{let e;if(r){const t=n*i.params.grid.rows;e=i.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=i.getSlideIndexByData(n);const t=r?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:s}=i.params;let a=i.params.slidesPerView;"auto"===a?a=i.slidesPerViewDynamic():(a=Math.ceil(parseFloat(i.params.slidesPerView,10)),s&&a%2==0&&(a+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=i.getSlideIndexByData(n)}return requestAnimationFrame((()=>{i.slideTo(n,t,s,a)})),i},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{enabled:i,params:r,animating:n}=a;if(!i)return a;let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex{a.slideTo(a.activeIndex+o,e,t,s)})),!0}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o)return a;const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map((e=>p(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&i.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(f=f-a.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return i.loop&&0===a.activeIndex&&i.cssMode?(requestAnimationFrame((()=>{a.slideTo(f,e,t,s)})),!0):a.slideTo(f,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var H={loopCreate:function(e){const t=this,{params:s,slidesEl:a}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const i=()=>{f(a,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let a=0;a1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):x=r;const S="next"===a||!a,T="prev"===a||!a;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===i?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&E.push(s)})):E.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&E.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||E.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x+M,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(i){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(E.length>0&&S)if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x-C,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?E.length/m.grid.rows:E.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:a,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),a.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function N(e,t,s){const a=r(),{params:i}=e,n=i.edgeSwipeDetection,l=i.edgeSwipeThreshold;return!n||!(s<=l||s>=a.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function Y(e){const t=this,s=a();let i=e;i.originalEvent&&(i=i.originalEvent);const n=t.touchEventsData;if("pointerdown"===i.type){if(null!==n.pointerId&&n.pointerId!==i.pointerId)return;n.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(n.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void N(t,i,i.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=i.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(p))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=i.composedPath?i.composedPath():i.path;u&&i.target&&i.target.shadowRoot&&m&&(p=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!i.target||!i.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=i.pageX,d.currentY=i.pageY;const g=d.currentX,v=d.currentY;if(!N(t,i,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;p.matches(n.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||i.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function B(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==i.touchId)return;if(p.pointerId!==i.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===i.touchId))[0],!c||c.identifier!==i.touchId)return}else c=p;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,m=c.pageY;if(p.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return p.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),i.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",p),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",p),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&p.cancelable&&p.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&p.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",p),i.isMoved=!0,i.currentTranslate=g+i.startTranslate;let E=!0,x=r.resistanceRatio;if(r.touchReleaseOnEdges&&(x=0),g>0?(b&&y&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(E=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+g)**x))):g<0&&(b&&y&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function R(e){const t=this,s=t.touchEventsData;let a,i=e;i.originalEvent&&(i=i.originalEvent);if("touchend"===i.type||"touchcancel"===i.type){if(a=[...i.changedTouches].filter((e=>e.identifier===s.touchId))[0],!a||a.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(i.pointerId!==s.pointerId)return;a=i}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(i.type)){if(!(["pointercancel","contextmenu"].includes(i.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!r.simulateTouch&&"mouse"===i.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",i),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=i.path||i.composedPath&&i.composedPath();t.updateClickedSlide(e&&e[0]||i.target,e),t.emit("tap click",i),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",i)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-c[g])/v,E=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+E):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+E):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(i.target===t.navigation.nextEl||i.target===t.navigation.prevEl)?i.target===t.navigation.nextEl?t.slideTo(g+E):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+E),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function q(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function V(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function _(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function F(e){const t=this;z(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function j(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const W=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",q,!0):e[c]("observerUpdate",q,!0),r[d]("load",e.onLoad,{capture:!0})};const U=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var K={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Z(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(!0===e[a]&&(e[a]={enabled:!0}),"navigation"===a&&e[a]&&e[a].enabled&&!e[a].prevEl&&!e[a].nextEl&&(e[a].auto=!0),["pagination","scrollbar"].indexOf(a)>=0&&e[a]&&e[a].enabled&&!e[a].el&&(e[a].auto=!0),a in e&&"enabled"in i?("object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),p(t,s)):p(t,s)):p(t,s)}}const Q={eventsEmitter:I,update:O,translate:D,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),G({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),G({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:X,loop:H,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=Y.bind(e),e.onTouchMove=B.bind(e),e.onTouchEnd=R.bind(e),e.onDocumentTouchStart=j.bind(e),t.cssMode&&(e.onScroll=_.bind(e)),e.onClick=V.bind(e),e.onLoad=F.bind(e),W(e,"on")},detachEvents:function(){W(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:i}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=U(e,a),d=U(e,l),c=a.enabled;o&&!d?(i.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(i.classList.add(`${a.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===a.grid.fill)&&i.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=a[t]&&a[t].enabled,i=l[t]&&l[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()}));const u=l.direction&&l.direction!==a.direction,m=a.loop&&(l.slidesPerView!==a.slidesPerView||u),h=a.loop;u&&s&&e.changeDirection(),p(e.params,l);const f=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),c&&!f?e.disable():!c&&f&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&g?(e.loopCreate(t),e.updateSlides()):h&&!g&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},J={};class ee{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const a=p({},t,{el:s});e.push(new ee(a))})),e}const l=this;l.__swiper__=!0,l.support=P(),l.device=L({userAgent:t.userAgent}),l.browser=A(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:Z(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=p({},K,o);return l.params=p({},d,J,t),l.originalParams=p({},l.params),l.passedParams=p({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=a[l]?a[l].swiperSlideSize:0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]{t.complete&&z(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)a(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||a()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(a())}return f(s,a())[0]})();return!i&&t.params.createElements&&(i=v("div",t.params.wrapperClass),s.append(i),f(s,`.${t.params.slideClass}`).forEach((e=>{i.append(e)}))),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:i,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?z(t,e):e.addEventListener("load",(e=>{z(t,e.target)}))})),k(t),t.initialized=!0,k(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,el:i,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttribute("style"),r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(a.slideVisibleClass,a.slideFullyVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){p(J,e)}static get extendedDefaults(){return J}static get defaults(){return K}static installModule(e){ee.prototype.__modules__||(ee.prototype.__modules__=[]);const t=ee.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ee.installModule(e))),ee):(ee.installModule(e),ee)}}function te(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach((i=>{if(!s[i]&&!0===s.auto){let r=f(e.el,`.${a[i]}`)[0];r||(r=v("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}})),s}function se(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function ae(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.append(t.children[0]),t.innerHTML=""}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.prepend(t.children[0]),t.innerHTML=""}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function de(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function ce(e){let{swiper:t,duration:s,transformElements:a,allSlides:i}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a:a.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{x(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function pe(e,t,s){const a=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,i=h(t);let r=i.querySelector(`.${a.split(" ").join(".")}`);return r||(r=v("div",a.split(" ")),i.append(r)),r}Object.keys(Q).forEach((e=>{Object.keys(Q[e]).forEach((t=>{ee.prototype[t]=Q[e][t]}))})),ee.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const a=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void i("observerUpdate",e[0]);const s=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));a.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(a)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=E(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ue=[function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=a();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];let i;return a.renderSlide?(i=a.renderSlide.call(s,e,t),"string"==typeof i&&(o.innerHTML=i,i=o.children[0])):i=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),i.setAttribute("data-swiper-slide-index",t),a.renderSlide||(i.innerHTML=e),a.cache&&(s.virtual.cache[t]=i),i}function c(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i,loop:r}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:c,to:p,slides:u,slidesGrid:m,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const g=s.activeIndex||0;let v,w,b;v=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(w=Math.floor(t/2)+a+o,b=Math.floor(t/2)+a+l):(w=t+(a-1)+o,b=(r?t:a)+l);let y=g-b,E=g+w;r||(y=Math.max(y,0),E=Math.min(E,u.length-1));let x=(s.slidesGrid[y]||0)-(s.slidesGrid[0]||0);function S(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(r&&g>=b?(y-=b,i||(x+=s.slidesGrid[0])):r&&g{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:y,to:E,slides:function(){const e=[];for(let t=y;t<=E;t+=1)e.push(u[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?S():n("virtualUpdate"));const T=[],M=[],C=e=>{let t=e;return e<0?t=u.length+e:t>=u.length&&(t-=u.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=c;e<=p;e+=1)if(eE){const t=C(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const P=r?-u.length:0,L=r?2*u.length:u.length;for(let t=P;t=y&&t<=E){const s=C(t);void 0===p||e?M.push(s):(t>p&&M.push(s),t{s.slidesEl.append(d(u[e],e))})),r)for(let e=T.length-1;e>=0;e-=1){const t=T[e];s.slidesEl.prepend(d(u[t],t))}else T.sort(((e,t)=>t-e)),T.forEach((e=>{s.slidesEl.prepend(d(u[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),S()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,c()})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}c(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[a]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[a],1),e[a]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===E(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,i=a.clientWidth,r=a.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(a);s&&(d.left-=a.scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",i)}}function c(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function p(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&c()})),i("destroy",(()=>{t.keyboard.enabled&&p()})),Object.assign(t.keyboard,{enable:c,disable:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let c,p=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-p<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),p=(new n.Date).getTime(),!1)))}function g(e){let s=e,a=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const p=n&&n.contains(s.target);if(!t.mouseEntered&&!p&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},a=c&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!p&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,a=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;c=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{c=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const a=u.length?u[u.length-1]:void 0;if(u.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),a("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null};const r=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function n(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.el.querySelectorAll(e).length&&(s=t.el.querySelector(e))),e&&!s?e:s)}function l(e,s){const a=t.params.navigation;(e=r(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](a.lockClass))}))}function o(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return l(s,!1),void l(e,!1);l(s,t.isBeginning&&!t.params.rewind),l(e,t.isEnd&&!t.params.rewind)}function d(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=te(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=n(e.nextEl),a=n(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:a}),s=r(s),a=r(a);const i=(s,a)=>{s&&s.addEventListener("click","next"===a?c:d),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>i(e,"next"))),a.forEach((e=>i(e,"prev")))}function u(){let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s);const a=(e,s)=>{e.removeEventListener("click","next"===s?c:d),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}a("init",(()=>{!1===t.params.navigation.enabled?m():(p(),o())})),a("toEdge fromEdge lock unlock",(()=>{o()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s),t.enabled?o():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),a("click",((e,s)=>{let{nextEl:a,prevEl:n}=t.navigation;a=r(a),n=r(n);const l=s.target;if(t.params.navigation.hideOnClick&&!n.includes(l)&&!a.includes(l)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===l||t.pagination.el.contains(l)))return;let e;a.length?e=a[0].classList.contains(t.params.navigation.hiddenClass):n.length&&(e=n[0].classList.contains(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),[...a,...n].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const m=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),u()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),p(),o()},disable:m,update:o,init:p,destroy:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;const o=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function d(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${a}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${a}-${s}-${s}`))}function p(e){const s=e.target.closest(se(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const a=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===a)return;t.slideToLoop(a)}else t.slideTo(a)}function u(){const e=t.rtl,s=t.params.pagination;if(d())return;let a,r,p=t.pagination.el;p=o(p);const u=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,m=t.params.loop?Math.ceil(u/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,a=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(a=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,a=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const i=t.pagination.bullets;let o,d,u;if(s.dynamicBullets&&(n=S(i[0],t.isHorizontal()?"width":"height",!0),p.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=a-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(a-l,0),d=o+(Math.min(i.length,s.dynamicMainBullets)-1),u=(d+o)/2),i.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),p.length>1)i.forEach((e=>{const i=y(e);i===a?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(i>=o&&i<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),i===o&&c(e,"prev"),i===d&&c(e,"next"))}));else{const e=i[a];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&i.forEach(((e,t)=>{e.setAttribute("part",t===a?"bullet-active":"bullet")})),s.dynamicBullets){const e=i[o],t=i[d];for(let e=o;e<=d;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));c(e,"prev"),c(t,"next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),r=(n*a-n)/2-u*n,l=e?"right":"left";i.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}p.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(se(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(a+1)})),e.querySelectorAll(se(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let i;i=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(a+1)/m;let n=1,l=1;"horizontal"===i?n=r:l=r,e.querySelectorAll(se(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,a+1,m),0===r&&i("paginationRender",e)):(0===r&&i("paginationRender",e),i("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=t.params.pagination;if(d())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let a=t.pagination.el;a=o(a);let r="";if("bullets"===e.type){let a=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],a.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(se(e.bulletClass)))})),"custom"!==e.type&&i("paginationRender",a[0])}function h(){t.params.pagination=te(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>E(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=o(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",p),t.enabled||s.classList.add(e.lockClass)})))}function f(){const e=t.params.pagination;if(d())return;let s=t.pagination.el;s&&(s=o(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",p))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}a("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=o(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.pagination.enabled?g():(h(),m(),u())})),a("activeIndexChange",(()=>{void 0===t.snapIndex&&u()})),a("snapIndexChange",(()=>{u()})),a("snapGridLengthChange",(()=>{m(),u()})),a("destroy",(()=>{f()})),a("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),a("lock unlock",(()=>{u()})),a("click",((e,s)=>{const a=s.target,r=o(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!a.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const g=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),f()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),h(),m(),u()},disable:g,render:m,update:u,init:h,destroy:f})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const o=a();let d,c,p,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:a,el:i}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=c,o=(p-c)*n;s?(o=-o,o>0?(l=c-o,o=0):-o+c>p&&(l=p+o)):o<0?(l=c+o,o=0):o+c>p&&(l=p-o),t.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(h),i.style.opacity=1,h=setTimeout((()=>{i.style.opacity=0,i.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:a}=e;s.style.width="",s.style.height="",p=t.isHorizontal()?a.offsetWidth:a.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),c="auto"===t.params.scrollbar.dragSize?p*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${c}px`:s.style.height=`${c}px`,a.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function E(e){const{scrollbar:s,rtlTranslate:a}=t,{el:i}=s;let r;r=(y(e)-w(i)[t.isHorizontal()?"left":"top"]-(null!==d?d:c/2))/(p-c),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n,dragEl:l}=a;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.style.transitionDuration="100ms",l.style.transitionDuration="100ms",E(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:a}=t,{el:i,dragEl:n}=s;m&&(e.preventDefault?e.preventDefault():e.returnValue=!1,E(e),a.style.transitionDuration="0ms",i.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function T(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n}=a;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",i.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function M(e){const{scrollbar:s,params:a}=t,i=s.el;if(!i)return;const r=i,n=!!a.passiveListeners&&{passive:!1,capture:!1},l=!!a.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",x,n),o[d]("pointermove",S,n),o[d]("pointerup",T,l)}function C(){const{scrollbar:e,el:s}=t;t.params.scrollbar=te(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i,r;if("string"==typeof a.el&&t.isElement&&(i=t.el.querySelector(a.el)),i||"string"!=typeof a.el)i||(i=a.el);else if(i=o.querySelectorAll(a.el),!i.length)return;t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(t.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(r=i.querySelector(se(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),i.append(r))),Object.assign(e,{el:i,dragEl:r}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&M("on"),i&&i.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function P(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&M("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},i("init",(()=>{!1===t.params.scrollbar.enabled?L():(C(),b(),g())})),i("update resize observerUpdate lock unlock",(()=>{b()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),i("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),i("destroy",(()=>{P()}));const L=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),P()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),C(),b(),g()},disable:L,updateSize:b,setTranslate:g,init:C,destroy:P})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:a}=t,i=a?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),c=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let p=`translate3d(${n}, ${l}, 0px)`;if(null!=o){p+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(c&&null!=c){p+=` rotate(${c*s*-1}deg)`}e.style.transform=p},n=()=>{const{el:e,slides:s,progress:a,snapGrid:n,isElement:l}=t,o=f(e,i);t.isElement&&o.push(...f(t.hostEl,i)),o.forEach((e=>{r(e,a)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-a*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&n()})),a("setTranslate",(()=>{t.params.parallax.enabled&&n()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:a}=t,r=[...s.querySelectorAll(i)];t.isElement&&r.push(...a.querySelectorAll(i)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c=1,p=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function b(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,a=u[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function y(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function x(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!y(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=b(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let a=m.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=a,m.imageWrapEl=a?E(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=m.imageWrapEl.getAttribute("data-swiper-zoom")||s.maxRatio}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/c,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/c]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}p=!0}}function S(e){if(!y(e))return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&(u[i]=e),u.length<2||(o=!0,m.scaleMove=b(),m.imageEl&&(a.scale=m.scaleMove/m.scaleStart*c,a.scale>m.maxRatio&&(a.scale=m.maxRatio-1+(a.scale-m.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));i>=0&&u.splice(i,1),l&&o&&(l=!1,o=!1,m.imageEl&&(a.scale=Math.max(Math.min(a.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,c=a.scale,p=!1,a.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function M(e){if(!y(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth,h.height=m.imageEl.offsetHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const a=h.width*s.scale,i=h.height*s.scale;if(a0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!p){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return void(h.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return void(h.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),h.isMoved=!0;const r=(s.scale-c)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function C(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,c=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function P(e){const s=t.zoom,a=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?E(m.imageEl,`.${a.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let i,r,l,o,d,p,u,g,v,b,y,x,S,T,M,C,P,L;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(i=e.pageX,r=e.pageY):(i=h.touchesStart.x,r=h.touchesStart.y);const A="number"==typeof e?e:null;1===c&&A&&(i=void 0,r=void 0),s.scale=A||m.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,c=A||m.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,!e||1===c&&A?(u=0,g=0):(P=m.slideEl.offsetWidth,L=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+P/2-i,p=o+L/2-r,v=m.imageEl.offsetWidth,b=m.imageEl.offsetHeight,y=v*s.scale,x=b*s.scale,S=Math.min(P/2-y/2,0),T=Math.min(L/2-x/2,0),M=-S,C=-T,u=d*s.scale,g=p*s.scale,uM&&(u=M),gC&&(g=C)),A&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function L(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?E(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,c=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function A(e){const s=t.zoom;s.scale&&1!==s.scale?L():P(e)}function I(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function z(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=I();t.wrapperEl.addEventListener("pointerdown",x,s),t.wrapperEl.addEventListener("pointermove",S,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,T,s)})),t.wrapperEl.addEventListener("pointermove",M,a)}function $(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=I();t.wrapperEl.removeEventListener("pointerdown",x,s),t.wrapperEl.removeEventListener("pointermove",S,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,T,s)})),t.wrapperEl.removeEventListener("pointermove",M,a)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.imageEl,s=m.slideEl;i("zoomChange",e,t,s)}v=e}}),a("init",(()=>{t.params.zoom.enabled&&z()})),a("destroy",(()=>{$()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const a=u.length>0?u[0]:e;h.touchesStart.x=a.pageX,h.touchesStart.y=a.pageY}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,a=300;const i=g.x*s,r=h.currentX+i,n=g.y*a,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,a);h.currentX=r,h.currentY=l;const d=h.width*e.scale,c=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-c/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&A(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:z,disable:$,in:P,out:L,toggle:A})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){const e=document.querySelector(t.params.controller.control);if(e&&e.swiper)t.controller.control=e.swiper;else if(e){const s=a=>{t.controller.control=a.detail[0],t.update(),e.removeEventListener("init",s)};e.addEventListener("init",s)}}else t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),x(s.wrapperEl,(()=>{i&&s.transitionEnd()}))))}if(Array.isArray(i))for(r=0;r(Array.isArray(e)?e:[e]).filter((e=>!!e));function l(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function o(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function d(e,t){(e=n(e)).forEach((e=>{e.setAttribute("role",t)}))}function c(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function p(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function u(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function m(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function h(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=e.target;t.pagination&&t.pagination.el&&(a===t.pagination.el||t.pagination.el.contains(e.target))&&!e.target.matches(se(t.params.pagination.bulletClass))||(t.navigation&&t.navigation.nextEl&&a===t.navigation.nextEl&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.prevEl&&a===t.navigation.prevEl&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&a.matches(se(t.params.pagination.bulletClass))&&a.click())}function f(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function g(){return f()&&t.params.pagination.clickable}const w=(e,t,s)=>{l(e),"BUTTON"!==e.tagName&&(d(e,"button"),e.addEventListener("keydown",h)),p(e,s),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},b=()=>{t.a11y.clicked=!0},E=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},x=e=>{if(t.a11y.clicked)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},S=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&d(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((a,i)=>{const r=t.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;p(a,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},T=()=>{const e=t.params.a11y;t.el.append(i);const s=t.el;e.containerRoleDescriptionMessage&&c(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const a=t.wrapperEl,r=e.id||a.getAttribute("id")||`swiper-wrapper-${l=16,void 0===l&&(l=16),"x".repeat(l).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var l;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,n(a).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(a,o),S();let{nextEl:u,prevEl:m}=t.navigation?t.navigation:{};if(u=n(u),m=n(m),u&&u.forEach((t=>w(t,r,e.nextSlideMessage))),m&&m.forEach((t=>w(t,r,e.prevSlideMessage))),g()){n(t.pagination.el).forEach((e=>{e.addEventListener("keydown",h)}))}t.el.addEventListener("focus",x,!0),t.el.addEventListener("pointerdown",b,!0),t.el.addEventListener("pointerup",E,!0)};a("beforeInit",(()=>{i=v("span",t.params.a11y.notificationClass),i.setAttribute("aria-live","assertive"),i.setAttribute("aria-atomic","true")})),a("afterInit",(()=>{t.params.a11y.enabled&&T()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&S()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(u(s),o(s)):(m(s),l(s))),e&&(t.isEnd?(u(e),o(e)):(m(e),l(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(l(s),t.params.pagination.renderBullet||(d(s,"button"),p(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(se(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){i&&i.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=n(e),s=n(s),e&&e.forEach((e=>e.removeEventListener("keydown",h))),s&&s.forEach((e=>e.removeEventListener("keydown",h))),g()&&n(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",h)}));t.el.removeEventListener("focus",x,!0),t.el.removeEventListener("pointerdown",b,!0),t.el.removeEventListener("pointerup",E,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),n.key||n.value?(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p)):t.params.history.replaceState||e.addEventListener("popstate",p)}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const c=()=>{i("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},p=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),i("hashSet")):(o.location.hash=s||"",i("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,a=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(a||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",c)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",c)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&p()})),n("slideChange",(()=>{l&&t.params.cssMode&&p()}))},function(e){let t,s,{swiper:i,extendParams:r,on:n,emit:l,params:o}=e;i.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){i&&!i.destroyed&&i.wrapperEl&&e.target===i.wrapperEl&&(i.wrapperEl.removeEventListener("transitionend",y),g||C())}const E=()=>{if(i.destroyed||!i.autoplay.running)return;i.autoplay.paused?c=!0:c&&(w=d,c=!1);const e=i.autoplay.paused?d:b+w-(new Date).getTime();i.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{E()}))},x=e=>{if(i.destroyed||!i.autoplay.running)return;cancelAnimationFrame(s),E();let a=void 0===e?i.params.autoplay.delay:e;v=i.params.autoplay.delay,w=i.params.autoplay.delay;const r=(()=>{let e;if(e=i.virtual&&i.params.virtual.enabled?i.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:i.slides[i.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(a=r,v=r,w=r),d=a;const n=i.params.speed,o=()=>{i&&!i.destroyed&&(i.params.autoplay.reverseDirection?!i.isBeginning||i.params.loop||i.params.rewind?(i.slidePrev(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(i.slides.length-1,n,!0,!0),l("autoplay")):!i.isEnd||i.params.loop||i.params.rewind?(i.slideNext(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(0,n,!0,!0),l("autoplay")),i.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{x()}))))};return a>0?(clearTimeout(t),t=setTimeout((()=>{o()}),a)):requestAnimationFrame((()=>{o()})),a},S=()=>{b=(new Date).getTime(),i.autoplay.running=!0,x(),l("autoplayStart")},T=()=>{i.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(i.destroyed||!i.autoplay.running)return;clearTimeout(t),e||(f=!0);const a=()=>{l("autoplayPause"),i.params.autoplay.waitForTransition?i.wrapperEl.addEventListener("transitionend",y):C()};if(i.autoplay.paused=!0,s)return h&&(d=i.params.autoplay.delay),h=!1,void a();const r=d||i.params.autoplay.delay;d=r-((new Date).getTime()-b),i.isEnd&&d<0&&!i.params.loop||(d<0&&(d=0),a())},C=()=>{i.isEnd&&d<0&&!i.params.loop||i.destroyed||!i.autoplay.running||(b=(new Date).getTime(),f?(f=!1,x(d)):x(),i.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(i.destroyed||!i.autoplay.running)return;const e=a();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,i.animating||i.autoplay.paused||M(!0))},A=e=>{"mouse"===e.pointerType&&(g=!1,i.autoplay.paused&&C())};n("init",(()=>{i.params.autoplay.enabled&&(i.params.autoplay.pauseOnMouseEnter&&(i.el.addEventListener("pointerenter",L),i.el.addEventListener("pointerleave",A)),a().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{i.el.removeEventListener("pointerenter",L),i.el.removeEventListener("pointerleave",A),a().removeEventListener("visibilitychange",P),i.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{i.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!i.destroyed&&i.autoplay.running&&(s||!i.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!i.destroyed&&i.autoplay.running&&(i.params.autoplay.disableOnInteraction?T():(p=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!i.destroyed&&i.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),i.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&i.params.cssMode&&C(),u=!1,p=!1}})),n("slideChange",(()=>{!i.destroyed&&i.autoplay.running&&(h=!0)})),Object.assign(i.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&a.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(i):t.slideTo(i)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(c(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>i?r-Math.floor(a/2)+1:r+Math.floor(a/2)-1:r>i&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},i("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(a&&a.swiper)e.swiper=a.swiper,o(),d(!0);else if(a){const s=i=>{e.swiper=i.detail[0],a.removeEventListener("init",s),o(),d(!0),e.swiper.update(),t.update()};a.addEventListener("init",s)}return a},r=()=>{if(t.destroyed)return;i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),i("slideChange update resize observerUpdate",(()=>{d()})),i("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),i("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:c}=t,p=o()-c.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=c.velocities.pop(),s=c.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,c.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let p=t.translate+s;l&&(p=-p);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(pt.minTranslate())r.freeMode.momentumBounce?(p-t.minTranslate()>h&&(p=t.minTranslate()+h),u=t.minTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-p){e=t;break}p=Math.abs(d[e]-p){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-p-t.translate)/t.velocity):Math.abs((p-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-p:p)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&c.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(p),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(p),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(a("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,i,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{i=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;i&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,r.emitContainerClasses()):!i&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),i=s})),r.grid={initSlides:e=>{const{slidesPerView:i}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;a=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==i&&"row"===l&&(t=Math.max(t,i*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,i,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:c,fill:p}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===p&&l>1){const s=Math.floor(e/(l*c)),a=e-c*l*s,r=0===s?l:Math.min(Math.ceil((u-s*c*l)/c),l);f=Math.floor(a/r),h=a-f*r+s*l,m=h+f*t/c,i.style.order=m}else"column"===p?(h=Math.floor(e/c),f=e-h*c,(h>a||h===a&&f===c-1)&&(f+=1,f>=c&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);i.row=f,i.column=h,i.style.height=`calc((100% - ${(c-1)*d}px) / ${c})`,i.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",i.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:a,roundLengths:i}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),a){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),ce({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};oe({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=t.params.cubeEffect,p=t.isHorizontal(),u=t.virtual&&t.params.virtual.enabled;let m,h=0;c.shadow&&(p?(m=t.wrapperEl.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),t.wrapperEl.append(m)),m.style.height=`${r}px`):(m=e.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),e.append(m))));for(let e=0;e-1&&(h=90*r+90*m,l&&(h=90*-r-90*m),t.browser&&t.browser.isSafari&&Math.abs(h)/90%2==1&&(h+=.001)),s.style.transform=w,c.slideShadows&&i(s,m,p)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,c.shadow)if(p)m.style.transform=`translate3d(0px, ${r/2+c.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,i=c.shadowOffset;m.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-89.99deg)`}const f=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${f}px) rotateX(${t.isHorizontal()?0:h}deg) rotateY(${t.isHorizontal()?-h:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${f}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const i=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=pe("flip",e,t.isHorizontal()?"left":"top")),i||(i=pe("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),i&&(i.style.opacity=Math.max(s,0))};oe({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),ce({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),i(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),oe({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,s=a.length;e0?u:0),t&&(t.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;oe({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(f=r.prev,h=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),m.forEach(((e,s)=>{let a=f.rotate[s]*Math.abs(d*n);t.browser&&t.browser.isSafari&&Math.abs(a)/90%2==1&&(a+=.001),m[s]=a})),a.style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${m[0]}deg) rotateY(${m[1]}deg) rotateZ(${m[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,y=`translate3d(${g}) ${v} ${w}`;if(h&&f.shadow||!h){let e=a.querySelector(".swiper-slide-shadow");if(!e&&f.shadow&&(e=pe("creative",a)),e){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=de(0,a);E.style.transform=y,E.style.opacity=b,f.origin&&(E.style.transformOrigin=f.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),ce({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),oe({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:a}=t,i=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=a?-t.translate:t.translate;for(let o=0;o0&&p<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||E){const e=(1-Math.abs((Math.abs(p)-.5)/.5))**.5;v+=-28*p*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(p)+"%"}if(m=p<0?`calc(${m}px ${a?"-":"+"} (${w*Math.abs(p)}%))`:p>0?`calc(${m}px ${a?"-":"+"} (-${w*Math.abs(p)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const x=p<0?""+(1+(1-g)*p):""+(1-(1-g)*p),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${i.rotate?a?-v:v:0}deg)\n scale(${x})\n `;if(i.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=pe("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(p)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+e.length;de(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),ce({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return ee.use(ue),ee}(); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-bundle.min.js.map b/build/assets/js/vendor/swiper/swiper-bundle.min.js.map new file mode 100644 index 0000000..cb26b7f --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","push","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","toggleEl","disabled","subEl","tagName","onPrevClick","onNextClick","initButton","destroyButton","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","isActive","isVisible","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-bundle.min.mjs b/build/assets/js/vendor/swiper/swiper-bundle.min.mjs new file mode 100644 index 0000000..a05a58f --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import Virtual from"./modules/virtual.min.mjs";import Keyboard from"./modules/keyboard.min.mjs";import Mousewheel from"./modules/mousewheel.min.mjs";import Navigation from"./modules/navigation.min.mjs";import Pagination from"./modules/pagination.min.mjs";import Scrollbar from"./modules/scrollbar.min.mjs";import Parallax from"./modules/parallax.min.mjs";import Zoom from"./modules/zoom.min.mjs";import Controller from"./modules/controller.min.mjs";import A11y from"./modules/a11y.min.mjs";import History from"./modules/history.min.mjs";import HashNavigation from"./modules/hash-navigation.min.mjs";import Autoplay from"./modules/autoplay.min.mjs";import Thumb from"./modules/thumbs.min.mjs";import freeMode from"./modules/free-mode.min.mjs";import Grid from"./modules/grid.min.mjs";import Manipulation from"./modules/manipulation.min.mjs";import EffectFade from"./modules/effect-fade.min.mjs";import EffectCube from"./modules/effect-cube.min.mjs";import EffectFlip from"./modules/effect-flip.min.mjs";import EffectCoverflow from"./modules/effect-coverflow.min.mjs";import EffectCreative from"./modules/effect-creative.min.mjs";import EffectCards from"./modules/effect-cards.min.mjs";const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Controller,A11y,History,HashNavigation,Autoplay,Thumb,freeMode,Grid,Manipulation,EffectFade,EffectCube,EffectFlip,EffectCoverflow,EffectCreative,EffectCards];Swiper.use(modules);export{Swiper,Swiper as default}; +//# sourceMappingURL=swiper-bundle.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-bundle.min.mjs.map b/build/assets/js/vendor/swiper/swiper-bundle.min.mjs.map new file mode 100644 index 0000000..00ccec7 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.mjs.mjs","names":["Swiper","Virtual","Keyboard","Mousewheel","Navigation","Pagination","Scrollbar","Parallax","Zoom","Controller","A11y","History","HashNavigation","Autoplay","Thumb","freeMode","Grid","Manipulation","EffectFade","EffectCube","EffectFlip","EffectCoverflow","EffectCreative","EffectCards","modules","use"],"sources":["0"],"mappings":";;;;;;;;;;;;YAYcA,WAAc,sCACrBC,YAAa,mCACbC,aAAc,oCACdC,eAAgB,sCAChBC,eAAgB,sCAChBC,eAAgB,sCAChBC,cAAe,qCACfC,aAAc,oCACdC,SAAU,gCACVC,eAAgB,sCAChBC,SAAU,gCACVC,YAAa,mCACbC,mBAAoB,2CACpBC,aAAc,oCACdC,UAAW,kCACXC,aAAc,qCACdC,SAAU,gCACVC,iBAAkB,wCAClBC,eAAgB,uCAChBC,eAAgB,uCAChBC,eAAgB,uCAChBC,oBAAqB,4CACrBC,mBAAoB,2CACpBC,gBAAiB,iCAGxB,MAAMC,QAAU,CAACvB,QAASC,SAAUC,WAAYC,WAAYC,WAAYC,UAAWC,SAAUC,KAAMC,WAAYC,KAAMC,QAASC,eAAgBC,SAAUC,MAAOC,SAAUC,KAAMC,aAAcC,WAAYC,WAAYC,WAAYC,gBAAiBC,eAAgBC,aAClQvB,OAAOyB,IAAID,gBAEFxB,OAAQA"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-bundle.mjs b/build/assets/js/vendor/swiper/swiper-bundle.mjs new file mode 100644 index 0000000..c3338fc --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-bundle.mjs @@ -0,0 +1,42 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import Virtual from './modules/virtual.mjs'; +import Keyboard from './modules/keyboard.mjs'; +import Mousewheel from './modules/mousewheel.mjs'; +import Navigation from './modules/navigation.mjs'; +import Pagination from './modules/pagination.mjs'; +import Scrollbar from './modules/scrollbar.mjs'; +import Parallax from './modules/parallax.mjs'; +import Zoom from './modules/zoom.mjs'; +import Controller from './modules/controller.mjs'; +import A11y from './modules/a11y.mjs'; +import History from './modules/history.mjs'; +import HashNavigation from './modules/hash-navigation.mjs'; +import Autoplay from './modules/autoplay.mjs'; +import Thumb from './modules/thumbs.mjs'; +import freeMode from './modules/free-mode.mjs'; +import Grid from './modules/grid.mjs'; +import Manipulation from './modules/manipulation.mjs'; +import EffectFade from './modules/effect-fade.mjs'; +import EffectCube from './modules/effect-cube.mjs'; +import EffectFlip from './modules/effect-flip.mjs'; +import EffectCoverflow from './modules/effect-coverflow.mjs'; +import EffectCreative from './modules/effect-creative.mjs'; +import EffectCards from './modules/effect-cards.mjs'; + +// Swiper Class +const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; +Swiper.use(modules); + +export { Swiper, Swiper as default }; diff --git a/build/assets/js/vendor/swiper/swiper-element-bundle.js b/build/assets/js/vendor/swiper/swiper-element-bundle.js new file mode 100644 index 0000000..248de36 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element-bundle.js @@ -0,0 +1,10138 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + return { + isSafari: needPerspectiveFix || isSafari(), + needPerspectiveFix, + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + slidesPrepended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop + } = swiper.params; + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !gesture.slideEl) return; + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth; + image.height = gesture.imageEl.offsetHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth; + imageHeight = gesture.imageEl.offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElement = document.querySelector(swiper.params.controller.control); + if (controlElement && controlElement.swiper) { + swiper.controller.control = controlElement.swiper; + } else if (controlElement) { + const onControllerSwiper = e => { + swiper.controller.control = e.detail[0]; + swiper.update(); + controlElement.removeEventListener('init', onControllerSwiper); + }; + controlElement.addEventListener('init', onControllerSwiper); + } + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = () => { + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const handleFocus = e => { + if (swiper.a11y.clicked) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject$1(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener('init', onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener('init', onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + if (swiper.browser && swiper.browser.isSafari && Math.abs(wrapperRotate) / 90 % 2 === 1) { + wrapperRotate += 0.001; + } + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + if (swiper.browser && swiper.browser.isSafari && Math.abs(val) / 90 % 2 === 1) { + val += 0.001; + } + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
    + + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
    + + ${needsNavigation(this.passedParams) ? ` +
    ${this.constructor.prevButtonSvg}
    +
    ${this.constructor.nextButtonSvg}
    + ` : ''} + ${needsPagination(this.passedParams) ? ` +
    + ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
    + ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/build/assets/js/vendor/swiper/swiper-element-bundle.min.js b/build/assets/js/vendor/swiper/swiper-element-bundle.min.js new file mode 100644 index 0000000..f84dedd --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((a=>{void 0===s[a]?s[a]=i[a]:e(i[a])&&e(s[a])&&Object.keys(i[a]).length>0&&t(s[a],i[a])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const a={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,a),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let i,a,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(a=l.transform||l.webkitTransform,a.split(",").length>6&&(a=a.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===a?"":a)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=n.toString().split(",")),"x"===t&&(a=s.WebKitCSSMatrix?n.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(a=s.WebKitCSSMatrix?n.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),a||0}function p(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;tn?"next":"prev",c=(e,t)=>"next"===p&&e>=t||"prev"===p&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let p=n+r*(s-n);if(c(p,s)&&(p=s),t.wrapperEl.scrollTo({[i]:p}),c(p,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:p})})),void a.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=a.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=i(),a=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,p=e===t?t.scrollX:e.scrollLeft;return{top:a.top+d-l,left:a.left+p-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function x(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}function E(e,t){t&&e.addEventListener("transitionend",(function s(i){i.target===e&&(t.call(e,i),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const i=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let T,M,C;function P(){return T||(T=function(){const e=r(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),T}function L(e){return void 0===e&&(e={}),M||(M=function(e){let{userAgent:t}=void 0===e?{}:e;const s=P(),i=r(),a=i.navigator.platform,n=t||i.navigator.userAgent,l={ios:!1,android:!1},o=i.screen.width,d=i.screen.height,p=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===a;let f="MacIntel"===a;return!c&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),f=!1),p&&!h&&(l.os="android",l.android=!0),(c||m||u)&&(l.os="ios",l.ios=!0),l}(e)),M}function z(){return C||(C=function(){const e=r();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,i]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&i<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),C}var k={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const a=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][a](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function a(){i.off(e,a),a.__emitterProxy&&delete a.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,a)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(a,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var a=arguments.length,r=new Array(a),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const A=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},I=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},$=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),a=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=a,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&I(e,s)}))}const r=a+i-1;if(e.params.rewind||e.params.loop)for(let i=a-t;i<=r+t;i+=1){const t=(i%s+s)%s;(tr)&&I(e,t)}else for(let i=Math.max(a-t,0);i<=Math.min(r+t,s-1);i+=1)i!==a&&(i>r||i=0?E=parseFloat(E.replace("%",""))/100*r:"string"==typeof E&&(E=parseFloat(E)),e.virtualSize=-E,p.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(i,"--swiper-centered-offset-before",""),u(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(p):e.grid&&e.grid.unsetSlides();const z="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+E;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),a=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==p.length-1)).forEach((e=>{e.style[t]=`${E}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(E||0)})),e-=E;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(E||0)})),e-=E,e{m[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:p,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(i,"--swiper-centered-offset-before",-m[0]+"px"),u(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(c!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==x&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);c<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let a,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(a=0;at.slides.length&&!i)break;s.push(n(e))}else s.push(n(t.activeIndex));for(a=0;ar?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&m<=t.size||u<=0&&m>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),h&&i[e].classList.add(s.slideFullyVisibleClass),o.progress=a?-p:p,o.originalProgress=a?-c:c}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:a,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===i)a=0,r=!0,n=!0;else{a=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||a<=0,n=l||a>=1,s&&(a=0),l&&(a=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),a=t.slidesGrid[s],r=t.slidesGrid[i],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=a?(o-a)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:a,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",a)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:a}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,p;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),r)if(s.loop){let t=a-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${a}"]`);else n?(o=t.filter((e=>e.column===a))[0],p=t.filter((e=>e.column===a+1))[0],d=t.filter((e=>e.column===a-1))[0]):o=t[a];o&&(o.classList.add(s.slideActiveClass),n?(p&&p.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(p=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!p&&(p=t[0]),p&&p.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:a,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const p=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let a;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(a=e);return s.normalizeSlideIndex&&(a<0||void 0===a)&&(a=0),a}(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(a.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/a.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=p(d));const c=t.grid&&a.grid&&a.grid.rows>1;let u;if(t.virtual&&a.virtual.enabled&&a.loop)u=p(d);else if(c){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/a.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&$(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let a=e.closest(`.${i.slideClass}, swiper-slide`);!a&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!a&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(a=e)}));let r,n=!1;if(a)for(let e=0;eo?o:i&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==c){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(c||0)!==n)return!1}let b;if(n!==(p||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>c?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,i),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const a=this,r=a.grid&&a.params.grid&&a.params.grid.rows>1;let n=e;if(a.params.loop)if(a.virtual&&a.params.virtual.enabled)n+=a.virtual.slidesBefore;else{let e;if(r){const t=n*a.params.grid.rows;e=a.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=a.getSlideIndexByData(n);const t=r?Math.ceil(a.slides.length/a.params.grid.rows):a.slides.length,{centeredSlides:s}=a.params;let i=a.params.slidesPerView;"auto"===i?i=a.slidesPerViewDynamic():(i=Math.ceil(parseFloat(a.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=a.getSlideIndexByData(n)}return requestAnimationFrame((()=>{a.slideTo(n,t,s,i)})),a},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:a,params:r,animating:n}=i;if(!a)return i;let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return r.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:a,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=i;if(!o)return i;const p=i.virtual&&a.virtual.enabled;if(a.loop){if(d&&!p&&a.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=c(l?i.translate:-i.translate),m=r.map((e=>c(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&a.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=i.activeIndex-1),"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),a.rewind&&i.isBeginning){const a=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(a,e,t,s)}return a.loop&&0===i.activeIndex&&a.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const a=this;let r=a.activeIndex;const n=Math.min(a.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[l]){const e=a.snapGrid[l];o-e>(a.snapGrid[l+1]-e)*i&&(r+=a.params.slidesPerGroup)}else{const e=a.snapGrid[l-1];o-e<=(a.snapGrid[l]-e)*i&&(r-=a.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,a.slidesGrid.length-1),a.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;a=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+i/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-i?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var B={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const a=()=>{f(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):E=r;const S="next"===i||!i,T="prev"===i||!i;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===a?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&x.push(s)})):x.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&x.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||x.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E+M,0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(a){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(x.length>0&&S)if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E-C,0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?x.length/m.grid.rows:x.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=p,o.allowSlideNext=c,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:i,setTranslate:a,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function N(e,t,s){const i=r(),{params:a}=e,n=a.edgeSwipeDetection,l=a.edgeSwipeThreshold;return!n||!(s<=l||s>=i.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function H(e){const t=this,s=i();let a=e;a.originalEvent&&(a=a.originalEvent);const n=t.touchEventsData;if("pointerdown"===a.type){if(null!==n.pointerId&&n.pointerId!==a.pointerId)return;n.pointerId=a.pointerId}else"touchstart"===a.type&&1===a.targetTouches.length&&(n.touchId=a.targetTouches[0].identifier);if("touchstart"===a.type)return void N(t,a,a.targetTouches[0].pageX);const{params:l,touches:d,enabled:p}=t;if(!p)return;if(!l.simulateTouch&&"mouse"===a.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let c=a.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(c))return;if("which"in a&&3===a.which)return;if("button"in a&&a.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=a.composedPath?a.composedPath():a.path;u&&a.target&&a.target.shadowRoot&&m&&(c=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!a.target||!a.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const a=s.closest(e);return a||s.getRootNode?a||t(s.getRootNode().host):null}(t)}(h,c):c.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!c.closest(l.swipeHandler))return;d.currentX=a.pageX,d.currentY=a.pageY;const g=d.currentX,v=d.currentY;if(!N(t,a,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;c.matches(n.focusableElements)&&(w=!1,"SELECT"===c.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==c&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||c.isContentEditable||a.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",a)}function R(e){const t=i(),s=this,a=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let p,c=e;if(c.originalEvent&&(c=c.originalEvent),"pointermove"===c.type){if(null!==a.touchId)return;if(c.pointerId!==a.pointerId)return}if("touchmove"===c.type){if(p=[...c.changedTouches].filter((e=>e.identifier===a.touchId))[0],!p||p.identifier!==a.touchId)return}else p=c;if(!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",c));const u=p.pageX,m=p.pageY;if(c.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return c.target.matches(a.focusableElements)||(s.allowClick=!1),void(a.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),a.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&c.target===t.activeElement&&c.target.matches(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);a.allowTouchCallbacks&&s.emit("touchMove",c),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,a.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",c),void 0===a.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(a.startMoving=!0)),a.isScrolling)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!a.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}a.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)}if((new Date).getTime(),a.isMoved&&a.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:a.currentTranslate}),a.loopSwapReset=!0,void(a.startTranslate=a.currentTranslate);s.emit("sliderMove",c),a.isMoved=!0,a.currentTranslate=g+a.startTranslate;let x=!0,E=r.resistanceRatio;if(r.touchReleaseOnEdges&&(E=0),g>0?(b&&y&&a.allowThresholdMove&&a.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),a.currentTranslate>s.minTranslate()&&(x=!1,r.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+g)**E))):g<0&&(b&&y&&a.allowThresholdMove&&a.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),a.currentTranslatea.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,a.currentTranslate=a.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function X(e){const t=this,s=t.touchEventsData;let i,a=e;a.originalEvent&&(a=a.originalEvent);if("touchend"===a.type||"touchcancel"===a.type){if(i=[...a.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(a.pointerId!==s.pointerId)return;i=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)){if(!(["pointercancel","contextmenu"].includes(a.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:p,enabled:c}=t;if(!c)return;if(!r.simulateTouch&&"mouse"===a.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",a),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=a.path||a.composedPath&&a.composedPath();t.updateClickedSlide(e&&e[0]||a.target,e),t.emit("tap click",a),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",a)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=p[e]&&h=p[e])&&(g=e,v=p[p.length-1]-p[p.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-p[g])/v,x=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+x):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+x):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(a.target===t.navigation.nextEl||a.target===t.navigation.prevEl)?a.target===t.navigation.nextEl?t.slideTo(g+x):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+x),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function Y(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=a,e.allowSlideNext=i,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function q(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function V(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let a;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();a=0===r?0:(e.translate-e.minTranslate())/r,a!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function j(e){const t=this;A(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function F(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const W=(e,t)=>{const s=i(),{params:a,el:r,wrapperEl:n,device:l}=e,o=!!a.nested,d="on"===t?"addEventListener":"removeEventListener",p=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(a.preventClicks||a.preventClicksPropagation)&&r[d]("click",e.onClick,!0),a.cssMode&&n[d]("scroll",e.onScroll),a.updateOnWindowResize?e[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",Y,!0):e[p]("observerUpdate",Y,!0),r[d]("load",e.onLoad,{capture:!0})};const U=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var K={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Z(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],a=s[i];"object"==typeof a&&null!==a?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in a?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const Q={eventsEmitter:k,update:O,translate:D,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),_({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),_({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:G,loop:B,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=H.bind(e),e.onTouchMove=R.bind(e),e.onTouchEnd=X.bind(e),e.onDocumentTouchStart=F.bind(e),t.cssMode&&(e.onScroll=V.bind(e)),e.onClick=q.bind(e),e.onLoad=j.bind(e),W(e,"on")},detachEvents:function(){W(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:a}=e,r=i.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=U(e,i),d=U(e,l),p=i.enabled;o&&!d?(a.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(a.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&a.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,a=l[t]&&l[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const u=l.direction&&l.direction!==i.direction,m=i.loop&&(l.slidesPerView!==i.slidesPerView||u),h=i.loop;u&&s&&e.changeDirection(),c(e.params,l);const f=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!f?e.disable():!p&&f&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&g?(e.loopCreate(t),e.updateSlides()):h&&!g&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const a=r(),n="window"===t?a.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:a,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),a.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},J={};class ee{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new ee(i))})),e}const l=this;l.__swiper__=!0,l.support=P(),l.device=L({userAgent:t.userAgent}),l.browser=z(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:Z(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=c({},K,o);return l.params=c({},d,J,t),l.originalParams=c({},l.params),l.passedParams=c({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),a=(s.maxTranslate()-i)*e+i;s.translateTo(a,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:a,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?i[l].swiperSlideSize:0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){a[l]-a[e]{t.complete&&A(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;a=e.slideTo(t.length-1,0,!1,!0)}else a=e.slideTo(e.activeIndex,0,!1,!0);a||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let a=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return f(s,i())[0]})();return!a&&t.params.createElements&&(a=v("div",t.params.wrapperClass),s.append(a),f(s,`.${t.params.slideClass}`).forEach((e=>{a.append(e)}))),Object.assign(t,{el:s,wrapperEl:a,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:a,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(a,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?A(t,e):e.addEventListener("load",(e=>{A(t,e.target)}))})),$(t),t.initialized=!0,$(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:a,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),a.removeAttribute("style"),r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(J,e)}static get extendedDefaults(){return J}static get defaults(){return K}static installModule(e){ee.prototype.__modules__||(ee.prototype.__modules__=[]);const t=ee.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ee.installModule(e))),ee):(ee.installModule(e),ee)}}function te(e,t,s,i){return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let r=f(e.el,`.${i[a]}`)[0];r||(r=v("div",i[a]),r.className=i[a],e.el.append(r)),s[a]=r,t[a]=r}})),s}function se(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function ie(e){const t=this,{params:s,slidesEl:i}=t;s.loop&&t.loopDestroy();const a=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.append(t.children[0]),t.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.prepend(t.children[0]),t.innerHTML=""}else a.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),i("setTranslate",(()=>{s.params.effect===t&&a()})),i("setTransition",((e,i)=>{s.params.effect===t&&r(i)})),i("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),i("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(p=!0),requestAnimationFrame((()=>{p&&s.slides&&s.slides.length&&(a(),p=!1)})))}))}function de(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function pe(e){let{swiper:t,duration:s,transformElements:i,allSlides:a}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=a?i:i.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{E(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function ce(e,t,s){const i=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=h(t);let r=a.querySelector(`.${i.split(" ").join(".")}`);return r||(r=v("div",i.split(" ")),a.append(r)),r}Object.keys(Q).forEach((e=>{Object.keys(Q[e]).forEach((t=>{ee.prototype[t]=Q[e][t]}))})),ee.use([function(e){let{swiper:t,on:s,emit:i}=e;const a=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==a.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=a.requestAnimationFrame((()=>{const{width:s,height:i}=t;let a=s,r=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:n}=e;n&&n!==t.el||(a=i?i.width:(s[0]||s).inlineSize,r=i?i.height:(s[0]||s).blockSize)})),a===s&&r===i||o()}))})),n.observe(t.el)):(a.addEventListener("resize",o),a.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&a.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),a.removeEventListener("resize",o),a.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const i=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void a("observerUpdate",e[0]);const s=function(){a("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=x(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ue=[function(e){let t,{swiper:s,extendParams:a,on:r,emit:n}=e;a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=i();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const i=s.params.virtual;if(i.cache&&s.virtual.cache[t])return s.virtual.cache[t];let a;return i.renderSlide?(a=i.renderSlide.call(s,e,t),"string"==typeof a&&(o.innerHTML=a,a=o.children[0])):a=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),a.setAttribute("data-swiper-slide-index",t),i.renderSlide||(a.innerHTML=e),i.cache&&(s.virtual.cache[t]=a),a}function p(e){const{slidesPerView:t,slidesPerGroup:i,centeredSlides:a,loop:r}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:p,to:c,slides:u,slidesGrid:m,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const g=s.activeIndex||0;let v,w,b;v=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",a?(w=Math.floor(t/2)+i+o,b=Math.floor(t/2)+i+l):(w=t+(i-1)+o,b=(r?t:i)+l);let y=g-b,x=g+w;r||(y=Math.max(y,0),x=Math.min(x,u.length-1));let E=(s.slidesGrid[y]||0)-(s.slidesGrid[0]||0);function S(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(r&&g>=b?(y-=b,a||(E+=s.slidesGrid[0])):r&&g{e.style[v]=E-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:E,from:y,to:x,slides:function(){const e=[];for(let t=y;t<=x;t+=1)e.push(u[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?S():n("virtualUpdate"));const T=[],M=[],C=e=>{let t=e;return e<0?t=u.length+e:t>=u.length&&(t-=u.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=p;e<=c;e+=1)if(ex){const t=C(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const P=r?-u.length:0,L=r?2*u.length:u.length;for(let t=P;t=y&&t<=x){const s=C(t);void 0===c||e?M.push(s):(t>c&&M.push(s),t{s.slidesEl.append(d(u[e],e))})),r)for(let e=T.length-1;e>=0;e-=1){const t=T[e];s.slidesEl.prepend(d(u[t],t))}else T.sort(((e,t)=>t-e)),T.forEach((e=>{s.slidesEl.prepend(d(u[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[v]=E-Math.abs(s.cssOverflowAdjustment())+"px"})),S()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,p()})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{p()}),100)):p())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const i=e[s],r=i.getAttribute("data-swiper-slide-index");r&&i.setAttribute("data-swiper-slide-index",parseInt(r,10)+a),t[parseInt(s,10)+a]=i})),s.virtual.cache=t}p(!0),s.slideTo(i,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[i]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[i],1),e[i]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===x(t.el,`.${t.params.slideActiveClass}`).length)return;const i=t.el,a=i.clientWidth,r=i.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(i);s&&(d.left-=i.scrollLeft);const p=[[d.left,d.top],[d.left+a,d.top],[d.left,d.top+r],[d.left+a,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||p||c||u)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),((p||u)&&!s||(d||c)&&s)&&t.slideNext(),((d||c)&&!s||(p||u)&&s)&&t.slidePrev()):((d||p||m||h)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),(p||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",a)}}function p(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function c(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&p()})),a("destroy",(()=>{t.keyboard.enabled&&c()})),Object.assign(t.keyboard,{enable:p,disable:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let p,c=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),a("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),a("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function g(e){let s=e,i=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const c=n&&n.contains(s.target);if(!t.mouseEntered&&!c&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,i=0,a=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),i=10*t,a=10*s,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(i=e.deltaX),e.shiftKey&&!i&&(i=a,a=0),(i||a)&&e.deltaMode&&(1===e.deltaMode?(i*=40,a*=40):(i*=800,a*=800)),i&&!t&&(t=i<1?-1:1),a&&!s&&(s=a<1?-1:1),{spinX:t,spinY:s,pixelX:i,pixelY:a}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),i=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),i&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},i=p&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!c&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,i=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-i.time<500&&i.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;p=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{p=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(i||a("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const i=u.length?u[u.length-1]:void 0;if(u.push(s),i?(s.direction!==i.direction||s.delta>i.delta||s.time>i.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}i("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),i("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null};const r=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function n(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.el.querySelectorAll(e).length&&(s=t.el.querySelector(e))),e&&!s?e:s)}function l(e,s){const i=t.params.navigation;(e=r(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](i.lockClass))}))}function o(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return l(s,!1),void l(e,!1);l(s,t.isBeginning&&!t.params.rewind),l(e,t.isEnd&&!t.params.rewind)}function d(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),a("navigationPrev"))}function p(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),a("navigationNext"))}function c(){const e=t.params.navigation;if(t.params.navigation=te(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=n(e.nextEl),i=n(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:i}),s=r(s),i=r(i);const a=(s,i)=>{s&&s.addEventListener("click","next"===i?p:d),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>a(e,"next"))),i.forEach((e=>a(e,"prev")))}function u(){let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s);const i=(e,s)=>{e.removeEventListener("click","next"===s?p:d),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>i(e,"next"))),s.forEach((e=>i(e,"prev")))}i("init",(()=>{!1===t.params.navigation.enabled?m():(c(),o())})),i("toEdge fromEdge lock unlock",(()=>{o()})),i("destroy",(()=>{u()})),i("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s),t.enabled?o():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),i("click",((e,s)=>{let{nextEl:i,prevEl:n}=t.navigation;i=r(i),n=r(n);const l=s.target;if(t.params.navigation.hideOnClick&&!n.includes(l)&&!i.includes(l)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===l||t.pagination.el.contains(l)))return;let e;i.length?e=i[0].classList.contains(t.params.navigation.hiddenClass):n.length&&(e=n[0].classList.contains(t.params.navigation.hiddenClass)),a(!0===e?"navigationShow":"navigationHide"),[...i,...n].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const m=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),u()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),c(),o()},disable:m,update:o,init:c,destroy:u})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;const o=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function d(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function p(e,s){const{bulletActiveClass:i}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${i}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${i}-${s}-${s}`))}function c(e){const s=e.target.closest(se(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const i=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===i)return;t.slideToLoop(i)}else t.slideTo(i)}function u(){const e=t.rtl,s=t.params.pagination;if(d())return;let i,r,c=t.pagination.el;c=o(c);const u=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,m=t.params.loop?Math.ceil(u/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,i=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(i=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,i=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let o,d,u;if(s.dynamicBullets&&(n=S(a[0],t.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=i-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(i-l,0),d=o+(Math.min(a.length,s.dynamicMainBullets)-1),u=(d+o)/2),a.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),c.length>1)a.forEach((e=>{const a=y(e);a===i?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(a>=o&&a<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),a===o&&p(e,"prev"),a===d&&p(e,"next"))}));else{const e=a[i];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&a.forEach(((e,t)=>{e.setAttribute("part",t===i?"bullet-active":"bullet")})),s.dynamicBullets){const e=a[o],t=a[d];for(let e=o;e<=d;e+=1)a[e]&&a[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));p(e,"prev"),p(t,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}c.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(se(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(i+1)})),e.querySelectorAll(se(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let a;a=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(i+1)/m;let n=1,l=1;"horizontal"===a?n=r:l=r,e.querySelectorAll(se(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,i+1,m),0===r&&a("paginationRender",e)):(0===r&&a("paginationRender",e),a("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=t.params.pagination;if(d())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let i=t.pagination.el;i=o(i);let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&i>s&&(i=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],i.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(se(e.bulletClass)))})),"custom"!==e.type&&a("paginationRender",i[0])}function h(){t.params.pagination=te(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>x(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=o(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),t.enabled||s.classList.add(e.lockClass)})))}function f(){const e=t.params.pagination;if(d())return;let s=t.pagination.el;s&&(s=o(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}i("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=o(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.pagination.enabled?g():(h(),m(),u())})),i("activeIndexChange",(()=>{void 0===t.snapIndex&&u()})),i("snapIndexChange",(()=>{u()})),i("snapGridLengthChange",(()=>{m(),u()})),i("destroy",(()=>{f()})),i("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),i("lock unlock",(()=>{u()})),i("click",((e,s)=>{const i=s.target,r=o(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!i.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&i===t.navigation.nextEl||t.navigation.prevEl&&i===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);a(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const g=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),f()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),h(),m(),u()},disable:g,render:m,update:u,init:h,destroy:f})},function(e){let{swiper:t,extendParams:s,on:a,emit:r}=e;const o=i();let d,p,c,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:i,el:a}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=p,o=(c-p)*n;s?(o=-o,o>0?(l=p-o,o=0):-o+p>c&&(l=c+o)):o<0?(l=p+o,o=0):o+p>c&&(l=c-o),t.isHorizontal()?(i.style.transform=`translate3d(${o}px, 0, 0)`,i.style.width=`${l}px`):(i.style.transform=`translate3d(0px, ${o}px, 0)`,i.style.height=`${l}px`),r.hide&&(clearTimeout(h),a.style.opacity=1,h=setTimeout((()=>{a.style.opacity=0,a.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:i}=e;s.style.width="",s.style.height="",c=t.isHorizontal()?i.offsetWidth:i.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),p="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${p}px`:s.style.height=`${p}px`,i.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(i.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function x(e){const{scrollbar:s,rtlTranslate:i}=t,{el:a}=s;let r;r=(y(e)-w(a)[t.isHorizontal()?"left":"top"]-(null!==d?d:p/2))/(c-p),r=Math.max(Math.min(r,1),0),i&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function E(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n,dragEl:l}=i;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),a.style.transitionDuration="100ms",l.style.transitionDuration="100ms",x(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:i}=t,{el:a,dragEl:n}=s;m&&(e.preventDefault?e.preventDefault():e.returnValue=!1,x(e),i.style.transitionDuration="0ms",a.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function T(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n}=i;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",a.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function M(e){const{scrollbar:s,params:i}=t,a=s.el;if(!a)return;const r=a,n=!!i.passiveListeners&&{passive:!1,capture:!1},l=!!i.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",E,n),o[d]("pointermove",S,n),o[d]("pointerup",T,l)}function C(){const{scrollbar:e,el:s}=t;t.params.scrollbar=te(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const i=t.params.scrollbar;if(!i.el)return;let a,r;if("string"==typeof i.el&&t.isElement&&(a=t.el.querySelector(i.el)),a||"string"!=typeof i.el)a||(a=i.el);else if(a=o.querySelectorAll(i.el),!a.length)return;t.params.uniqueNavElements&&"string"==typeof i.el&&a.length>1&&1===s.querySelectorAll(i.el).length&&(a=s.querySelector(i.el)),a.length>0&&(a=a[0]),a.classList.add(t.isHorizontal()?i.horizontalClass:i.verticalClass),a&&(r=a.querySelector(se(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),a.append(r))),Object.assign(e,{el:a,dragEl:r}),i.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&M("on"),a&&a.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function P(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&M("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},a("init",(()=>{!1===t.params.scrollbar.enabled?L():(C(),b(),g())})),a("update resize observerUpdate lock unlock",(()=>{b()})),a("setTranslate",(()=>{g()})),a("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),a("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),a("destroy",(()=>{P()}));const L=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),P()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),C(),b(),g()},disable:L,updateSize:b,setTranslate:g,init:C,destroy:P})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({parallax:{enabled:!1}});const a="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:i}=t,a=i?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),p=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*a+"%":n*s*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let c=`translate3d(${n}, ${l}, 0px)`;if(null!=o){c+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(p&&null!=p){c+=` rotate(${p*s*-1}deg)`}e.style.transform=c},n=()=>{const{el:e,slides:s,progress:i,snapGrid:n,isElement:l}=t,o=f(e,a);t.isElement&&o.push(...f(t.hostEl,a)),o.forEach((e=>{r(e,i)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-i*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${a}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};i("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),i("init",(()=>{t.params.parallax.enabled&&n()})),i("setTranslate",(()=>{t.params.parallax.enabled&&n()})),i("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:i}=t,r=[...s.querySelectorAll(a)];t.isElement&&r.push(...i.querySelectorAll(a)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,p=1,c=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function b(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,i=u[1].pageY;return Math.sqrt((s-e)**2+(i-t)**2)}function y(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function E(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!y(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=b(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let i=m.slideEl.querySelector(`.${s.containerClass}`);if(i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=i,m.imageWrapEl=i?x(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=m.imageWrapEl.getAttribute("data-swiper-zoom")||s.maxRatio}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/p,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/p]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}c=!0}}function S(e){if(!y(e))return;const s=t.params.zoom,i=t.zoom,a=u.findIndex((t=>t.pointerId===e.pointerId));a>=0&&(u[a]=e),u.length<2||(o=!0,m.scaleMove=b(),m.imageEl&&(i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scalet.pointerId===e.pointerId));a>=0&&u.splice(a,1),l&&o&&(l=!1,o=!1,m.imageEl&&(i.scale=Math.max(Math.min(i.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`,p=i.scale,c=!1,i.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):i.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===i.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function M(e){if(!y(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth,h.height=m.imageEl.offsetHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const i=h.width*s.scale,a=h.height*s.scale;if(i0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!c){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return void(h.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return void(h.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),h.isMoved=!0;const r=(s.scale-p)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function C(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,p=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function P(e){const s=t.zoom,i=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${i.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?x(m.imageEl,`.${i.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let a,r,l,o,d,c,u,g,v,b,y,E,S,T,M,C,P,L;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${i.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(a=e.pageX,r=e.pageY):(a=h.touchesStart.x,r=h.touchesStart.y);const z="number"==typeof e?e:null;1===p&&z&&(a=void 0,r=void 0),s.scale=z||m.imageWrapEl.getAttribute("data-swiper-zoom")||i.maxRatio,p=z||m.imageWrapEl.getAttribute("data-swiper-zoom")||i.maxRatio,!e||1===p&&z?(u=0,g=0):(P=m.slideEl.offsetWidth,L=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+P/2-a,c=o+L/2-r,v=m.imageEl.offsetWidth,b=m.imageEl.offsetHeight,y=v*s.scale,E=b*s.scale,S=Math.min(P/2-y/2,0),T=Math.min(L/2-E/2,0),M=-S,C=-T,u=d*s.scale,g=c*s.scale,uM&&(u=M),gC&&(g=C)),z&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function L(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?x(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function z(e){const s=t.zoom;s.scale&&1!==s.scale?L():P(e)}function k(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function A(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:i}=k();t.wrapperEl.addEventListener("pointerdown",E,s),t.wrapperEl.addEventListener("pointermove",S,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,T,s)})),t.wrapperEl.addEventListener("pointermove",M,i)}function I(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:i}=k();t.wrapperEl.removeEventListener("pointerdown",E,s),t.wrapperEl.removeEventListener("pointermove",S,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,T,s)})),t.wrapperEl.removeEventListener("pointermove",M,i)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.imageEl,s=m.slideEl;a("zoomChange",e,t,s)}v=e}}),i("init",(()=>{t.params.zoom.enabled&&A()})),i("destroy",(()=>{I()})),i("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const i=u.length>0?u[0]:e;h.touchesStart.x=i.pageX,h.touchesStart.y=i.pageY}(s)})),i("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,i=300;const a=g.x*s,r=h.currentX+a,n=g.y*i,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(i=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,i);h.currentX=r,h.currentY=l;const d=h.width*e.scale,p=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-p/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),i("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&z(s)})),i("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),i("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:A,disable:I,in:P,out:L,toggle:z})},function(e){let{swiper:t,extendParams:s,on:i}=e;function a(e,t){const s=function(){let e,t,s;return(i,a)=>{for(t=-1,e=i.length;e-t>1;)s=e+t>>1,i[s]<=a?t=s:e=s;return e}}();let i,a;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(a=s(this.x,e),i=a-1,(e-this.x[i])*(this.y[a]-this.y[i])/(this.x[a]-this.x[i])+this.y[i]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},i("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){const e=document.querySelector(t.params.controller.control);if(e&&e.swiper)t.controller.control=e.swiper;else if(e){const s=i=>{t.controller.control=i.detail[0],t.update(),e.removeEventListener("init",s)};e.addEventListener("init",s)}}else t.controller.control=t.params.controller.control})),i("update",(()=>{r()})),i("resize",(()=>{r()})),i("observerUpdate",(()=>{r()})),i("setTranslate",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,i)})),i("setTransition",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,i)})),Object.assign(t.controller,{setTranslate:function(e,s){const i=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new a(t.slidesGrid,e.slidesGrid):new a(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(i))for(let e=0;e{s.updateAutoHeight()})),E(s.wrapperEl,(()=>{a&&s.transitionEnd()}))))}if(Array.isArray(a))for(r=0;r(Array.isArray(e)?e:[e]).filter((e=>!!e));function l(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function o(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function d(e,t){(e=n(e)).forEach((e=>{e.setAttribute("role",t)}))}function p(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function c(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function u(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function m(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function h(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,i=e.target;t.pagination&&t.pagination.el&&(i===t.pagination.el||t.pagination.el.contains(e.target))&&!e.target.matches(se(t.params.pagination.bulletClass))||(t.navigation&&t.navigation.nextEl&&i===t.navigation.nextEl&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.prevEl&&i===t.navigation.prevEl&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&i.matches(se(t.params.pagination.bulletClass))&&i.click())}function f(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function g(){return f()&&t.params.pagination.clickable}const w=(e,t,s)=>{l(e),"BUTTON"!==e.tagName&&(d(e,"button"),e.addEventListener("keydown",h)),c(e,s),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},b=()=>{t.a11y.clicked=!0},x=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},E=e=>{if(t.a11y.clicked)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;const i=t.slides.indexOf(s)===t.activeIndex,a=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);i||a||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},S=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&p(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&d(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((i,a)=>{const r=t.params.loop?parseInt(i.getAttribute("data-swiper-slide-index"),10):a;c(i,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},T=()=>{const e=t.params.a11y;t.el.append(a);const s=t.el;e.containerRoleDescriptionMessage&&p(s,e.containerRoleDescriptionMessage),e.containerMessage&&c(s,e.containerMessage);const i=t.wrapperEl,r=e.id||i.getAttribute("id")||`swiper-wrapper-${l=16,void 0===l&&(l=16),"x".repeat(l).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var l;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,n(i).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(i,o),S();let{nextEl:u,prevEl:m}=t.navigation?t.navigation:{};if(u=n(u),m=n(m),u&&u.forEach((t=>w(t,r,e.nextSlideMessage))),m&&m.forEach((t=>w(t,r,e.prevSlideMessage))),g()){n(t.pagination.el).forEach((e=>{e.addEventListener("keydown",h)}))}t.el.addEventListener("focus",E,!0),t.el.addEventListener("pointerdown",b,!0),t.el.addEventListener("pointerup",x,!0)};i("beforeInit",(()=>{a=v("span",t.params.a11y.notificationClass),a.setAttribute("aria-live","assertive"),a.setAttribute("aria-atomic","true")})),i("afterInit",(()=>{t.params.a11y.enabled&&T()})),i("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&S()})),i("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(u(s),o(s)):(m(s),l(s))),e&&(t.isEnd?(u(e),o(e)):(m(e),l(e)))}()})),i("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(l(s),t.params.pagination.renderBullet||(d(s,"button"),c(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(se(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),i("destroy",(()=>{t.params.a11y.enabled&&function(){a&&a.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=n(e),s=n(s),e&&e.forEach((e=>e.removeEventListener("keydown",h))),s&&s.forEach((e=>e.removeEventListener("keydown",h))),g()&&n(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",h)}));t.el.removeEventListener("focus",E,!0),t.el.removeEventListener("pointerdown",b,!0),t.el.removeEventListener("pointerup",x,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:i}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let a=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const i=s.pathname.slice(1).split("/").filter((e=>""!==e)),a=i.length;return{key:i[a-2],value:i[a-1]}},d=(e,s)=>{const i=r();if(!a||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):i.location;const o=t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const p=i.history.state;p&&p.value===d||(t.params.history.replaceState?i.history.replaceState({value:d},null,d):i.history.pushState({value:d},null,d))},p=(e,s,i)=>{if(s)for(let a=0,r=t.slides.length;a{n=o(t.params.url),p(t.params.speed,n.value,!1)};i("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);a=!0,n=o(t.params.url),n.key||n.value?(p(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",c)):t.params.history.replaceState||e.addEventListener("popstate",c)}})()})),i("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",c)})()})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{a&&d(t.params.history.key,t.activeIndex)})),i("slideChange",(()=>{a&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:a,on:n}=e,l=!1;const o=i(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const p=()=>{a("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},c=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),a("hashSet")):(o.location.hash=s||"",a("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,i=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(i||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",p)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&c()})),n("slideChange",(()=>{l&&t.params.cssMode&&c()}))},function(e){let t,s,{swiper:a,extendParams:r,on:n,emit:l,params:o}=e;a.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,p,c,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){a&&!a.destroyed&&a.wrapperEl&&e.target===a.wrapperEl&&(a.wrapperEl.removeEventListener("transitionend",y),g||C())}const x=()=>{if(a.destroyed||!a.autoplay.running)return;a.autoplay.paused?p=!0:p&&(w=d,p=!1);const e=a.autoplay.paused?d:b+w-(new Date).getTime();a.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{x()}))},E=e=>{if(a.destroyed||!a.autoplay.running)return;cancelAnimationFrame(s),x();let i=void 0===e?a.params.autoplay.delay:e;v=a.params.autoplay.delay,w=a.params.autoplay.delay;const r=(()=>{let e;if(e=a.virtual&&a.params.virtual.enabled?a.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:a.slides[a.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,w=r),d=i;const n=a.params.speed,o=()=>{a&&!a.destroyed&&(a.params.autoplay.reverseDirection?!a.isBeginning||a.params.loop||a.params.rewind?(a.slidePrev(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(a.slides.length-1,n,!0,!0),l("autoplay")):!a.isEnd||a.params.loop||a.params.rewind?(a.slideNext(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(0,n,!0,!0),l("autoplay")),a.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return i>0?(clearTimeout(t),t=setTimeout((()=>{o()}),i)):requestAnimationFrame((()=>{o()})),i},S=()=>{b=(new Date).getTime(),a.autoplay.running=!0,E(),l("autoplayStart")},T=()=>{a.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(a.destroyed||!a.autoplay.running)return;clearTimeout(t),e||(f=!0);const i=()=>{l("autoplayPause"),a.params.autoplay.waitForTransition?a.wrapperEl.addEventListener("transitionend",y):C()};if(a.autoplay.paused=!0,s)return h&&(d=a.params.autoplay.delay),h=!1,void i();const r=d||a.params.autoplay.delay;d=r-((new Date).getTime()-b),a.isEnd&&d<0&&!a.params.loop||(d<0&&(d=0),i())},C=()=>{a.isEnd&&d<0&&!a.params.loop||a.destroyed||!a.autoplay.running||(b=(new Date).getTime(),f?(f=!1,E(d)):E(),a.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(a.destroyed||!a.autoplay.running)return;const e=i();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,a.animating||a.autoplay.paused||M(!0))},z=e=>{"mouse"===e.pointerType&&(g=!1,a.autoplay.paused&&C())};n("init",(()=>{a.params.autoplay.enabled&&(a.params.autoplay.pauseOnMouseEnter&&(a.el.addEventListener("pointerenter",L),a.el.addEventListener("pointerleave",z)),i().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{a.el.removeEventListener("pointerenter",L),a.el.removeEventListener("pointerleave",z),i().removeEventListener("visibilitychange",P),a.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{a.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!a.destroyed&&a.autoplay.running&&(s||!a.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!a.destroyed&&a.autoplay.running&&(a.params.autoplay.disableOnInteraction?T():(c=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!a.destroyed&&a.autoplay.running&&c){if(clearTimeout(m),clearTimeout(t),a.params.autoplay.disableOnInteraction)return u=!1,void(c=!1);u&&a.params.cssMode&&C(),u=!1,c=!1}})),n("slideChange",(()=>{!a.destroyed&&a.autoplay.running&&(h=!0)})),Object.assign(a.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,i=e.clickedSlide;if(i&&i.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let a;a=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(a):t.slideTo(a)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(p(e.swiper)){const i=Object.assign({},e.swiper);Object.assign(i,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(i),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const i="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let a=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(a=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(a=1),a=Math.floor(a),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>a?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>a&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=i(),a=()=>{const i="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(i&&i.swiper)e.swiper=i.swiper,o(),d(!0);else if(i){const s=a=>{e.swiper=a.detail[0],i.removeEventListener("init",s),o(),d(!0),e.swiper.update(),t.update()};i.addEventListener("init",s)}return i},r=()=>{if(t.destroyed)return;a()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),a("slideChange update resize observerUpdate",(()=>{d()})),a("setTransition",((e,s)=>{const i=t.thumbs.swiper;i&&!i.destroyed&&i.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:i,once:a}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:p}=t,c=o()-p.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=p.velocities.pop(),s=p.velocities.pop(),i=e.position-s.position,a=e.time-s.time;t.velocity=i/a,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,p.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(ct.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>h&&(c=t.minTranslate()+h),u=t.minTranslate(),m=!0,p.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(d[e]-c){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),i=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&p.allowMomentumBounce&&(i("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(i("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&i("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(i("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,i,a,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{a=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;a&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),i=1,r.emitContainerClasses()):!a&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),a=s})),r.grid={initSlides:e=>{const{slidesPerView:a}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;i=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==a&&"row"===l&&(t=Math.max(t,a*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,a,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:p,fill:c}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===c&&l>1){const s=Math.floor(e/(l*p)),i=e-p*l*s,r=0===s?l:Math.min(Math.ceil((u-s*p*l)/p),l);f=Math.floor(i/r),h=i-f*r+s*l,m=h+f*t/p,a.style.order=m}else"column"===c?(h=Math.floor(e/p),f=e-h*p,(h>i||h===i&&f===p-1)&&(f+=1,f>=p&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);a.row=f,a.column=h,a.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,a.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",a.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:i,roundLengths:a}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),i){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),pe({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const a=(e,t,s)=>{let i=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(i)),a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(a)),i&&(i.style.opacity=Math.max(-t,0)),a&&(a.style.opacity=Math.max(t,0))};oe({effect:"cube",swiper:t,on:i,setTranslate:()=>{const{el:e,wrapperEl:s,slides:i,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,p=t.params.cubeEffect,c=t.isHorizontal(),u=t.virtual&&t.params.virtual.enabled;let m,h=0;p.shadow&&(c?(m=t.wrapperEl.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),t.wrapperEl.append(m)),m.style.height=`${r}px`):(m=e.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),e.append(m))));for(let e=0;e-1&&(h=90*r+90*m,l&&(h=90*-r-90*m),t.browser&&t.browser.isSafari&&Math.abs(h)/90%2==1&&(h+=.001)),s.style.transform=w,p.slideShadows&&a(s,m,c)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,p.shadow)if(c)m.style.transform=`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,i=p.shadowScale/t,a=p.shadowOffset;m.style.transform=`scale3d(${s}, 1, ${i}) translate3d(0px, ${n/2+a}px, ${-n/2/i}px) rotateX(-89.99deg)`}const f=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${f}px) rotateX(${t.isHorizontal()?0:h}deg) rotateY(${t.isHorizontal()?-h:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${f}px`)},setTransition:e=>{const{el:s,slides:i}=t;if(i.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);a(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(e,s)=>{let i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=ce("flip",e,t.isHorizontal()?"left":"top")),a||(a=ce("flip",e,t.isHorizontal()?"right":"bottom")),i&&(i.style.opacity=Math.max(-s,0)),a&&(a.style.opacity=Math.max(s,0))};oe({effect:"flip",swiper:t,on:i,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,i=t.params.flipEffect;for(let r=0;r{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),pe({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),a(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),oe({effect:"coverflow",swiper:t,on:i,setTranslate:()=>{const{width:e,height:s,slides:i,slidesSizesGrid:a}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,p=r.depth;for(let e=0,s=i.length;e0?u:0),t&&(t.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;oe({effect:"creative",swiper:t,on:i,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:i}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=i[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(f=r.prev,h=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${a(f.translate[t])} * ${Math.abs(d*n)}))`})),m.forEach(((e,s)=>{let i=f.rotate[s]*Math.abs(d*n);t.browser&&t.browser.isSafari&&Math.abs(i)/90%2==1&&(i+=.001),m[s]=i})),i.style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${m[0]}deg) rotateY(${m[1]}deg) rotateZ(${m[2]}deg)`,w=p<0?`scale(${1+(1-f.scale)*p*n})`:`scale(${1-(1-f.scale)*p*n})`,b=p<0?1+(1-f.opacity)*p*n:1-(1-f.opacity)*p*n,y=`translate3d(${g}) ${v} ${w}`;if(h&&f.shadow||!h){let e=i.querySelector(".swiper-slide-shadow");if(!e&&f.shadow&&(e=ce("creative",i)),e){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const x=de(0,i);x.style.transform=y,x.style.opacity=b,f.origin&&(x.style.transformOrigin=f.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),pe({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),oe({effect:"cards",swiper:t,on:i,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:i}=t,a=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=i?-t.translate:t.translate;for(let o=0;o0&&c<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;v+=-28*c*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(c)+"%"}if(m=c<0?`calc(${m}px ${i?"-":"+"} (${w*Math.abs(c)}%))`:c>0?`calc(${m}px ${i?"-":"+"} (-${w*Math.abs(c)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const E=c<0?""+(1+(1-g)*c):""+(1-(1-g)*c),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${a.rotate?i?-v:v:0}deg)\n scale(${E})\n `;if(a.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=ce("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(p))+e.length;de(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),pe({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];ee.use(ue);const me=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function he(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function fe(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:he(t[s])&&he(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:fe(e[s],t[s]):e[s]=t[s]}))}function ge(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const ve=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},we=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function be(e,t,s){const i={},a={};fe(i,K);const r=[...me,"on"],n=r.map((e=>e.replace(/_/,"")));r.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(a[t]=e[t])}));const l=[...e.attributes];return"string"==typeof t&&void 0!==s&&l.push({name:t,value:he(s)?{...s}:s}),l.forEach((e=>{const t=we.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=ge(t),i=ge(e.name.split(`${t}-`)[1]);void 0===a[s]&&(a[s]={}),!0===a[s]&&(a[s]={enabled:!0}),a[s][i]=ve(e.value)}else{const t=ge(e.name);if(!n.includes(t))return;const s=ve(e.value);a[t]&&we.includes(e.name)&&!he(s)?(a[t].constructor!==Object&&(a[t]={}),a[t].enabled=!!s):a[t]=s}})),fe(i,a),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:a}}const ye=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}";const xe="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,Ee='\n ',Se=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class Te extends xe{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return Ee}static get prevButtonSvg(){return Ee.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[ye,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&Se(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
    \n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
    \n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
    ${this.constructor.prevButtonSvg}
    \n
    ${this.constructor.nextButtonSvg}
    \n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
    \n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
    \n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=be(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new ee(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var a=arguments.length,r=new Array(a>1?a-1:0),n=1;n"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:p,pagination:c,navigation:u,scrollbar:m,virtual:h,thumbs:f}=t;let g,v,w,b,y,x,E,S;a.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&p.thumbs&&!p.thumbs.swiper&&(g=!0),a.includes("controller")&&i.controller&&i.controller.control&&p.controller&&!p.controller.control&&(v=!0),a.includes("pagination")&&i.pagination&&(i.pagination.el||o)&&(p.pagination||!1===p.pagination)&&c&&!c.el&&(w=!0),a.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||l)&&(p.scrollbar||!1===p.scrollbar)&&m&&!m.el&&(b=!0),a.includes("navigation")&&i.navigation&&(i.navigation.prevEl||n)&&(i.navigation.nextEl||r)&&(p.navigation||!1===p.navigation)&&u&&!u.prevEl&&!u.nextEl&&(y=!0);const T=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),p[e].prevEl=void 0,p[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),p[e].el=void 0,t[e].el=void 0))};a.includes("loop")&&t.isElement&&(p.loop&&!i.loop?x=!0:!p.loop&&i.loop?E=!0:S=!0),d.forEach((e=>{if(he(p[e])&&he(i[e]))Object.assign(p[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||T(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?p[e]=i[e]:!1===t&&T(e)}})),d.includes("controller")&&!v&&t.controller&&t.controller.control&&p.controller&&p.controller.control&&(t.controller.control=p.controller.control),a.includes("children")&&s&&h&&p.virtual.enabled?(h.slides=s,h.update(!0)):a.includes("virtual")&&h&&p.virtual.enabled&&(s&&(h.slides=s),h.update(!0)),a.includes("children")&&s&&p.loop&&(S=!0),g&&f.init()&&f.update(!0);v&&(t.controller.control=p.controller.control),w&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-pagination"),o.part.add("pagination"),t.el.appendChild(o)),o&&(p.pagination.el=o),c.init(),c.render(),c.update()),b&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-scrollbar"),l.part.add("scrollbar"),t.el.appendChild(l)),l&&(p.scrollbar.el=l),m.init(),m.updateSize(),m.setTranslate()),y&&(t.isElement&&(r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-next"),r.innerHTML=t.hostEl.constructor.nextButtonSvg,r.part.add("button-next"),t.el.appendChild(r)),n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-prev"),n.innerHTML=t.hostEl.constructor.prevButtonSvg,n.part.add("button-prev"),t.el.appendChild(n))),r&&(p.navigation.nextEl=r),n&&(p.navigation.prevEl=n),u.init(),u.update()),a.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),a.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),a.includes("direction")&&t.changeDirection(i.direction,!1),(x||S)&&t.loopDestroy(),(E||S)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[ge(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return me.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}me.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(Te.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class Me extends xe{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(Se(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{me.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",Te),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",Me))}(); +//# sourceMappingURL=swiper-element-bundle.min.js.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-element-bundle.min.js.map b/build/assets/js/vendor/swiper/swiper-element-bundle.min.js.map new file mode 100644 index 0000000..a067847 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","push","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","toggleEl","disabled","subEl","tagName","onPrevClick","onNextClick","initButton","destroyButton","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","isActive","isVisible","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","paramsList","isObject","extend","attrToProp","attrName","l","toUpperCase","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","configurable","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":";;;;;;;;;;;;CAYA,WACE,aAcA,SAASA,EAAWC,GAClB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,EAASC,EAAQC,QACT,IAAXD,IACFA,EAAS,CAAC,QAEA,IAARC,IACFA,EAAM,CAAC,GAETH,OAAOI,KAAKD,GAAKE,SAAQC,SACI,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcT,EAAWM,EAAIG,KAAST,EAAWK,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GACxJN,EAASC,EAAOI,GAAMH,EAAIG,GAC5B,GAEJ,CACA,MAAME,EAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChBC,qBAAoB,IACX,KAIbC,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,IACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EAE1D,OADAtC,EAASqC,EAAK9B,GACP8B,CACT,CACA,MAAME,EAAY,CAChBD,SAAU/B,EACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAvC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBuC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEVC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9B,oBAAAC,CAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,IACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADA/D,EAAS8D,EAAKvB,GACPuB,CACT,CAEA,SAASE,EAAgBC,GAIvB,YAHgB,IAAZA,IACFA,EAAU,IAELA,EAAQC,OAAOC,MAAM,KAAKC,QAAOC,KAAOA,EAAEH,QACnD,CAiBA,SAASI,EAASZ,EAAUa,GAI1B,YAHc,IAAVA,IACFA,EAAQ,GAEHjB,WAAWI,EAAUa,EAC9B,CACA,SAASC,IACP,OAAOpB,KAAKoB,KACd,CAeA,SAASC,EAAaC,EAAIC,QACX,IAATA,IACFA,EAAO,KAET,MAAMZ,EAASF,IACf,IAAIe,EACAC,EACAC,EACJ,MAAMC,EAtBR,SAA4BL,GAC1B,MAAMX,EAASF,IACf,IAAIvC,EAUJ,OATIyC,EAAOd,mBACT3B,EAAQyC,EAAOd,iBAAiByB,EAAI,QAEjCpD,GAASoD,EAAGM,eACf1D,EAAQoD,EAAGM,cAER1D,IACHA,EAAQoD,EAAGpD,OAENA,CACT,CASmB2D,CAAmBP,GA6BpC,OA5BIX,EAAOmB,iBACTL,EAAeE,EAASI,WAAaJ,EAASK,gBAC1CP,EAAaV,MAAM,KAAK7D,OAAS,IACnCuE,EAAeA,EAAaV,MAAM,MAAMkB,KAAIC,GAAKA,EAAEC,QAAQ,IAAK,OAAMC,KAAK,OAI7EV,EAAkB,IAAIf,EAAOmB,gBAAiC,SAAjBL,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASU,cAAgBV,EAASW,YAAcX,EAASY,aAAeZ,EAASa,aAAeb,EAASI,WAAaJ,EAAS7B,iBAAiB,aAAaqC,QAAQ,aAAc,sBACrMX,EAASE,EAAgBe,WAAW1B,MAAM,MAE/B,MAATQ,IAE0BE,EAAxBd,EAAOmB,gBAAgCJ,EAAgBgB,IAEhC,KAAlBlB,EAAOtE,OAA8ByF,WAAWnB,EAAO,KAE5CmB,WAAWnB,EAAO,KAE3B,MAATD,IAE0BE,EAAxBd,EAAOmB,gBAAgCJ,EAAgBkB,IAEhC,KAAlBpB,EAAOtE,OAA8ByF,WAAWnB,EAAO,KAE5CmB,WAAWnB,EAAO,KAEjCC,GAAgB,CACzB,CACA,SAASoB,EAAWC,GAClB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEpG,aAAkE,WAAnDC,OAAOoG,UAAUN,SAASO,KAAKF,GAAGG,MAAM,GAAI,EAC7G,CAQA,SAASC,IACP,MAAMC,EAAKxG,OAAOyG,UAAUlG,QAAU,OAAImG,EAAYD,UAAU,IAC1DE,EAAW,CAAC,YAAa,cAAe,aAC9C,IAAK,IAAIC,EAAI,EAAGA,EAAIH,UAAUlG,OAAQqG,GAAK,EAAG,CAC5C,MAAMC,EAAaD,EAAI,GAAKH,UAAUlG,QAAUqG,OAAIF,EAAYD,UAAUG,GAC1E,GAAIC,UAZQC,EAYmDD,IAV3C,oBAAX7C,aAAwD,IAAvBA,OAAO+C,YAC1CD,aAAgBC,YAElBD,IAA2B,IAAlBA,EAAKE,UAAoC,KAAlBF,EAAKE,YAOkC,CAC1E,MAAMC,EAAYjH,OAAOI,KAAKJ,OAAO6G,IAAaxC,QAAO/D,GAAOqG,EAASO,QAAQ5G,GAAO,IACxF,IAAK,IAAI6G,EAAY,EAAGC,EAAMH,EAAU1G,OAAQ4G,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUJ,EAAUE,GACpBG,EAAOtH,OAAOuH,yBAAyBV,EAAYQ,QAC5CX,IAATY,GAAsBA,EAAKE,aACzBtB,EAAWM,EAAGa,KAAanB,EAAWW,EAAWQ,IAC/CR,EAAWQ,GAASI,WACtBjB,EAAGa,GAAWR,EAAWQ,GAEzBd,EAASC,EAAGa,GAAUR,EAAWQ,KAEzBnB,EAAWM,EAAGa,KAAanB,EAAWW,EAAWQ,KAC3Db,EAAGa,GAAW,CAAC,EACXR,EAAWQ,GAASI,WACtBjB,EAAGa,GAAWR,EAAWQ,GAEzBd,EAASC,EAAGa,GAAUR,EAAWQ,KAGnCb,EAAGa,GAAWR,EAAWQ,GAG/B,CACF,CACF,CArCF,IAAgBP,EAsCd,OAAON,CACT,CACA,SAASkB,EAAe/C,EAAIgD,EAASC,GACnCjD,EAAGpD,MAAMsG,YAAYF,EAASC,EAChC,CACA,SAASE,EAAqBC,GAC5B,IAAIC,OACFA,EAAMC,eACNA,EAAcC,KACdA,GACEH,EACJ,MAAM/D,EAASF,IACTqE,GAAiBH,EAAOI,UAC9B,IACIC,EADAC,EAAY,KAEhB,MAAMC,EAAWP,EAAOQ,OAAOC,MAC/BT,EAAOU,UAAUnH,MAAMoH,eAAiB,OACxC3E,EAAOJ,qBAAqBoE,EAAOY,gBACnC,MAAMC,EAAMZ,EAAiBE,EAAgB,OAAS,OAChDW,EAAe,CAACC,EAAS7I,IACd,SAAR2I,GAAkBE,GAAW7I,GAAkB,SAAR2I,GAAkBE,GAAW7I,EAEvE8I,EAAU,KACdX,GAAO,IAAIhF,MAAO4F,UACA,OAAdX,IACFA,EAAYD,GAEd,MAAMa,EAAWC,KAAKC,IAAID,KAAKE,KAAKhB,EAAOC,GAAaC,EAAU,GAAI,GAChEe,EAAe,GAAMH,KAAKI,IAAIL,EAAWC,KAAKK,IAAM,EAC1D,IAAIC,EAAkBtB,EAAgBmB,GAAgBrB,EAAiBE,GAOvE,GANIW,EAAaW,EAAiBxB,KAChCwB,EAAkBxB,GAEpBD,EAAOU,UAAUgB,SAAS,CACxBxB,CAACA,GAAOuB,IAENX,EAAaW,EAAiBxB,GAUhC,OATAD,EAAOU,UAAUnH,MAAMoI,SAAW,SAClC3B,EAAOU,UAAUnH,MAAMoH,eAAiB,GACxCpF,YAAW,KACTyE,EAAOU,UAAUnH,MAAMoI,SAAW,GAClC3B,EAAOU,UAAUgB,SAAS,CACxBxB,CAACA,GAAOuB,GACR,SAEJzF,EAAOJ,qBAAqBoE,EAAOY,gBAGrCZ,EAAOY,eAAiB5E,EAAON,sBAAsBsF,EAAQ,EAE/DA,GACF,CACA,SAASY,EAAoBC,GAC3B,OAAOA,EAAQ9I,cAAc,4BAA8B8I,EAAQC,YAAcD,EAAQC,WAAW/I,cAAc,4BAA8B8I,CAClJ,CACA,SAASE,EAAgBC,EAASC,GAIhC,YAHiB,IAAbA,IACFA,EAAW,IAEN,IAAID,EAAQ3I,UAAUgD,QAAOM,GAAMA,EAAGuF,QAAQD,IACvD,CACA,SAASE,EAAYC,GACnB,IAEE,YADAC,QAAQC,KAAKF,EAEf,CAAE,MAAOG,GAET,CACF,CACA,SAASnJ,EAAcoJ,EAAKtG,QACV,IAAZA,IACFA,EAAU,IAEZ,MAAMS,EAAKpC,SAASnB,cAAcoJ,GAElC,OADA7F,EAAG8F,UAAUC,OAAQC,MAAMC,QAAQ1G,GAAWA,EAAUD,EAAgBC,IACjES,CACT,CACA,SAASkG,EAAclG,GACrB,MAAMX,EAASF,IACTvB,EAAWF,IACXyI,EAAMnG,EAAGoG,wBACTtK,EAAO8B,EAAS9B,KAChBuK,EAAYrG,EAAGqG,WAAavK,EAAKuK,WAAa,EAC9CC,EAAatG,EAAGsG,YAAcxK,EAAKwK,YAAc,EACjDC,EAAYvG,IAAOX,EAASA,EAAOmH,QAAUxG,EAAGuG,UAChDE,EAAazG,IAAOX,EAASA,EAAOqH,QAAU1G,EAAGyG,WACvD,MAAO,CACLE,IAAKR,EAAIQ,IAAMJ,EAAYF,EAC3BO,KAAMT,EAAIS,KAAOH,EAAaH,EAElC,CAuBA,SAASO,EAAa7G,EAAI8G,GAExB,OADe3H,IACDZ,iBAAiByB,EAAI,MAAMxB,iBAAiBsI,EAC5D,CACA,SAASC,EAAa/G,GACpB,IACIiC,EADA+E,EAAQhH,EAEZ,GAAIgH,EAAO,CAGT,IAFA/E,EAAI,EAEuC,QAAnC+E,EAAQA,EAAMC,kBACG,IAAnBD,EAAM3E,WAAgBJ,GAAK,GAEjC,OAAOA,CACT,CAEF,CACA,SAASiF,EAAelH,EAAIsF,GAC1B,MAAM6B,EAAU,GAChB,IAAIC,EAASpH,EAAGqH,cAChB,KAAOD,GACD9B,EACE8B,EAAO7B,QAAQD,IAAW6B,EAAQG,KAAKF,GAE3CD,EAAQG,KAAKF,GAEfA,EAASA,EAAOC,cAElB,OAAOF,CACT,CACA,SAASI,EAAqBvH,EAAIhB,GAM5BA,GACFgB,EAAGjE,iBAAiB,iBANtB,SAASyL,EAAaC,GAChBA,EAAElM,SAAWyE,IACjBhB,EAAS0C,KAAK1B,EAAIyH,GAClBzH,EAAGhE,oBAAoB,gBAAiBwL,GAC1C,GAIF,CACA,SAASE,EAAiB1H,EAAI2H,EAAMC,GAClC,MAAMvI,EAASF,IACf,OAAIyI,EACK5H,EAAY,UAAT2H,EAAmB,cAAgB,gBAAkBtG,WAAWhC,EAAOd,iBAAiByB,EAAI,MAAMxB,iBAA0B,UAATmJ,EAAmB,eAAiB,eAAiBtG,WAAWhC,EAAOd,iBAAiByB,EAAI,MAAMxB,iBAA0B,UAATmJ,EAAmB,cAAgB,kBAE9Q3H,EAAG6H,WACZ,CAEA,IAAIC,EAgBAC,EAqDAC,EA5DJ,SAASC,IAIP,OAHKH,IACHA,EAVJ,WACE,MAAMzI,EAASF,IACTvB,EAAWF,IACjB,MAAO,CACLwK,aAActK,EAASuK,iBAAmBvK,EAASuK,gBAAgBvL,OAAS,mBAAoBgB,EAASuK,gBAAgBvL,MACzHwL,SAAU,iBAAkB/I,GAAUA,EAAOgJ,eAAiBzK,aAAoByB,EAAOgJ,eAE7F,CAGcC,IAELR,CACT,CA6CA,SAASS,EAAUC,GAOjB,YANkB,IAAdA,IACFA,EAAY,CAAC,GAEVT,IACHA,EA/CJ,SAAoBU,GAClB,IAAI1K,UACFA,QACY,IAAV0K,EAAmB,CAAC,EAAIA,EAC5B,MAAMX,EAAUG,IACV5I,EAASF,IACTuJ,EAAWrJ,EAAOvB,UAAU4K,SAC5BC,EAAK5K,GAAasB,EAAOvB,UAAUC,UACnC6K,EAAS,CACbC,KAAK,EACLC,SAAS,GAELC,EAAc1J,EAAOV,OAAOqK,MAC5BC,EAAe5J,EAAOV,OAAOuK,OAC7BJ,EAAUH,EAAGQ,MAAM,+BACzB,IAAIC,EAAOT,EAAGQ,MAAM,wBACpB,MAAME,EAAOV,EAAGQ,MAAM,2BAChBG,GAAUF,GAAQT,EAAGQ,MAAM,8BAC3BI,EAAuB,UAAbb,EAChB,IAAIc,EAAqB,aAAbd,EAqBZ,OAjBKU,GAAQI,GAAS1B,EAAQM,OADV,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YACxG7F,QAAQ,GAAGwG,KAAeE,MAAmB,IAC9FG,EAAOT,EAAGQ,MAAM,uBACXC,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINV,IAAYS,IACdX,EAAOa,GAAK,UACZb,EAAOE,SAAU,IAEfM,GAAQE,GAAUD,KACpBT,EAAOa,GAAK,MACZb,EAAOC,KAAM,GAIRD,CACT,CAMmBc,CAAWlB,IAErBT,CACT,CAuBA,SAAS4B,IAIP,OAHK3B,IACHA,EAtBJ,WACE,MAAM3I,EAASF,IACf,IAAIyK,GAAqB,EACzB,SAASC,IACP,MAAMlB,EAAKtJ,EAAOvB,UAAUC,UAAU+L,cACtC,OAAOnB,EAAGpG,QAAQ,WAAa,GAAKoG,EAAGpG,QAAQ,UAAY,GAAKoG,EAAGpG,QAAQ,WAAa,CAC1F,CACA,GAAIsH,IAAY,CACd,MAAMlB,EAAKoB,OAAO1K,EAAOvB,UAAUC,WACnC,GAAI4K,EAAGqB,SAAS,YAAa,CAC3B,MAAOC,EAAOC,GAASvB,EAAGlJ,MAAM,YAAY,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAKkB,KAAIwJ,GAAOC,OAAOD,KAC1FP,EAAqBK,EAAQ,IAAgB,KAAVA,GAAgBC,EAAQ,CAC7D,CACF,CACA,MAAO,CACLL,SAAUD,GAAsBC,IAChCD,qBACAS,UAAW,+CAA+CC,KAAKjL,EAAOvB,UAAUC,WAEpF,CAGcwM,IAELvC,CACT,CAiJA,IAAIwC,EAAgB,CAClB,EAAAC,CAAGC,EAAQC,EAASC,GAClB,MAAMC,EAAOvM,KACb,IAAKuM,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,MAAMG,EAASJ,EAAW,UAAY,OAKtC,OAJAF,EAAOjL,MAAM,KAAK/D,SAAQuP,IACnBJ,EAAKC,gBAAgBG,KAAQJ,EAAKC,gBAAgBG,GAAS,IAChEJ,EAAKC,gBAAgBG,GAAOD,GAAQL,EAAQ,IAEvCE,CACT,EACA,IAAAK,CAAKR,EAAQC,EAASC,GACpB,MAAMC,EAAOvM,KACb,IAAKuM,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,SAASM,IACPN,EAAKO,IAAIV,EAAQS,GACbA,EAAYE,uBACPF,EAAYE,eAErB,IAAK,IAAIC,EAAOxJ,UAAUlG,OAAQ2P,EAAO,IAAIvF,MAAMsF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ1J,UAAU0J,GAEzBb,EAAQc,MAAMZ,EAAMU,EACtB,CAEA,OADAJ,EAAYE,eAAiBV,EACtBE,EAAKJ,GAAGC,EAAQS,EAAaP,EACtC,EACA,KAAAc,CAAMf,EAASC,GACb,MAAMC,EAAOvM,KACb,IAAKuM,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,MAAMG,EAASJ,EAAW,UAAY,OAItC,OAHIC,EAAKc,mBAAmBpJ,QAAQoI,GAAW,GAC7CE,EAAKc,mBAAmBX,GAAQL,GAE3BE,CACT,EACA,MAAAe,CAAOjB,GACL,MAAME,EAAOvM,KACb,IAAKuM,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,IAAKA,EAAKc,mBAAoB,OAAOd,EACrC,MAAMgB,EAAQhB,EAAKc,mBAAmBpJ,QAAQoI,GAI9C,OAHIkB,GAAS,GACXhB,EAAKc,mBAAmBG,OAAOD,EAAO,GAEjChB,CACT,EACA,GAAAO,CAAIV,EAAQC,GACV,MAAME,EAAOvM,KACb,OAAKuM,EAAKC,iBAAmBD,EAAKE,UAAkBF,EAC/CA,EAAKC,iBACVJ,EAAOjL,MAAM,KAAK/D,SAAQuP,SACD,IAAZN,EACTE,EAAKC,gBAAgBG,GAAS,GACrBJ,EAAKC,gBAAgBG,IAC9BJ,EAAKC,gBAAgBG,GAAOvP,SAAQ,CAACqQ,EAAcF,MAC7CE,IAAiBpB,GAAWoB,EAAaV,gBAAkBU,EAAaV,iBAAmBV,IAC7FE,EAAKC,gBAAgBG,GAAOa,OAAOD,EAAO,EAC5C,GAEJ,IAEKhB,GAZ2BA,CAapC,EACA,IAAAmB,GACE,MAAMnB,EAAOvM,KACb,IAAKuM,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,IAAKA,EAAKC,gBAAiB,OAAOD,EAClC,IAAIH,EACAuB,EACAC,EACJ,IAAK,IAAIC,EAAQrK,UAAUlG,OAAQ2P,EAAO,IAAIvF,MAAMmG,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFb,EAAKa,GAAStK,UAAUsK,GAEH,iBAAZb,EAAK,IAAmBvF,MAAMC,QAAQsF,EAAK,KACpDb,EAASa,EAAK,GACdU,EAAOV,EAAK5J,MAAM,EAAG4J,EAAK3P,QAC1BsQ,EAAUrB,IAEVH,EAASa,EAAK,GAAGb,OACjBuB,EAAOV,EAAK,GAAGU,KACfC,EAAUX,EAAK,GAAGW,SAAWrB,GAE/BoB,EAAKI,QAAQH,GAcb,OAboBlG,MAAMC,QAAQyE,GAAUA,EAASA,EAAOjL,MAAM,MACtD/D,SAAQuP,IACdJ,EAAKc,oBAAsBd,EAAKc,mBAAmB/P,QACrDiP,EAAKc,mBAAmBjQ,SAAQqQ,IAC9BA,EAAaN,MAAMS,EAAS,CAACjB,KAAUgB,GAAM,IAG7CpB,EAAKC,iBAAmBD,EAAKC,gBAAgBG,IAC/CJ,EAAKC,gBAAgBG,GAAOvP,SAAQqQ,IAClCA,EAAaN,MAAMS,EAASD,EAAK,GAErC,IAEKpB,CACT,GAsiBF,MAAMyB,EAAuB,CAACjJ,EAAQkJ,KACpC,IAAKlJ,GAAUA,EAAO0H,YAAc1H,EAAOQ,OAAQ,OACnD,MACMqB,EAAUqH,EAAQC,QADInJ,EAAOoJ,UAAY,eAAiB,IAAIpJ,EAAOQ,OAAO6I,cAElF,GAAIxH,EAAS,CACX,IAAIyH,EAASzH,EAAQ9I,cAAc,IAAIiH,EAAOQ,OAAO+I,uBAChDD,GAAUtJ,EAAOoJ,YAChBvH,EAAQC,WACVwH,EAASzH,EAAQC,WAAW/I,cAAc,IAAIiH,EAAOQ,OAAO+I,sBAG5D7N,uBAAsB,KAChBmG,EAAQC,aACVwH,EAASzH,EAAQC,WAAW/I,cAAc,IAAIiH,EAAOQ,OAAO+I,sBACxDD,GAAQA,EAAOE,SACrB,KAIFF,GAAQA,EAAOE,QACrB,GAEIC,EAAS,CAACzJ,EAAQwI,KACtB,IAAKxI,EAAO0J,OAAOlB,GAAQ,OAC3B,MAAMU,EAAUlJ,EAAO0J,OAAOlB,GAAOzP,cAAc,oBAC/CmQ,GAASA,EAAQS,gBAAgB,UAAU,EAE3CC,EAAU5J,IACd,IAAKA,GAAUA,EAAO0H,YAAc1H,EAAOQ,OAAQ,OACnD,IAAIqJ,EAAS7J,EAAOQ,OAAOsJ,oBAC3B,MAAM1K,EAAMY,EAAO0J,OAAOnR,OAC1B,IAAK6G,IAAQyK,GAAUA,EAAS,EAAG,OACnCA,EAAS1I,KAAKE,IAAIwI,EAAQzK,GAC1B,MAAM2K,EAAgD,SAAhC/J,EAAOQ,OAAOuJ,cAA2B/J,EAAOgK,uBAAyB7I,KAAK8I,KAAKjK,EAAOQ,OAAOuJ,eACjHG,EAAclK,EAAOkK,YAC3B,GAAIlK,EAAOQ,OAAO2J,MAAQnK,EAAOQ,OAAO2J,KAAKC,KAAO,EAAG,CACrD,MAAMC,EAAeH,EACfI,EAAiB,CAACD,EAAeR,GASvC,OARAS,EAAerG,QAAQtB,MAAM4H,KAAK,CAChChS,OAAQsR,IACPvM,KAAI,CAACkN,EAAG5L,IACFyL,EAAeN,EAAgBnL,UAExCoB,EAAO0J,OAAOrR,SAAQ,CAACwJ,EAASjD,KAC1B0L,EAAe3D,SAAS9E,EAAQ4I,SAAShB,EAAOzJ,EAAQpB,EAAE,GAGlE,CACA,MAAM8L,EAAuBR,EAAcH,EAAgB,EAC3D,GAAI/J,EAAOQ,OAAOmK,QAAU3K,EAAOQ,OAAOoK,KACxC,IAAK,IAAIhM,EAAIsL,EAAcL,EAAQjL,GAAK8L,EAAuBb,EAAQjL,GAAK,EAAG,CAC7E,MAAMiM,GAAajM,EAAIQ,EAAMA,GAAOA,GAChCyL,EAAYX,GAAeW,EAAYH,IAAsBjB,EAAOzJ,EAAQ6K,EAClF,MAEA,IAAK,IAAIjM,EAAIuC,KAAKC,IAAI8I,EAAcL,EAAQ,GAAIjL,GAAKuC,KAAKE,IAAIqJ,EAAuBb,EAAQzK,EAAM,GAAIR,GAAK,EACtGA,IAAMsL,IAAgBtL,EAAI8L,GAAwB9L,EAAIsL,IACxDT,EAAOzJ,EAAQpB,EAGrB,EAyJF,IAAIkM,EAAS,CACXC,WAzvBF,WACE,MAAM/K,EAAS/E,KACf,IAAI0K,EACAE,EACJ,MAAMlJ,EAAKqD,EAAOrD,GAEhBgJ,OADiC,IAAxB3F,EAAOQ,OAAOmF,OAAiD,OAAxB3F,EAAOQ,OAAOmF,MACtD3F,EAAOQ,OAAOmF,MAEdhJ,EAAGqO,YAGXnF,OADkC,IAAzB7F,EAAOQ,OAAOqF,QAAmD,OAAzB7F,EAAOQ,OAAOqF,OACtD7F,EAAOQ,OAAOqF,OAEdlJ,EAAGsO,aAEA,IAAVtF,GAAe3F,EAAOkL,gBAA6B,IAAXrF,GAAgB7F,EAAOmL,eAKnExF,EAAQA,EAAQyF,SAAS5H,EAAa7G,EAAI,iBAAmB,EAAG,IAAMyO,SAAS5H,EAAa7G,EAAI,kBAAoB,EAAG,IACvHkJ,EAASA,EAASuF,SAAS5H,EAAa7G,EAAI,gBAAkB,EAAG,IAAMyO,SAAS5H,EAAa7G,EAAI,mBAAqB,EAAG,IACrHoK,OAAOsE,MAAM1F,KAAQA,EAAQ,GAC7BoB,OAAOsE,MAAMxF,KAASA,EAAS,GACnC7N,OAAOsT,OAAOtL,EAAQ,CACpB2F,QACAE,SACAvB,KAAMtE,EAAOkL,eAAiBvF,EAAQE,IAE1C,EA6tBE0F,aA3tBF,WACE,MAAMvL,EAAS/E,KACf,SAASuQ,EAA0B1M,EAAM2M,GACvC,OAAOzN,WAAWc,EAAK3D,iBAAiB6E,EAAO0L,kBAAkBD,KAAW,EAC9E,CACA,MAAMjL,EAASR,EAAOQ,QAChBE,UACJA,EAASiL,SACTA,EACArH,KAAMsH,EACNC,aAAcC,EAAGC,SACjBA,GACE/L,EACEgM,EAAYhM,EAAOiM,SAAWzL,EAAOyL,QAAQC,QAC7CC,EAAuBH,EAAYhM,EAAOiM,QAAQvC,OAAOnR,OAASyH,EAAO0J,OAAOnR,OAChFmR,EAAS3H,EAAgB4J,EAAU,IAAI3L,EAAOQ,OAAO6I,4BACrD+C,EAAeJ,EAAYhM,EAAOiM,QAAQvC,OAAOnR,OAASmR,EAAOnR,OACvE,IAAI8T,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GACxB,IAAIC,EAAehM,EAAOiM,mBACE,mBAAjBD,IACTA,EAAehM,EAAOiM,mBAAmBpO,KAAK2B,IAEhD,IAAI0M,EAAclM,EAAOmM,kBACE,mBAAhBD,IACTA,EAAclM,EAAOmM,kBAAkBtO,KAAK2B,IAE9C,MAAM4M,EAAyB5M,EAAOqM,SAAS9T,OACzCsU,EAA2B7M,EAAOsM,WAAW/T,OACnD,IAAIuU,EAAetM,EAAOsM,aACtBC,GAAiBP,EACjBQ,EAAgB,EAChBxE,EAAQ,EACZ,QAA0B,IAAfoD,EACT,OAE0B,iBAAjBkB,GAA6BA,EAAa5N,QAAQ,MAAQ,EACnE4N,EAAe9O,WAAW8O,EAAatP,QAAQ,IAAK,KAAO,IAAMoO,EAChC,iBAAjBkB,IAChBA,EAAe9O,WAAW8O,IAE5B9M,EAAOiN,aAAeH,EAGtBpD,EAAOrR,SAAQwJ,IACTiK,EACFjK,EAAQtI,MAAM2T,WAAa,GAE3BrL,EAAQtI,MAAM4T,YAAc,GAE9BtL,EAAQtI,MAAM6T,aAAe,GAC7BvL,EAAQtI,MAAM8T,UAAY,EAAE,IAI1B7M,EAAO8M,gBAAkB9M,EAAO+M,UAClC7N,EAAegB,EAAW,kCAAmC,IAC7DhB,EAAegB,EAAW,iCAAkC,KAE9D,MAAM8M,EAAchN,EAAO2J,MAAQ3J,EAAO2J,KAAKC,KAAO,GAAKpK,EAAOmK,KAQlE,IAAIsD,EAPAD,EACFxN,EAAOmK,KAAKuD,WAAWhE,GACd1J,EAAOmK,MAChBnK,EAAOmK,KAAKwD,cAKd,MAAMC,EAAgD,SAAzBpN,EAAOuJ,eAA4BvJ,EAAOqN,aAAe7V,OAAOI,KAAKoI,EAAOqN,aAAaxR,QAAO/D,QACnE,IAA1CkI,EAAOqN,YAAYvV,GAAKyR,gBACrCxR,OAAS,EACZ,IAAK,IAAIqG,EAAI,EAAGA,EAAIwN,EAAcxN,GAAK,EAAG,CAExC,IAAIkP,EAKJ,GANAL,EAAY,EAER/D,EAAO9K,KAAIkP,EAAQpE,EAAO9K,IAC1B4O,GACFxN,EAAOmK,KAAK4D,YAAYnP,EAAGkP,EAAOpE,IAEhCA,EAAO9K,IAAyC,SAAnC4E,EAAasK,EAAO,WAArC,CAEA,GAA6B,SAAzBtN,EAAOuJ,cAA0B,CAC/B6D,IACFlE,EAAO9K,GAAGrF,MAAMyG,EAAO0L,kBAAkB,UAAY,IAEvD,MAAMsC,EAAc9S,iBAAiB4S,GAC/BG,EAAmBH,EAAMvU,MAAM6D,UAC/B8Q,EAAyBJ,EAAMvU,MAAM8D,gBAO3C,GANI4Q,IACFH,EAAMvU,MAAM6D,UAAY,QAEtB8Q,IACFJ,EAAMvU,MAAM8D,gBAAkB,QAE5BmD,EAAO2N,aACTV,EAAYzN,EAAOkL,eAAiB7G,EAAiByJ,EAAO,SAAS,GAAQzJ,EAAiByJ,EAAO,UAAU,OAC1G,CAEL,MAAMnI,EAAQ6F,EAA0BwC,EAAa,SAC/CI,EAAc5C,EAA0BwC,EAAa,gBACrDK,EAAe7C,EAA0BwC,EAAa,iBACtDd,EAAa1B,EAA0BwC,EAAa,eACpDb,EAAc3B,EAA0BwC,EAAa,gBACrDM,EAAYN,EAAY7S,iBAAiB,cAC/C,GAAImT,GAA2B,eAAdA,EACfb,EAAY9H,EAAQuH,EAAaC,MAC5B,CACL,MAAMnC,YACJA,EAAWxG,YACXA,GACEsJ,EACJL,EAAY9H,EAAQyI,EAAcC,EAAenB,EAAaC,GAAe3I,EAAcwG,EAC7F,CACF,CACIiD,IACFH,EAAMvU,MAAM6D,UAAY6Q,GAEtBC,IACFJ,EAAMvU,MAAM8D,gBAAkB6Q,GAE5B1N,EAAO2N,eAAcV,EAAYtM,KAAKoN,MAAMd,GAClD,MACEA,GAAa7B,GAAcpL,EAAOuJ,cAAgB,GAAK+C,GAAgBtM,EAAOuJ,cAC1EvJ,EAAO2N,eAAcV,EAAYtM,KAAKoN,MAAMd,IAC5C/D,EAAO9K,KACT8K,EAAO9K,GAAGrF,MAAMyG,EAAO0L,kBAAkB,UAAY,GAAG+B,OAGxD/D,EAAO9K,KACT8K,EAAO9K,GAAG4P,gBAAkBf,GAE9BlB,EAAgBtI,KAAKwJ,GACjBjN,EAAO8M,gBACTP,EAAgBA,EAAgBU,EAAY,EAAIT,EAAgB,EAAIF,EAC9C,IAAlBE,GAA6B,IAANpO,IAASmO,EAAgBA,EAAgBnB,EAAa,EAAIkB,GAC3E,IAANlO,IAASmO,EAAgBA,EAAgBnB,EAAa,EAAIkB,GAC1D3L,KAAKsN,IAAI1B,GAAiB,OAAUA,EAAgB,GACpDvM,EAAO2N,eAAcpB,EAAgB5L,KAAKoN,MAAMxB,IAChDvE,EAAQhI,EAAOkO,gBAAmB,GAAGrC,EAASpI,KAAK8I,GACvDT,EAAWrI,KAAK8I,KAEZvM,EAAO2N,eAAcpB,EAAgB5L,KAAKoN,MAAMxB,KAC/CvE,EAAQrH,KAAKE,IAAIrB,EAAOQ,OAAOmO,mBAAoBnG,IAAUxI,EAAOQ,OAAOkO,gBAAmB,GAAGrC,EAASpI,KAAK8I,GACpHT,EAAWrI,KAAK8I,GAChBA,EAAgBA,EAAgBU,EAAYX,GAE9C9M,EAAOiN,aAAeQ,EAAYX,EAClCE,EAAgBS,EAChBjF,GAAS,CArE2D,CAsEtE,CAaA,GAZAxI,EAAOiN,YAAc9L,KAAKC,IAAIpB,EAAOiN,YAAarB,GAAcc,EAC5DZ,GAAOC,IAA+B,UAAlBvL,EAAOoO,QAAwC,cAAlBpO,EAAOoO,UAC1DlO,EAAUnH,MAAMoM,MAAQ,GAAG3F,EAAOiN,YAAcH,OAE9CtM,EAAOqO,iBACTnO,EAAUnH,MAAMyG,EAAO0L,kBAAkB,UAAY,GAAG1L,EAAOiN,YAAcH,OAE3EU,GACFxN,EAAOmK,KAAK2E,kBAAkBrB,EAAWpB,IAItC7L,EAAO8M,eAAgB,CAC1B,MAAMyB,EAAgB,GACtB,IAAK,IAAInQ,EAAI,EAAGA,EAAIyN,EAAS9T,OAAQqG,GAAK,EAAG,CAC3C,IAAIoQ,EAAiB3C,EAASzN,GAC1B4B,EAAO2N,eAAca,EAAiB7N,KAAKoN,MAAMS,IACjD3C,EAASzN,IAAMoB,EAAOiN,YAAcrB,GACtCmD,EAAc9K,KAAK+K,EAEvB,CACA3C,EAAW0C,EACP5N,KAAKoN,MAAMvO,EAAOiN,YAAcrB,GAAczK,KAAKoN,MAAMlC,EAASA,EAAS9T,OAAS,IAAM,GAC5F8T,EAASpI,KAAKjE,EAAOiN,YAAcrB,EAEvC,CACA,GAAII,GAAaxL,EAAOoK,KAAM,CAC5B,MAAMtG,EAAOiI,EAAgB,GAAKO,EAClC,GAAItM,EAAOkO,eAAiB,EAAG,CAC7B,MAAMO,EAAS9N,KAAK8I,MAAMjK,EAAOiM,QAAQiD,aAAelP,EAAOiM,QAAQkD,aAAe3O,EAAOkO,gBACvFU,EAAY9K,EAAO9D,EAAOkO,eAChC,IAAK,IAAI9P,EAAI,EAAGA,EAAIqQ,EAAQrQ,GAAK,EAC/ByN,EAASpI,KAAKoI,EAASA,EAAS9T,OAAS,GAAK6W,EAElD,CACA,IAAK,IAAIxQ,EAAI,EAAGA,EAAIoB,EAAOiM,QAAQiD,aAAelP,EAAOiM,QAAQkD,YAAavQ,GAAK,EACnD,IAA1B4B,EAAOkO,gBACTrC,EAASpI,KAAKoI,EAASA,EAAS9T,OAAS,GAAK+L,GAEhDgI,EAAWrI,KAAKqI,EAAWA,EAAW/T,OAAS,GAAK+L,GACpDtE,EAAOiN,aAAe3I,CAE1B,CAEA,GADwB,IAApB+H,EAAS9T,SAAc8T,EAAW,CAAC,IAClB,IAAjBS,EAAoB,CACtB,MAAMxU,EAAM0H,EAAOkL,gBAAkBY,EAAM,aAAe9L,EAAO0L,kBAAkB,eACnFhC,EAAOrN,QAAO,CAACmO,EAAG6E,MACX7O,EAAO+M,UAAW/M,EAAOoK,OAC1ByE,IAAe3F,EAAOnR,OAAS,IAIlCF,SAAQwJ,IACTA,EAAQtI,MAAMjB,GAAO,GAAGwU,KAAgB,GAE5C,CACA,GAAItM,EAAO8M,gBAAkB9M,EAAO8O,qBAAsB,CACxD,IAAIC,EAAgB,EACpBhD,EAAgBlU,SAAQmX,IACtBD,GAAiBC,GAAkB1C,GAAgB,EAAE,IAEvDyC,GAAiBzC,EACjB,MAAM2C,EAAUF,EAAgB3D,EAChCS,EAAWA,EAAS/O,KAAIoS,GAClBA,GAAQ,GAAWlD,EACnBkD,EAAOD,EAAgBA,EAAU/C,EAC9BgD,GAEX,CACA,GAAIlP,EAAOmP,yBAA0B,CACnC,IAAIJ,EAAgB,EAKpB,GAJAhD,EAAgBlU,SAAQmX,IACtBD,GAAiBC,GAAkB1C,GAAgB,EAAE,IAEvDyC,GAAiBzC,EACbyC,EAAgB3D,EAAY,CAC9B,MAAMgE,GAAmBhE,EAAa2D,GAAiB,EACvDlD,EAAShU,SAAQ,CAACqX,EAAMG,KACtBxD,EAASwD,GAAaH,EAAOE,CAAe,IAE9CtD,EAAWjU,SAAQ,CAACqX,EAAMG,KACxBvD,EAAWuD,GAAaH,EAAOE,CAAe,GAElD,CACF,CAOA,GANA5X,OAAOsT,OAAOtL,EAAQ,CACpB0J,SACA2C,WACAC,aACAC,oBAEE/L,EAAO8M,gBAAkB9M,EAAO+M,UAAY/M,EAAO8O,qBAAsB,CAC3E5P,EAAegB,EAAW,mCAAuC2L,EAAS,GAAb,MAC7D3M,EAAegB,EAAW,iCAAqCV,EAAOsE,KAAO,EAAIiI,EAAgBA,EAAgBhU,OAAS,GAAK,EAAnE,MAC5D,MAAMuX,GAAiB9P,EAAOqM,SAAS,GACjC0D,GAAmB/P,EAAOsM,WAAW,GAC3CtM,EAAOqM,SAAWrM,EAAOqM,SAAS/O,KAAI0S,GAAKA,EAAIF,IAC/C9P,EAAOsM,WAAatM,EAAOsM,WAAWhP,KAAI0S,GAAKA,EAAID,GACrD,CAeA,GAdI3D,IAAiBD,GACnBnM,EAAO2I,KAAK,sBAEV0D,EAAS9T,SAAWqU,IAClB5M,EAAOQ,OAAOyP,eAAejQ,EAAOkQ,gBACxClQ,EAAO2I,KAAK,yBAEV2D,EAAW/T,SAAWsU,GACxB7M,EAAO2I,KAAK,0BAEVnI,EAAO2P,qBACTnQ,EAAOoQ,qBAETpQ,EAAO2I,KAAK,mBACPqD,GAAcxL,EAAO+M,SAA8B,UAAlB/M,EAAOoO,QAAwC,SAAlBpO,EAAOoO,QAAoB,CAC5F,MAAMyB,EAAsB,GAAG7P,EAAO8P,wCAChCC,EAA6BvQ,EAAOrD,GAAG8F,UAAU+N,SAASH,GAC5DjE,GAAgB5L,EAAOiQ,wBACpBF,GAA4BvQ,EAAOrD,GAAG8F,UAAUC,IAAI2N,GAChDE,GACTvQ,EAAOrD,GAAG8F,UAAU+G,OAAO6G,EAE/B,CACF,EA4cEK,iBA1cF,SAA0BjQ,GACxB,MAAMT,EAAS/E,KACT0V,EAAe,GACf3E,EAAYhM,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAC1D,IACItN,EADAgS,EAAY,EAEK,iBAAVnQ,EACTT,EAAO6Q,cAAcpQ,IACF,IAAVA,GACTT,EAAO6Q,cAAc7Q,EAAOQ,OAAOC,OAErC,MAAMqQ,EAAkBtI,GAClBwD,EACKhM,EAAO0J,OAAO1J,EAAO+Q,oBAAoBvI,IAE3CxI,EAAO0J,OAAOlB,GAGvB,GAAoC,SAAhCxI,EAAOQ,OAAOuJ,eAA4B/J,EAAOQ,OAAOuJ,cAAgB,EAC1E,GAAI/J,EAAOQ,OAAO8M,gBACftN,EAAOgR,eAAiB,IAAI3Y,SAAQyV,IACnC6C,EAAa1M,KAAK6J,EAAM,SAG1B,IAAKlP,EAAI,EAAGA,EAAIuC,KAAK8I,KAAKjK,EAAOQ,OAAOuJ,eAAgBnL,GAAK,EAAG,CAC9D,MAAM4J,EAAQxI,EAAOkK,YAActL,EACnC,GAAI4J,EAAQxI,EAAO0J,OAAOnR,SAAWyT,EAAW,MAChD2E,EAAa1M,KAAK6M,EAAgBtI,GACpC,MAGFmI,EAAa1M,KAAK6M,EAAgB9Q,EAAOkK,cAI3C,IAAKtL,EAAI,EAAGA,EAAI+R,EAAapY,OAAQqG,GAAK,EACxC,QAA+B,IAApB+R,EAAa/R,GAAoB,CAC1C,MAAMiH,EAAS8K,EAAa/R,GAAGqS,aAC/BL,EAAY/K,EAAS+K,EAAY/K,EAAS+K,CAC5C,EAIEA,GAA2B,IAAdA,KAAiB5Q,EAAOU,UAAUnH,MAAMsM,OAAS,GAAG+K,MACvE,EA+ZER,mBA7ZF,WACE,MAAMpQ,EAAS/E,KACTyO,EAAS1J,EAAO0J,OAEhBwH,EAAclR,EAAOoJ,UAAYpJ,EAAOkL,eAAiBlL,EAAOU,UAAUyQ,WAAanR,EAAOU,UAAU0Q,UAAY,EAC1H,IAAK,IAAIxS,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EACtC8K,EAAO9K,GAAGyS,mBAAqBrR,EAAOkL,eAAiBxB,EAAO9K,GAAGuS,WAAazH,EAAO9K,GAAGwS,WAAaF,EAAclR,EAAOsR,uBAE9H,EAsZEC,qBApZF,SAA8BnR,QACV,IAAdA,IACFA,EAAYnF,MAAQA,KAAKmF,WAAa,GAExC,MAAMJ,EAAS/E,KACTuF,EAASR,EAAOQ,QAChBkJ,OACJA,EACAmC,aAAcC,EAAGO,SACjBA,GACErM,EACJ,GAAsB,IAAlB0J,EAAOnR,OAAc,YACkB,IAAhCmR,EAAO,GAAG2H,mBAAmCrR,EAAOoQ,qBAC/D,IAAIoB,GAAgBpR,EAChB0L,IAAK0F,EAAepR,GAGxBsJ,EAAOrR,SAAQwJ,IACbA,EAAQY,UAAU+G,OAAOhJ,EAAOiR,kBAAmBjR,EAAOkR,uBAAuB,IAEnF1R,EAAO2R,qBAAuB,GAC9B3R,EAAOgR,cAAgB,GACvB,IAAIlE,EAAetM,EAAOsM,aACE,iBAAjBA,GAA6BA,EAAa5N,QAAQ,MAAQ,EACnE4N,EAAe9O,WAAW8O,EAAatP,QAAQ,IAAK,KAAO,IAAMwC,EAAOsE,KACvC,iBAAjBwI,IAChBA,EAAe9O,WAAW8O,IAE5B,IAAK,IAAIlO,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAAG,CACzC,MAAMkP,EAAQpE,EAAO9K,GACrB,IAAIgT,EAAc9D,EAAMuD,kBACpB7Q,EAAO+M,SAAW/M,EAAO8M,iBAC3BsE,GAAelI,EAAO,GAAG2H,mBAE3B,MAAMQ,GAAiBL,GAAgBhR,EAAO8M,eAAiBtN,EAAO8R,eAAiB,GAAKF,IAAgB9D,EAAMU,gBAAkB1B,GAC9HiF,GAAyBP,EAAenF,EAAS,IAAM7L,EAAO8M,eAAiBtN,EAAO8R,eAAiB,GAAKF,IAAgB9D,EAAMU,gBAAkB1B,GACpJkF,IAAgBR,EAAeI,GAC/BK,EAAaD,EAAchS,EAAOuM,gBAAgB3N,GAClDsT,EAAiBF,GAAe,GAAKA,GAAehS,EAAOsE,KAAOtE,EAAOuM,gBAAgB3N,IAC7EoT,GAAe,GAAKA,EAAchS,EAAOsE,KAAO,GAAK2N,EAAa,GAAKA,GAAcjS,EAAOsE,MAAQ0N,GAAe,GAAKC,GAAcjS,EAAOsE,QAE7JtE,EAAOgR,cAAc/M,KAAK6J,GAC1B9N,EAAO2R,qBAAqB1N,KAAKrF,GACjC8K,EAAO9K,GAAG6D,UAAUC,IAAIlC,EAAOiR,oBAE7BS,GACFxI,EAAO9K,GAAG6D,UAAUC,IAAIlC,EAAOkR,wBAEjC5D,EAAM5M,SAAW4K,GAAO+F,EAAgBA,EACxC/D,EAAMqE,iBAAmBrG,GAAOiG,EAAwBA,CAC1D,CACF,EAkWEK,eAhWF,SAAwBhS,GACtB,MAAMJ,EAAS/E,KACf,QAAyB,IAAdmF,EAA2B,CACpC,MAAMiS,EAAarS,EAAO6L,cAAgB,EAAI,EAE9CzL,EAAYJ,GAAUA,EAAOI,WAAaJ,EAAOI,UAAYiS,GAAc,CAC7E,CACA,MAAM7R,EAASR,EAAOQ,OAChB8R,EAAiBtS,EAAOuS,eAAiBvS,EAAO8R,eACtD,IAAI5Q,SACFA,EAAQsR,YACRA,EAAWC,MACXA,EAAKC,aACLA,GACE1S,EACJ,MAAM2S,EAAeH,EACfI,EAASH,EACf,GAAuB,IAAnBH,EACFpR,EAAW,EACXsR,GAAc,EACdC,GAAQ,MACH,CACLvR,GAAYd,EAAYJ,EAAO8R,gBAAkBQ,EACjD,MAAMO,EAAqB1R,KAAKsN,IAAIrO,EAAYJ,EAAO8R,gBAAkB,EACnEgB,EAAe3R,KAAKsN,IAAIrO,EAAYJ,EAAOuS,gBAAkB,EACnEC,EAAcK,GAAsB3R,GAAY,EAChDuR,EAAQK,GAAgB5R,GAAY,EAChC2R,IAAoB3R,EAAW,GAC/B4R,IAAc5R,EAAW,EAC/B,CACA,GAAIV,EAAOoK,KAAM,CACf,MAAMmI,EAAkB/S,EAAO+Q,oBAAoB,GAC7CiC,EAAiBhT,EAAO+Q,oBAAoB/Q,EAAO0J,OAAOnR,OAAS,GACnE0a,EAAsBjT,EAAOsM,WAAWyG,GACxCG,EAAqBlT,EAAOsM,WAAW0G,GACvCG,EAAenT,EAAOsM,WAAWtM,EAAOsM,WAAW/T,OAAS,GAC5D6a,EAAejS,KAAKsN,IAAIrO,GAE5BsS,EADEU,GAAgBH,GACFG,EAAeH,GAAuBE,GAEtCC,EAAeD,EAAeD,GAAsBC,EAElET,EAAe,IAAGA,GAAgB,EACxC,CACA1a,OAAOsT,OAAOtL,EAAQ,CACpBkB,WACAwR,eACAF,cACAC,WAEEjS,EAAO2P,qBAAuB3P,EAAO8M,gBAAkB9M,EAAO6S,aAAYrT,EAAOuR,qBAAqBnR,GACtGoS,IAAgBG,GAClB3S,EAAO2I,KAAK,yBAEV8J,IAAUG,GACZ5S,EAAO2I,KAAK,oBAEVgK,IAAiBH,GAAeI,IAAWH,IAC7CzS,EAAO2I,KAAK,YAEd3I,EAAO2I,KAAK,WAAYzH,EAC1B,EAoSEoS,oBAlSF,WACE,MAAMtT,EAAS/E,MACTyO,OACJA,EAAMlJ,OACNA,EAAMmL,SACNA,EAAQzB,YACRA,GACElK,EACEgM,EAAYhM,EAAOiM,SAAWzL,EAAOyL,QAAQC,QAC7CsB,EAAcxN,EAAOmK,MAAQ3J,EAAO2J,MAAQ3J,EAAO2J,KAAKC,KAAO,EAC/DmJ,EAAmBtR,GAChBF,EAAgB4J,EAAU,IAAInL,EAAO6I,aAAapH,kBAAyBA,KAAY,GAKhG,IAAIuR,EACAC,EACAC,EACJ,GANAhK,EAAOrR,SAAQwJ,IACbA,EAAQY,UAAU+G,OAAOhJ,EAAOmT,iBAAkBnT,EAAOoT,eAAgBpT,EAAOqT,eAAe,IAK7F7H,EACF,GAAIxL,EAAOoK,KAAM,CACf,IAAIyE,EAAanF,EAAclK,EAAOiM,QAAQiD,aAC1CG,EAAa,IAAGA,EAAarP,EAAOiM,QAAQvC,OAAOnR,OAAS8W,GAC5DA,GAAcrP,EAAOiM,QAAQvC,OAAOnR,SAAQ8W,GAAcrP,EAAOiM,QAAQvC,OAAOnR,QACpFib,EAAcD,EAAiB,6BAA6BlE,MAC9D,MACEmE,EAAcD,EAAiB,6BAA6BrJ,YAG1DsD,GACFgG,EAAc9J,EAAOrN,QAAOwF,GAAWA,EAAQ4I,SAAWP,IAAa,GACvEwJ,EAAYhK,EAAOrN,QAAOwF,GAAWA,EAAQ4I,SAAWP,EAAc,IAAG,GACzEuJ,EAAY/J,EAAOrN,QAAOwF,GAAWA,EAAQ4I,SAAWP,EAAc,IAAG,IAEzEsJ,EAAc9J,EAAOQ,GAGrBsJ,IAEFA,EAAY/Q,UAAUC,IAAIlC,EAAOmT,kBAC7BnG,GACEkG,GACFA,EAAUjR,UAAUC,IAAIlC,EAAOoT,gBAE7BH,GACFA,EAAUhR,UAAUC,IAAIlC,EAAOqT,kBAIjCH,EAh6BN,SAAwB/W,EAAIsF,GAC1B,MAAM6R,EAAU,GAChB,KAAOnX,EAAGoX,oBAAoB,CAC5B,MAAMC,EAAOrX,EAAGoX,mBACZ9R,EACE+R,EAAK9R,QAAQD,IAAW6R,EAAQ7P,KAAK+P,GACpCF,EAAQ7P,KAAK+P,GACpBrX,EAAKqX,CACP,CACA,OAAOF,CACT,CAs5BkBG,CAAeT,EAAa,IAAIhT,EAAO6I,4BAA4B,GAC3E7I,EAAOoK,OAAS8I,IAClBA,EAAYhK,EAAO,IAEjBgK,GACFA,EAAUjR,UAAUC,IAAIlC,EAAOoT,gBAIjCH,EAp7BN,SAAwB9W,EAAIsF,GAC1B,MAAMiS,EAAU,GAChB,KAAOvX,EAAGwX,wBAAwB,CAChC,MAAMC,EAAOzX,EAAGwX,uBACZlS,EACEmS,EAAKlS,QAAQD,IAAWiS,EAAQjQ,KAAKmQ,GACpCF,EAAQjQ,KAAKmQ,GACpBzX,EAAKyX,CACP,CACA,OAAOF,CACT,CA06BkBG,CAAeb,EAAa,IAAIhT,EAAO6I,4BAA4B,GAC3E7I,EAAOoK,MAAuB,KAAd6I,IAClBA,EAAY/J,EAAOA,EAAOnR,OAAS,IAEjCkb,GACFA,EAAUhR,UAAUC,IAAIlC,EAAOqT,kBAIrC7T,EAAOsU,mBACT,EA+NEC,kBAtIF,SAA2BC,GACzB,MAAMxU,EAAS/E,KACTmF,EAAYJ,EAAO6L,aAAe7L,EAAOI,WAAaJ,EAAOI,WAC7DiM,SACJA,EAAQ7L,OACRA,EACA0J,YAAauK,EACb5J,UAAW6J,EACX7E,UAAW8E,GACT3U,EACJ,IACI6P,EADA3F,EAAcsK,EAElB,MAAMI,EAAsBC,IAC1B,IAAIhK,EAAYgK,EAAS7U,EAAOiM,QAAQiD,aAOxC,OANIrE,EAAY,IACdA,EAAY7K,EAAOiM,QAAQvC,OAAOnR,OAASsS,GAEzCA,GAAa7K,EAAOiM,QAAQvC,OAAOnR,SACrCsS,GAAa7K,EAAOiM,QAAQvC,OAAOnR,QAE9BsS,CAAS,EAKlB,QAH2B,IAAhBX,IACTA,EA/CJ,SAAmClK,GACjC,MAAMsM,WACJA,EAAU9L,OACVA,GACER,EACEI,EAAYJ,EAAO6L,aAAe7L,EAAOI,WAAaJ,EAAOI,UACnE,IAAI8J,EACJ,IAAK,IAAItL,EAAI,EAAGA,EAAI0N,EAAW/T,OAAQqG,GAAK,OACT,IAAtB0N,EAAW1N,EAAI,GACpBwB,GAAakM,EAAW1N,IAAMwB,EAAYkM,EAAW1N,EAAI,IAAM0N,EAAW1N,EAAI,GAAK0N,EAAW1N,IAAM,EACtGsL,EAActL,EACLwB,GAAakM,EAAW1N,IAAMwB,EAAYkM,EAAW1N,EAAI,KAClEsL,EAActL,EAAI,GAEXwB,GAAakM,EAAW1N,KACjCsL,EAActL,GAOlB,OAHI4B,EAAOsU,sBACL5K,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,GAEpEA,CACT,CAwBkB6K,CAA0B/U,IAEtCqM,EAASnN,QAAQkB,IAAc,EACjCyP,EAAYxD,EAASnN,QAAQkB,OACxB,CACL,MAAM4U,EAAO7T,KAAKE,IAAIb,EAAOmO,mBAAoBzE,GACjD2F,EAAYmF,EAAO7T,KAAKoN,OAAOrE,EAAc8K,GAAQxU,EAAOkO,eAC9D,CAEA,GADImB,GAAaxD,EAAS9T,SAAQsX,EAAYxD,EAAS9T,OAAS,GAC5D2R,IAAgBuK,IAAkBzU,EAAOQ,OAAOoK,KAKlD,YAJIiF,IAAc8E,IAChB3U,EAAO6P,UAAYA,EACnB7P,EAAO2I,KAAK,qBAIhB,GAAIuB,IAAgBuK,GAAiBzU,EAAOQ,OAAOoK,MAAQ5K,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAEjG,YADAlM,EAAO6K,UAAY+J,EAAoB1K,IAGzC,MAAMsD,EAAcxN,EAAOmK,MAAQ3J,EAAO2J,MAAQ3J,EAAO2J,KAAKC,KAAO,EAGrE,IAAIS,EACJ,GAAI7K,EAAOiM,SAAWzL,EAAOyL,QAAQC,SAAW1L,EAAOoK,KACrDC,EAAY+J,EAAoB1K,QAC3B,GAAIsD,EAAa,CACtB,MAAMyH,EAAqBjV,EAAO0J,OAAOrN,QAAOwF,GAAWA,EAAQ4I,SAAWP,IAAa,GAC3F,IAAIgL,EAAmB9J,SAAS6J,EAAmBE,aAAa,2BAA4B,IACxFpO,OAAOsE,MAAM6J,KACfA,EAAmB/T,KAAKC,IAAIpB,EAAO0J,OAAOxK,QAAQ+V,GAAqB,IAEzEpK,EAAY1J,KAAKoN,MAAM2G,EAAmB1U,EAAO2J,KAAKC,KACxD,MAAO,GAAIpK,EAAO0J,OAAOQ,GAAc,CACrC,MAAMmF,EAAarP,EAAO0J,OAAOQ,GAAaiL,aAAa,2BAEzDtK,EADEwE,EACUjE,SAASiE,EAAY,IAErBnF,CAEhB,MACEW,EAAYX,EAEdlS,OAAOsT,OAAOtL,EAAQ,CACpB2U,oBACA9E,YACA6E,oBACA7J,YACA4J,gBACAvK,gBAEElK,EAAOoV,aACTxL,EAAQ5J,GAEVA,EAAO2I,KAAK,qBACZ3I,EAAO2I,KAAK,oBACR3I,EAAOoV,aAAepV,EAAOQ,OAAO6U,sBAClCX,IAAsB7J,GACxB7K,EAAO2I,KAAK,mBAEd3I,EAAO2I,KAAK,eAEhB,EAkDE2M,mBAhDF,SAA4B3Y,EAAI4Y,GAC9B,MAAMvV,EAAS/E,KACTuF,EAASR,EAAOQ,OACtB,IAAIsN,EAAQnR,EAAGwM,QAAQ,IAAI3I,EAAO6I,6BAC7ByE,GAAS9N,EAAOoJ,WAAamM,GAAQA,EAAKhd,OAAS,GAAKgd,EAAK5O,SAAShK,IACzE,IAAI4Y,EAAKjX,MAAMiX,EAAKrW,QAAQvC,GAAM,EAAG4Y,EAAKhd,SAASF,SAAQmd,KACpD1H,GAAS0H,EAAOtT,SAAWsT,EAAOtT,QAAQ,IAAI1B,EAAO6I,8BACxDyE,EAAQ0H,EACV,IAGJ,IACInG,EADAoG,GAAa,EAEjB,GAAI3H,EACF,IAAK,IAAIlP,EAAI,EAAGA,EAAIoB,EAAO0J,OAAOnR,OAAQqG,GAAK,EAC7C,GAAIoB,EAAO0J,OAAO9K,KAAOkP,EAAO,CAC9B2H,GAAa,EACbpG,EAAazQ,EACb,KACF,CAGJ,IAAIkP,IAAS2H,EAUX,OAFAzV,EAAO0V,kBAAehX,OACtBsB,EAAO2V,kBAAejX,GARtBsB,EAAO0V,aAAe5H,EAClB9N,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAC1ClM,EAAO2V,aAAevK,SAAS0C,EAAMqH,aAAa,2BAA4B,IAE9EnV,EAAO2V,aAAetG,EAOtB7O,EAAOoV,0BAA+ClX,IAAxBsB,EAAO2V,cAA8B3V,EAAO2V,eAAiB3V,EAAOkK,aACpGlK,EAAO4V,qBAEX,GA8KA,IAAIxV,EAAY,CACd1D,aAjKF,SAA4BE,QACb,IAATA,IACFA,EAAO3B,KAAKiQ,eAAiB,IAAM,KAErC,MACM1K,OACJA,EACAqL,aAAcC,EAAG1L,UACjBA,EAASM,UACTA,GALazF,KAOf,GAAIuF,EAAOqV,iBACT,OAAO/J,GAAO1L,EAAYA,EAE5B,GAAII,EAAO+M,QACT,OAAOnN,EAET,IAAI0V,EAAmBpZ,EAAagE,EAAW9D,GAG/C,OAFAkZ,GAde7a,KAcYqW,wBACvBxF,IAAKgK,GAAoBA,GACtBA,GAAoB,CAC7B,EA6IEC,aA3IF,SAAsB3V,EAAW4V,GAC/B,MAAMhW,EAAS/E,MAEb4Q,aAAcC,EAAGtL,OACjBA,EAAME,UACNA,EAASQ,SACTA,GACElB,EACJ,IA0BIiW,EA1BAC,EAAI,EACJC,EAAI,EAEJnW,EAAOkL,eACTgL,EAAIpK,GAAO1L,EAAYA,EAEvB+V,EAAI/V,EAEFI,EAAO2N,eACT+H,EAAI/U,KAAKoN,MAAM2H,GACfC,EAAIhV,KAAKoN,MAAM4H,IAEjBnW,EAAOoW,kBAAoBpW,EAAOI,UAClCJ,EAAOI,UAAYJ,EAAOkL,eAAiBgL,EAAIC,EAC3C3V,EAAO+M,QACT7M,EAAUV,EAAOkL,eAAiB,aAAe,aAAelL,EAAOkL,gBAAkBgL,GAAKC,EACpF3V,EAAOqV,mBACb7V,EAAOkL,eACTgL,GAAKlW,EAAOsR,wBAEZ6E,GAAKnW,EAAOsR,wBAEd5Q,EAAUnH,MAAM6D,UAAY,eAAe8Y,QAAQC,aAKrD,MAAM7D,EAAiBtS,EAAOuS,eAAiBvS,EAAO8R,eAEpDmE,EADqB,IAAnB3D,EACY,GAEClS,EAAYJ,EAAO8R,gBAAkBQ,EAElD2D,IAAgB/U,GAClBlB,EAAOoS,eAAehS,GAExBJ,EAAO2I,KAAK,eAAgB3I,EAAOI,UAAW4V,EAChD,EA+FElE,aA7FF,WACE,OAAQ7W,KAAKoR,SAAS,EACxB,EA4FEkG,aA1FF,WACE,OAAQtX,KAAKoR,SAASpR,KAAKoR,SAAS9T,OAAS,EAC/C,EAyFE8d,YAvFF,SAAqBjW,EAAWK,EAAO6V,EAAcC,EAAiBC,QAClD,IAAdpW,IACFA,EAAY,QAEA,IAAVK,IACFA,EAAQxF,KAAKuF,OAAOC,YAED,IAAjB6V,IACFA,GAAe,QAEO,IAApBC,IACFA,GAAkB,GAEpB,MAAMvW,EAAS/E,MACTuF,OACJA,EAAME,UACNA,GACEV,EACJ,GAAIA,EAAOyW,WAAajW,EAAOkW,+BAC7B,OAAO,EAET,MAAM5E,EAAe9R,EAAO8R,eACtBS,EAAevS,EAAOuS,eAC5B,IAAIoE,EAKJ,GAJiDA,EAA7CJ,GAAmBnW,EAAY0R,EAA6BA,EAAsByE,GAAmBnW,EAAYmS,EAA6BA,EAAiCnS,EAGnLJ,EAAOoS,eAAeuE,GAClBnW,EAAO+M,QAAS,CAClB,MAAMqJ,EAAM5W,EAAOkL,eACnB,GAAc,IAAVzK,EACFC,EAAUkW,EAAM,aAAe,cAAgBD,MAC1C,CACL,IAAK3W,EAAOyE,QAAQI,aAMlB,OALA/E,EAAqB,CACnBE,SACAC,gBAAiB0W,EACjBzW,KAAM0W,EAAM,OAAS,SAEhB,EAETlW,EAAUgB,SAAS,CACjB,CAACkV,EAAM,OAAS,QAASD,EACzBE,SAAU,UAEd,CACA,OAAO,CACT,CAgCA,OA/Bc,IAAVpW,GACFT,EAAO6Q,cAAc,GACrB7Q,EAAO+V,aAAaY,GAChBL,IACFtW,EAAO2I,KAAK,wBAAyBlI,EAAO+V,GAC5CxW,EAAO2I,KAAK,oBAGd3I,EAAO6Q,cAAcpQ,GACrBT,EAAO+V,aAAaY,GAChBL,IACFtW,EAAO2I,KAAK,wBAAyBlI,EAAO+V,GAC5CxW,EAAO2I,KAAK,oBAET3I,EAAOyW,YACVzW,EAAOyW,WAAY,EACdzW,EAAO8W,oCACV9W,EAAO8W,kCAAoC,SAAuB1S,GAC3DpE,IAAUA,EAAO0H,WAClBtD,EAAElM,SAAW+C,OACjB+E,EAAOU,UAAU/H,oBAAoB,gBAAiBqH,EAAO8W,mCAC7D9W,EAAO8W,kCAAoC,YACpC9W,EAAO8W,kCACVR,GACFtW,EAAO2I,KAAK,iBAEhB,GAEF3I,EAAOU,UAAUhI,iBAAiB,gBAAiBsH,EAAO8W,sCAGvD,CACT,GAmBA,SAASC,EAAehX,GACtB,IAAIC,OACFA,EAAMsW,aACNA,EAAYU,UACZA,EAASC,KACTA,GACElX,EACJ,MAAMmK,YACJA,EAAWuK,cACXA,GACEzU,EACJ,IAAIa,EAAMmW,EAKV,GAJKnW,IAC8BA,EAA7BqJ,EAAcuK,EAAqB,OAAgBvK,EAAcuK,EAAqB,OAAkB,SAE9GzU,EAAO2I,KAAK,aAAasO,KACrBX,GAAgBpM,IAAgBuK,EAAe,CACjD,GAAY,UAAR5T,EAEF,YADAb,EAAO2I,KAAK,uBAAuBsO,KAGrCjX,EAAO2I,KAAK,wBAAwBsO,KACxB,SAARpW,EACFb,EAAO2I,KAAK,sBAAsBsO,KAElCjX,EAAO2I,KAAK,sBAAsBsO,IAEtC,CACF,CA+cA,IAAInJ,EAAQ,CACVoJ,QAjaF,SAAiB1O,EAAO/H,EAAO6V,EAAcE,EAAUW,QACvC,IAAV3O,IACFA,EAAQ,QAEI,IAAV/H,IACFA,EAAQxF,KAAKuF,OAAOC,YAED,IAAjB6V,IACFA,GAAe,GAEI,iBAAV9N,IACTA,EAAQ4C,SAAS5C,EAAO,KAE1B,MAAMxI,EAAS/E,KACf,IAAIoU,EAAa7G,EACb6G,EAAa,IAAGA,EAAa,GACjC,MAAM7O,OACJA,EAAM6L,SACNA,EAAQC,WACRA,EAAUmI,cACVA,EAAavK,YACbA,EACA2B,aAAcC,EAAGpL,UACjBA,EAASwL,QACTA,GACElM,EACJ,GAAIA,EAAOyW,WAAajW,EAAOkW,iCAAmCxK,IAAYsK,IAAaW,EACzF,OAAO,EAET,MAAMnC,EAAO7T,KAAKE,IAAIrB,EAAOQ,OAAOmO,mBAAoBU,GACxD,IAAIQ,EAAYmF,EAAO7T,KAAKoN,OAAOc,EAAa2F,GAAQhV,EAAOQ,OAAOkO,gBAClEmB,GAAaxD,EAAS9T,SAAQsX,EAAYxD,EAAS9T,OAAS,GAChE,MAAM6H,GAAaiM,EAASwD,GAE5B,GAAIrP,EAAOsU,oBACT,IAAK,IAAIlW,EAAI,EAAGA,EAAI0N,EAAW/T,OAAQqG,GAAK,EAAG,CAC7C,MAAMwY,GAAuBjW,KAAKoN,MAAkB,IAAZnO,GAClCiX,EAAiBlW,KAAKoN,MAAsB,IAAhBjC,EAAW1N,IACvC0Y,EAAqBnW,KAAKoN,MAA0B,IAApBjC,EAAW1N,EAAI,SACpB,IAAtB0N,EAAW1N,EAAI,GACpBwY,GAAuBC,GAAkBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAC9HhI,EAAazQ,EACJwY,GAAuBC,GAAkBD,EAAsBE,IACxEjI,EAAazQ,EAAI,GAEVwY,GAAuBC,IAChChI,EAAazQ,EAEjB,CAGF,GAAIoB,EAAOoV,aAAe/F,IAAenF,EAAa,CACpD,IAAKlK,EAAOuX,iBAAmBzL,EAAM1L,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAO8R,eAAiB1R,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAO8R,gBAC1J,OAAO,EAET,IAAK9R,EAAOwX,gBAAkBpX,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOuS,iBAC1ErI,GAAe,KAAOmF,EACzB,OAAO,CAGb,CAOA,IAAI2H,EAIJ,GAVI3H,KAAgBoF,GAAiB,IAAM6B,GACzCtW,EAAO2I,KAAK,0BAId3I,EAAOoS,eAAehS,GAEQ4W,EAA1B3H,EAAanF,EAAyB,OAAgBmF,EAAanF,EAAyB,OAAwB,QAGpH4B,IAAQ1L,IAAcJ,EAAOI,YAAc0L,GAAO1L,IAAcJ,EAAOI,UAczE,OAbAJ,EAAOuU,kBAAkBlF,GAErB7O,EAAO6S,YACTrT,EAAO0Q,mBAET1Q,EAAOsT,sBACe,UAAlB9S,EAAOoO,QACT5O,EAAO+V,aAAa3V,GAEJ,UAAd4W,IACFhX,EAAOyX,gBAAgBnB,EAAcU,GACrChX,EAAO0X,cAAcpB,EAAcU,KAE9B,EAET,GAAIxW,EAAO+M,QAAS,CAClB,MAAMqJ,EAAM5W,EAAOkL,eACbyM,EAAI7L,EAAM1L,GAAaA,EAC7B,GAAc,IAAVK,EAAa,CACf,MAAMuL,EAAYhM,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QACtDF,IACFhM,EAAOU,UAAUnH,MAAMoH,eAAiB,OACxCX,EAAO4X,mBAAoB,GAEzB5L,IAAchM,EAAO6X,2BAA6B7X,EAAOQ,OAAOsX,aAAe,GACjF9X,EAAO6X,2BAA4B,EACnCnc,uBAAsB,KACpBgF,EAAUkW,EAAM,aAAe,aAAee,CAAC,KAGjDjX,EAAUkW,EAAM,aAAe,aAAee,EAE5C3L,GACFtQ,uBAAsB,KACpBsE,EAAOU,UAAUnH,MAAMoH,eAAiB,GACxCX,EAAO4X,mBAAoB,CAAK,GAGtC,KAAO,CACL,IAAK5X,EAAOyE,QAAQI,aAMlB,OALA/E,EAAqB,CACnBE,SACAC,eAAgB0X,EAChBzX,KAAM0W,EAAM,OAAS,SAEhB,EAETlW,EAAUgB,SAAS,CACjB,CAACkV,EAAM,OAAS,OAAQe,EACxBd,SAAU,UAEd,CACA,OAAO,CACT,CAuBA,OAtBA7W,EAAO6Q,cAAcpQ,GACrBT,EAAO+V,aAAa3V,GACpBJ,EAAOuU,kBAAkBlF,GACzBrP,EAAOsT,sBACPtT,EAAO2I,KAAK,wBAAyBlI,EAAO+V,GAC5CxW,EAAOyX,gBAAgBnB,EAAcU,GACvB,IAAVvW,EACFT,EAAO0X,cAAcpB,EAAcU,GACzBhX,EAAOyW,YACjBzW,EAAOyW,WAAY,EACdzW,EAAO+X,gCACV/X,EAAO+X,8BAAgC,SAAuB3T,GACvDpE,IAAUA,EAAO0H,WAClBtD,EAAElM,SAAW+C,OACjB+E,EAAOU,UAAU/H,oBAAoB,gBAAiBqH,EAAO+X,+BAC7D/X,EAAO+X,8BAAgC,YAChC/X,EAAO+X,8BACd/X,EAAO0X,cAAcpB,EAAcU,GACrC,GAEFhX,EAAOU,UAAUhI,iBAAiB,gBAAiBsH,EAAO+X,iCAErD,CACT,EA6QEC,YA3QF,SAAqBxP,EAAO/H,EAAO6V,EAAcE,GAU/C,QATc,IAAVhO,IACFA,EAAQ,QAEI,IAAV/H,IACFA,EAAQxF,KAAKuF,OAAOC,YAED,IAAjB6V,IACFA,GAAe,GAEI,iBAAV9N,EAAoB,CAE7BA,EADsB4C,SAAS5C,EAAO,GAExC,CACA,MAAMxI,EAAS/E,KACTuS,EAAcxN,EAAOmK,MAAQnK,EAAOQ,OAAO2J,MAAQnK,EAAOQ,OAAO2J,KAAKC,KAAO,EACnF,IAAI6N,EAAWzP,EACf,GAAIxI,EAAOQ,OAAOoK,KAChB,GAAI5K,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAE1C+L,GAAsBjY,EAAOiM,QAAQiD,iBAChC,CACL,IAAIgJ,EACJ,GAAI1K,EAAa,CACf,MAAM6B,EAAa4I,EAAWjY,EAAOQ,OAAO2J,KAAKC,KACjD8N,EAAmBlY,EAAO0J,OAAOrN,QAAOwF,GAA6D,EAAlDA,EAAQsT,aAAa,6BAAmC9F,IAAY,GAAG5E,MAC5H,MACEyN,EAAmBlY,EAAO+Q,oBAAoBkH,GAEhD,MAAME,EAAO3K,EAAcrM,KAAK8I,KAAKjK,EAAO0J,OAAOnR,OAASyH,EAAOQ,OAAO2J,KAAKC,MAAQpK,EAAO0J,OAAOnR,QAC/F+U,eACJA,GACEtN,EAAOQ,OACX,IAAIuJ,EAAgB/J,EAAOQ,OAAOuJ,cACZ,SAAlBA,EACFA,EAAgB/J,EAAOgK,wBAEvBD,EAAgB5I,KAAK8I,KAAKjM,WAAWgC,EAAOQ,OAAOuJ,cAAe,KAC9DuD,GAAkBvD,EAAgB,GAAM,IAC1CA,GAAgC,IAGpC,IAAIqO,EAAcD,EAAOD,EAAmBnO,EAI5C,GAHIuD,IACF8K,EAAcA,GAAeF,EAAmB/W,KAAK8I,KAAKF,EAAgB,IAExEqO,EAAa,CACf,MAAMpB,EAAY1J,EAAiB4K,EAAmBlY,EAAOkK,YAAc,OAAS,OAASgO,EAAmBlY,EAAOkK,YAAc,EAAIlK,EAAOQ,OAAOuJ,cAAgB,OAAS,OAChL/J,EAAOqY,QAAQ,CACbrB,YACAE,SAAS,EACThC,iBAAgC,SAAd8B,EAAuBkB,EAAmB,EAAIA,EAAmBC,EAAO,EAC1FG,eAA8B,SAAdtB,EAAuBhX,EAAO6K,eAAYnM,GAE9D,CACA,GAAI8O,EAAa,CACf,MAAM6B,EAAa4I,EAAWjY,EAAOQ,OAAO2J,KAAKC,KACjD6N,EAAWjY,EAAO0J,OAAOrN,QAAOwF,GAA6D,EAAlDA,EAAQsT,aAAa,6BAAmC9F,IAAY,GAAG5E,MACpH,MACEwN,EAAWjY,EAAO+Q,oBAAoBkH,EAE1C,CAKF,OAHAvc,uBAAsB,KACpBsE,EAAOkX,QAAQe,EAAUxX,EAAO6V,EAAcE,EAAS,IAElDxW,CACT,EAyMEuY,UAtMF,SAAmB9X,EAAO6V,EAAcE,QACxB,IAAV/V,IACFA,EAAQxF,KAAKuF,OAAOC,YAED,IAAjB6V,IACFA,GAAe,GAEjB,MAAMtW,EAAS/E,MACTiR,QACJA,EAAO1L,OACPA,EAAMiW,UACNA,GACEzW,EACJ,IAAKkM,EAAS,OAAOlM,EACrB,IAAIwY,EAAWhY,EAAOkO,eACO,SAAzBlO,EAAOuJ,eAAsD,IAA1BvJ,EAAOkO,gBAAwBlO,EAAOiY,qBAC3ED,EAAWrX,KAAKC,IAAIpB,EAAOgK,qBAAqB,WAAW,GAAO,IAEpE,MAAM0O,EAAY1Y,EAAOkK,YAAc1J,EAAOmO,mBAAqB,EAAI6J,EACjExM,EAAYhM,EAAOiM,SAAWzL,EAAOyL,QAAQC,QACnD,GAAI1L,EAAOoK,KAAM,CACf,GAAI6L,IAAczK,GAAaxL,EAAOmY,oBAAqB,OAAO,EAMlE,GALA3Y,EAAOqY,QAAQ,CACbrB,UAAW,SAGbhX,EAAO4Y,YAAc5Y,EAAOU,UAAUuC,WAClCjD,EAAOkK,cAAgBlK,EAAO0J,OAAOnR,OAAS,GAAKiI,EAAO+M,QAI5D,OAHA7R,uBAAsB,KACpBsE,EAAOkX,QAAQlX,EAAOkK,YAAcwO,EAAWjY,EAAO6V,EAAcE,EAAS,KAExE,CAEX,CACA,OAAIhW,EAAOmK,QAAU3K,EAAOyS,MACnBzS,EAAOkX,QAAQ,EAAGzW,EAAO6V,EAAcE,GAEzCxW,EAAOkX,QAAQlX,EAAOkK,YAAcwO,EAAWjY,EAAO6V,EAAcE,EAC7E,EAiKEqC,UA9JF,SAAmBpY,EAAO6V,EAAcE,QACxB,IAAV/V,IACFA,EAAQxF,KAAKuF,OAAOC,YAED,IAAjB6V,IACFA,GAAe,GAEjB,MAAMtW,EAAS/E,MACTuF,OACJA,EAAM6L,SACNA,EAAQC,WACRA,EAAUT,aACVA,EAAYK,QACZA,EAAOuK,UACPA,GACEzW,EACJ,IAAKkM,EAAS,OAAOlM,EACrB,MAAMgM,EAAYhM,EAAOiM,SAAWzL,EAAOyL,QAAQC,QACnD,GAAI1L,EAAOoK,KAAM,CACf,GAAI6L,IAAczK,GAAaxL,EAAOmY,oBAAqB,OAAO,EAClE3Y,EAAOqY,QAAQ,CACbrB,UAAW,SAGbhX,EAAO4Y,YAAc5Y,EAAOU,UAAUuC,UACxC,CAEA,SAAS6V,EAAUC,GACjB,OAAIA,EAAM,GAAW5X,KAAKoN,MAAMpN,KAAKsN,IAAIsK,IAClC5X,KAAKoN,MAAMwK,EACpB,CACA,MAAM3B,EAAsB0B,EALVjN,EAAe7L,EAAOI,WAAaJ,EAAOI,WAMtD4Y,EAAqB3M,EAAS/O,KAAIyb,GAAOD,EAAUC,KACzD,IAAIE,EAAW5M,EAAS2M,EAAmB9Z,QAAQkY,GAAuB,GAC1E,QAAwB,IAAb6B,GAA4BzY,EAAO+M,QAAS,CACrD,IAAI2L,EACJ7M,EAAShU,SAAQ,CAACqX,EAAMG,KAClBuH,GAAuB1H,IAEzBwJ,EAAgBrJ,EAClB,SAE2B,IAAlBqJ,IACTD,EAAW5M,EAAS6M,EAAgB,EAAIA,EAAgB,EAAIA,GAEhE,CACA,IAAIC,EAAY,EAShB,QARwB,IAAbF,IACTE,EAAY7M,EAAWpN,QAAQ+Z,GAC3BE,EAAY,IAAGA,EAAYnZ,EAAOkK,YAAc,GACvB,SAAzB1J,EAAOuJ,eAAsD,IAA1BvJ,EAAOkO,gBAAwBlO,EAAOiY,qBAC3EU,EAAYA,EAAYnZ,EAAOgK,qBAAqB,YAAY,GAAQ,EACxEmP,EAAYhY,KAAKC,IAAI+X,EAAW,KAGhC3Y,EAAOmK,QAAU3K,EAAOwS,YAAa,CACvC,MAAM4G,EAAYpZ,EAAOQ,OAAOyL,SAAWjM,EAAOQ,OAAOyL,QAAQC,SAAWlM,EAAOiM,QAAUjM,EAAOiM,QAAQvC,OAAOnR,OAAS,EAAIyH,EAAO0J,OAAOnR,OAAS,EACvJ,OAAOyH,EAAOkX,QAAQkC,EAAW3Y,EAAO6V,EAAcE,EACxD,CAAO,OAAIhW,EAAOoK,MAA+B,IAAvB5K,EAAOkK,aAAqB1J,EAAO+M,SAC3D7R,uBAAsB,KACpBsE,EAAOkX,QAAQiC,EAAW1Y,EAAO6V,EAAcE,EAAS,KAEnD,GAEFxW,EAAOkX,QAAQiC,EAAW1Y,EAAO6V,EAAcE,EACxD,EA8FE6C,WA3FF,SAAoB5Y,EAAO6V,EAAcE,GAQvC,YAPc,IAAV/V,IACFA,EAAQxF,KAAKuF,OAAOC,YAED,IAAjB6V,IACFA,GAAe,GAEFrb,KACDic,QADCjc,KACciP,YAAazJ,EAAO6V,EAAcE,EACjE,EAmFE8C,eAhFF,SAAwB7Y,EAAO6V,EAAcE,EAAU+C,QACvC,IAAV9Y,IACFA,EAAQxF,KAAKuF,OAAOC,YAED,IAAjB6V,IACFA,GAAe,QAEC,IAAdiD,IACFA,EAAY,IAEd,MAAMvZ,EAAS/E,KACf,IAAIuN,EAAQxI,EAAOkK,YACnB,MAAM8K,EAAO7T,KAAKE,IAAIrB,EAAOQ,OAAOmO,mBAAoBnG,GAClDqH,EAAYmF,EAAO7T,KAAKoN,OAAO/F,EAAQwM,GAAQhV,EAAOQ,OAAOkO,gBAC7DtO,EAAYJ,EAAO6L,aAAe7L,EAAOI,WAAaJ,EAAOI,UACnE,GAAIA,GAAaJ,EAAOqM,SAASwD,GAAY,CAG3C,MAAM2J,EAAcxZ,EAAOqM,SAASwD,GAEhCzP,EAAYoZ,GADCxZ,EAAOqM,SAASwD,EAAY,GACH2J,GAAeD,IACvD/Q,GAASxI,EAAOQ,OAAOkO,eAE3B,KAAO,CAGL,MAAMuK,EAAWjZ,EAAOqM,SAASwD,EAAY,GAEzCzP,EAAY6Y,IADIjZ,EAAOqM,SAASwD,GACOoJ,GAAYM,IACrD/Q,GAASxI,EAAOQ,OAAOkO,eAE3B,CAGA,OAFAlG,EAAQrH,KAAKC,IAAIoH,EAAO,GACxBA,EAAQrH,KAAKE,IAAImH,EAAOxI,EAAOsM,WAAW/T,OAAS,GAC5CyH,EAAOkX,QAAQ1O,EAAO/H,EAAO6V,EAAcE,EACpD,EA8CEZ,oBA5CF,WACE,MAAM5V,EAAS/E,MACTuF,OACJA,EAAMmL,SACNA,GACE3L,EACE+J,EAAyC,SAAzBvJ,EAAOuJ,cAA2B/J,EAAOgK,uBAAyBxJ,EAAOuJ,cAC/F,IACIc,EADA4O,EAAezZ,EAAO2V,aAE1B,MAAM+D,EAAgB1Z,EAAOoJ,UAAY,eAAiB,IAAI5I,EAAO6I,aACrE,GAAI7I,EAAOoK,KAAM,CACf,GAAI5K,EAAOyW,UAAW,OACtB5L,EAAYO,SAASpL,EAAO0V,aAAaP,aAAa,2BAA4B,IAC9E3U,EAAO8M,eACLmM,EAAezZ,EAAO2Z,aAAe5P,EAAgB,GAAK0P,EAAezZ,EAAO0J,OAAOnR,OAASyH,EAAO2Z,aAAe5P,EAAgB,GACxI/J,EAAOqY,UACPoB,EAAezZ,EAAO4Z,cAAc7X,EAAgB4J,EAAU,GAAG+N,8BAA0C7O,OAAe,IAC1HtO,GAAS,KACPyD,EAAOkX,QAAQuC,EAAa,KAG9BzZ,EAAOkX,QAAQuC,GAERA,EAAezZ,EAAO0J,OAAOnR,OAASwR,GAC/C/J,EAAOqY,UACPoB,EAAezZ,EAAO4Z,cAAc7X,EAAgB4J,EAAU,GAAG+N,8BAA0C7O,OAAe,IAC1HtO,GAAS,KACPyD,EAAOkX,QAAQuC,EAAa,KAG9BzZ,EAAOkX,QAAQuC,EAEnB,MACEzZ,EAAOkX,QAAQuC,EAEnB,GAoSA,IAAI7O,EAAO,CACTiP,WAzRF,SAAoBvB,GAClB,MAAMtY,EAAS/E,MACTuF,OACJA,EAAMmL,SACNA,GACE3L,EACJ,IAAKQ,EAAOoK,MAAQ5K,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAAS,OACrE,MAAMwB,EAAa,KACF3L,EAAgB4J,EAAU,IAAInL,EAAO6I,4BAC7ChR,SAAQ,CAACsE,EAAI6L,KAClB7L,EAAGnD,aAAa,0BAA2BgP,EAAM,GACjD,EAEEgF,EAAcxN,EAAOmK,MAAQ3J,EAAO2J,MAAQ3J,EAAO2J,KAAKC,KAAO,EAC/DsE,EAAiBlO,EAAOkO,gBAAkBlB,EAAchN,EAAO2J,KAAKC,KAAO,GAC3E0P,EAAkB9Z,EAAO0J,OAAOnR,OAASmW,GAAmB,EAC5DqL,EAAiBvM,GAAexN,EAAO0J,OAAOnR,OAASiI,EAAO2J,KAAKC,MAAS,EAC5E4P,EAAiBC,IACrB,IAAK,IAAIrb,EAAI,EAAGA,EAAIqb,EAAgBrb,GAAK,EAAG,CAC1C,MAAMiD,EAAU7B,EAAOoJ,UAAYhQ,EAAc,eAAgB,CAACoH,EAAO0Z,kBAAoB9gB,EAAc,MAAO,CAACoH,EAAO6I,WAAY7I,EAAO0Z,kBAC7Ila,EAAO2L,SAASwO,OAAOtY,EACzB,GAEF,GAAIiY,EAAiB,CACnB,GAAItZ,EAAO4Z,mBAAoB,CAE7BJ,EADoBtL,EAAiB1O,EAAO0J,OAAOnR,OAASmW,GAE5D1O,EAAOqa,eACPra,EAAOuL,cACT,MACEpJ,EAAY,mLAEduL,GACF,MAAO,GAAIqM,EAAgB,CACzB,GAAIvZ,EAAO4Z,mBAAoB,CAE7BJ,EADoBxZ,EAAO2J,KAAKC,KAAOpK,EAAO0J,OAAOnR,OAASiI,EAAO2J,KAAKC,MAE1EpK,EAAOqa,eACPra,EAAOuL,cACT,MACEpJ,EAAY,8KAEduL,GACF,MACEA,IAEF1N,EAAOqY,QAAQ,CACbC,iBACAtB,UAAWxW,EAAO8M,oBAAiB5O,EAAY,QAEnD,EAwOE2Z,QAtOF,SAAiBjT,GACf,IAAIkT,eACFA,EAAcpB,QACdA,GAAU,EAAIF,UACdA,EAASjB,aACTA,EAAYb,iBACZA,EAAgBc,aAChBA,EAAYsE,aACZA,QACY,IAAVlV,EAAmB,CAAC,EAAIA,EAC5B,MAAMpF,EAAS/E,KACf,IAAK+E,EAAOQ,OAAOoK,KAAM,OACzB5K,EAAO2I,KAAK,iBACZ,MAAMe,OACJA,EAAM8N,eACNA,EAAcD,eACdA,EAAc5L,SACdA,EAAQnL,OACRA,GACER,GACEsN,eACJA,GACE9M,EAGJ,GAFAR,EAAOwX,gBAAiB,EACxBxX,EAAOuX,gBAAiB,EACpBvX,EAAOiM,SAAWzL,EAAOyL,QAAQC,QAanC,OAZIgL,IACG1W,EAAO8M,gBAAuC,IAArBtN,EAAO6P,UAE1BrP,EAAO8M,gBAAkBtN,EAAO6P,UAAYrP,EAAOuJ,cAC5D/J,EAAOkX,QAAQlX,EAAOiM,QAAQvC,OAAOnR,OAASyH,EAAO6P,UAAW,GAAG,GAAO,GACjE7P,EAAO6P,YAAc7P,EAAOqM,SAAS9T,OAAS,GACvDyH,EAAOkX,QAAQlX,EAAOiM,QAAQiD,aAAc,GAAG,GAAO,GAJtDlP,EAAOkX,QAAQlX,EAAOiM,QAAQvC,OAAOnR,OAAQ,GAAG,GAAO,IAO3DyH,EAAOwX,eAAiBA,EACxBxX,EAAOuX,eAAiBA,OACxBvX,EAAO2I,KAAK,WAGd,IAAIoB,EAAgBvJ,EAAOuJ,cACL,SAAlBA,EACFA,EAAgB/J,EAAOgK,wBAEvBD,EAAgB5I,KAAK8I,KAAKjM,WAAWwC,EAAOuJ,cAAe,KACvDuD,GAAkBvD,EAAgB,GAAM,IAC1CA,GAAgC,IAGpC,MAAM2E,EAAiBlO,EAAOiY,mBAAqB1O,EAAgBvJ,EAAOkO,eAC1E,IAAIiL,EAAejL,EACfiL,EAAejL,GAAmB,IACpCiL,GAAgBjL,EAAiBiL,EAAejL,GAElDiL,GAAgBnZ,EAAO+Z,qBACvBva,EAAO2Z,aAAeA,EACtB,MAAMnM,EAAcxN,EAAOmK,MAAQ3J,EAAO2J,MAAQ3J,EAAO2J,KAAKC,KAAO,EACjEV,EAAOnR,OAASwR,EAAgB4P,EAClCxX,EAAY,6OACHqL,GAAoC,QAArBhN,EAAO2J,KAAKqQ,MACpCrY,EAAY,2EAEd,MAAMsY,EAAuB,GACvBC,EAAsB,GAC5B,IAAIxQ,EAAclK,EAAOkK,iBACO,IAArBgL,EACTA,EAAmBlV,EAAO4Z,cAAclQ,EAAOrN,QAAOM,GAAMA,EAAG8F,UAAU+N,SAAShQ,EAAOmT,oBAAmB,IAE5GzJ,EAAcgL,EAEhB,MAAMyF,EAAuB,SAAd3D,IAAyBA,EAClC4D,EAAuB,SAAd5D,IAAyBA,EACxC,IAAI6D,EAAkB,EAClBC,EAAiB,EACrB,MAAM3C,EAAO3K,EAAcrM,KAAK8I,KAAKP,EAAOnR,OAASiI,EAAO2J,KAAKC,MAAQV,EAAOnR,OAE1EwiB,GADiBvN,EAAc9D,EAAOwL,GAAkBzK,OAASyK,IACrB5H,QAA0C,IAAjByI,GAAgChM,EAAgB,EAAI,GAAM,GAErI,GAAIgR,EAA0BpB,EAAc,CAC1CkB,EAAkB1Z,KAAKC,IAAIuY,EAAeoB,EAAyBrM,GACnE,IAAK,IAAI9P,EAAI,EAAGA,EAAI+a,EAAeoB,EAAyBnc,GAAK,EAAG,CAClE,MAAM4J,EAAQ5J,EAAIuC,KAAKoN,MAAM3P,EAAIuZ,GAAQA,EACzC,GAAI3K,EAAa,CACf,MAAMwN,EAAoB7C,EAAO3P,EAAQ,EACzC,IAAK,IAAI5J,EAAI8K,EAAOnR,OAAS,EAAGqG,GAAK,EAAGA,GAAK,EACvC8K,EAAO9K,GAAG6L,SAAWuQ,GAAmBP,EAAqBxW,KAAKrF,EAK1E,MACE6b,EAAqBxW,KAAKkU,EAAO3P,EAAQ,EAE7C,CACF,MAAO,GAAIuS,EAA0BhR,EAAgBoO,EAAOwB,EAAc,CACxEmB,EAAiB3Z,KAAKC,IAAI2Z,GAA2B5C,EAAsB,EAAfwB,GAAmBjL,GAC/E,IAAK,IAAI9P,EAAI,EAAGA,EAAIkc,EAAgBlc,GAAK,EAAG,CAC1C,MAAM4J,EAAQ5J,EAAIuC,KAAKoN,MAAM3P,EAAIuZ,GAAQA,EACrC3K,EACF9D,EAAOrR,SAAQ,CAACyV,EAAOuB,KACjBvB,EAAMrD,SAAWjC,GAAOkS,EAAoBzW,KAAKoL,EAAW,IAGlEqL,EAAoBzW,KAAKuE,EAE7B,CACF,CA8BA,GA7BAxI,EAAOib,qBAAsB,EAC7Bvf,uBAAsB,KACpBsE,EAAOib,qBAAsB,CAAK,IAEhCL,GACFH,EAAqBpiB,SAAQmQ,IAC3BkB,EAAOlB,GAAO0S,mBAAoB,EAClCvP,EAASwP,QAAQzR,EAAOlB,IACxBkB,EAAOlB,GAAO0S,mBAAoB,CAAK,IAGvCP,GACFD,EAAoBriB,SAAQmQ,IAC1BkB,EAAOlB,GAAO0S,mBAAoB,EAClCvP,EAASwO,OAAOzQ,EAAOlB,IACvBkB,EAAOlB,GAAO0S,mBAAoB,CAAK,IAG3Clb,EAAOqa,eACsB,SAAzB7Z,EAAOuJ,cACT/J,EAAOuL,eACEiC,IAAgBiN,EAAqBliB,OAAS,GAAKqiB,GAAUF,EAAoBniB,OAAS,GAAKoiB,IACxG3a,EAAO0J,OAAOrR,SAAQ,CAACyV,EAAOuB,KAC5BrP,EAAOmK,KAAK4D,YAAYsB,EAAYvB,EAAO9N,EAAO0J,OAAO,IAGzDlJ,EAAO2P,qBACTnQ,EAAOoQ,qBAEL8G,EACF,GAAIuD,EAAqBliB,OAAS,GAAKqiB,GACrC,QAA8B,IAAnBtC,EAAgC,CACzC,MAAM8C,EAAwBpb,EAAOsM,WAAWpC,GAE1CmR,EADoBrb,EAAOsM,WAAWpC,EAAc2Q,GACzBO,EAC7Bd,EACFta,EAAO+V,aAAa/V,EAAOI,UAAYib,IAEvCrb,EAAOkX,QAAQhN,EAAc2Q,EAAiB,GAAG,GAAO,GACpD9E,IACF/V,EAAOsb,gBAAgBC,eAAiBvb,EAAOsb,gBAAgBC,eAAiBF,EAChFrb,EAAOsb,gBAAgBxF,iBAAmB9V,EAAOsb,gBAAgBxF,iBAAmBuF,GAG1F,MACE,GAAItF,EAAc,CAChB,MAAMyF,EAAQhO,EAAciN,EAAqBliB,OAASiI,EAAO2J,KAAKC,KAAOqQ,EAAqBliB,OAClGyH,EAAOkX,QAAQlX,EAAOkK,YAAcsR,EAAO,GAAG,GAAO,GACrDxb,EAAOsb,gBAAgBxF,iBAAmB9V,EAAOI,SACnD,OAEG,GAAIsa,EAAoBniB,OAAS,GAAKoiB,EAC3C,QAA8B,IAAnBrC,EAAgC,CACzC,MAAM8C,EAAwBpb,EAAOsM,WAAWpC,GAE1CmR,EADoBrb,EAAOsM,WAAWpC,EAAc4Q,GACzBM,EAC7Bd,EACFta,EAAO+V,aAAa/V,EAAOI,UAAYib,IAEvCrb,EAAOkX,QAAQhN,EAAc4Q,EAAgB,GAAG,GAAO,GACnD/E,IACF/V,EAAOsb,gBAAgBC,eAAiBvb,EAAOsb,gBAAgBC,eAAiBF,EAChFrb,EAAOsb,gBAAgBxF,iBAAmB9V,EAAOsb,gBAAgBxF,iBAAmBuF,GAG1F,KAAO,CACL,MAAMG,EAAQhO,EAAckN,EAAoBniB,OAASiI,EAAO2J,KAAKC,KAAOsQ,EAAoBniB,OAChGyH,EAAOkX,QAAQlX,EAAOkK,YAAcsR,EAAO,GAAG,GAAO,EACvD,CAKJ,GAFAxb,EAAOwX,eAAiBA,EACxBxX,EAAOuX,eAAiBA,EACpBvX,EAAOyb,YAAczb,EAAOyb,WAAWC,UAAY1F,EAAc,CACnE,MAAM2F,EAAa,CACjBrD,iBACAtB,YACAjB,eACAb,mBACAc,cAAc,GAEZrT,MAAMC,QAAQ5C,EAAOyb,WAAWC,SAClC1b,EAAOyb,WAAWC,QAAQrjB,SAAQiE,KAC3BA,EAAEoL,WAAapL,EAAEkE,OAAOoK,MAAMtO,EAAE+b,QAAQ,IACxCsD,EACHzE,QAAS5a,EAAEkE,OAAOuJ,gBAAkBvJ,EAAOuJ,eAAgBmN,GAC3D,IAEKlX,EAAOyb,WAAWC,mBAAmB1b,EAAOjI,aAAeiI,EAAOyb,WAAWC,QAAQlb,OAAOoK,MACrG5K,EAAOyb,WAAWC,QAAQrD,QAAQ,IAC7BsD,EACHzE,QAASlX,EAAOyb,WAAWC,QAAQlb,OAAOuJ,gBAAkBvJ,EAAOuJ,eAAgBmN,GAGzF,CACAlX,EAAO2I,KAAK,UACd,EA4BEiT,YA1BF,WACE,MAAM5b,EAAS/E,MACTuF,OACJA,EAAMmL,SACNA,GACE3L,EACJ,IAAKQ,EAAOoK,MAAQ5K,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAAS,OACrElM,EAAOqa,eACP,MAAMwB,EAAiB,GACvB7b,EAAO0J,OAAOrR,SAAQwJ,IACpB,MAAM2G,OAA4C,IAA7B3G,EAAQia,iBAAqF,EAAlDja,EAAQsT,aAAa,2BAAiCtT,EAAQia,iBAC9HD,EAAerT,GAAS3G,CAAO,IAEjC7B,EAAO0J,OAAOrR,SAAQwJ,IACpBA,EAAQ8H,gBAAgB,0BAA0B,IAEpDkS,EAAexjB,SAAQwJ,IACrB8J,EAASwO,OAAOtY,EAAQ,IAE1B7B,EAAOqa,eACPra,EAAOkX,QAAQlX,EAAO6K,UAAW,EACnC,GA6DA,SAASkR,EAAiB/b,EAAQ4H,EAAOoU,GACvC,MAAMhgB,EAASF,KACT0E,OACJA,GACER,EACEic,EAAqBzb,EAAOyb,mBAC5BC,EAAqB1b,EAAO0b,mBAClC,OAAID,KAAuBD,GAAUE,GAAsBF,GAAUhgB,EAAOmgB,WAAaD,IAC5D,YAAvBD,IACFrU,EAAMwU,kBACC,EAKb,CACA,SAASC,EAAazU,GACpB,MAAM5H,EAAS/E,KACTV,EAAWF,IACjB,IAAI+J,EAAIwD,EACJxD,EAAEkY,gBAAelY,EAAIA,EAAEkY,eAC3B,MAAM1T,EAAO5I,EAAOsb,gBACpB,GAAe,gBAAXlX,EAAEmY,KAAwB,CAC5B,GAAuB,OAAnB3T,EAAK4T,WAAsB5T,EAAK4T,YAAcpY,EAAEoY,UAClD,OAEF5T,EAAK4T,UAAYpY,EAAEoY,SACrB,KAAsB,eAAXpY,EAAEmY,MAAoD,IAA3BnY,EAAEqY,cAAclkB,SACpDqQ,EAAK8T,QAAUtY,EAAEqY,cAAc,GAAGE,YAEpC,GAAe,eAAXvY,EAAEmY,KAGJ,YADAR,EAAiB/b,EAAQoE,EAAGA,EAAEqY,cAAc,GAAGG,OAGjD,MAAMpc,OACJA,EAAMqc,QACNA,EAAO3Q,QACPA,GACElM,EACJ,IAAKkM,EAAS,OACd,IAAK1L,EAAOsc,eAAmC,UAAlB1Y,EAAE2Y,YAAyB,OACxD,GAAI/c,EAAOyW,WAAajW,EAAOkW,+BAC7B,QAEG1W,EAAOyW,WAAajW,EAAO+M,SAAW/M,EAAOoK,MAChD5K,EAAOqY,UAET,IAAI2E,EAAW5Y,EAAElM,OACjB,GAAiC,YAA7BsI,EAAOyc,oBACJjd,EAAOU,UAAU8P,SAASwM,GAAW,OAE5C,GAAI,UAAW5Y,GAAiB,IAAZA,EAAE8Y,MAAa,OACnC,GAAI,WAAY9Y,GAAKA,EAAE+Y,OAAS,EAAG,OACnC,GAAIvU,EAAKwU,WAAaxU,EAAKyU,QAAS,OAGpC,MAAMC,IAAyB9c,EAAO+c,gBAA4C,KAA1B/c,EAAO+c,eAEzDC,EAAYpZ,EAAEqZ,aAAerZ,EAAEqZ,eAAiBrZ,EAAEmR,KACpD+H,GAAwBlZ,EAAElM,QAAUkM,EAAElM,OAAO4J,YAAc0b,IAC7DR,EAAWQ,EAAU,IAEvB,MAAME,EAAoBld,EAAOkd,kBAAoBld,EAAOkd,kBAAoB,IAAIld,EAAO+c,iBACrFI,KAAoBvZ,EAAElM,SAAUkM,EAAElM,OAAO4J,YAG/C,GAAItB,EAAOod,YAAcD,EAlF3B,SAAwB1b,EAAU4b,GAahC,YAZa,IAATA,IACFA,EAAO5iB,MAET,SAAS6iB,EAAcnhB,GACrB,IAAKA,GAAMA,IAAOtC,KAAiBsC,IAAOb,IAAa,OAAO,KAC1Da,EAAGohB,eAAcphB,EAAKA,EAAGohB,cAC7B,MAAMC,EAAQrhB,EAAGwM,QAAQlH,GACzB,OAAK+b,GAAUrhB,EAAGshB,YAGXD,GAASF,EAAcnhB,EAAGshB,cAAcnkB,MAFtC,IAGX,CACOgkB,CAAcD,EACvB,CAoE4CK,CAAeR,EAAmBV,GAAYA,EAAS7T,QAAQuU,IAEvG,YADA1d,EAAOme,YAAa,GAGtB,GAAI3d,EAAO4d,eACJpB,EAAS7T,QAAQ3I,EAAO4d,cAAe,OAE9CvB,EAAQwB,SAAWja,EAAEwY,MACrBC,EAAQyB,SAAWla,EAAEma,MACrB,MAAMvC,EAASa,EAAQwB,SACjBG,EAAS3B,EAAQyB,SAIvB,IAAKvC,EAAiB/b,EAAQoE,EAAG4X,GAC/B,OAEFhkB,OAAOsT,OAAO1C,EAAM,CAClBwU,WAAW,EACXC,SAAS,EACToB,qBAAqB,EACrBC,iBAAahgB,EACbigB,iBAAajgB,IAEfme,EAAQb,OAASA,EACjBa,EAAQ2B,OAASA,EACjB5V,EAAKgW,eAAiBniB,IACtBuD,EAAOme,YAAa,EACpBne,EAAO+K,aACP/K,EAAO6e,oBAAiBngB,EACpB8B,EAAO+Y,UAAY,IAAG3Q,EAAKkW,oBAAqB,GACpD,IAAI1C,GAAiB,EACjBY,EAAS9a,QAAQ0G,EAAKmW,qBACxB3C,GAAiB,EACS,WAAtBY,EAASlkB,WACX8P,EAAKwU,WAAY,IAGjB7iB,EAAS3B,eAAiB2B,EAAS3B,cAAcsJ,QAAQ0G,EAAKmW,oBAAsBxkB,EAAS3B,gBAAkBokB,GACjHziB,EAAS3B,cAAcC,OAEzB,MAAMmmB,EAAuB5C,GAAkBpc,EAAOif,gBAAkBze,EAAO0e,0BAC1E1e,EAAO2e,gCAAiCH,GAA0BhC,EAASoC,mBAC9Ehb,EAAEgY,iBAEA5b,EAAO6e,UAAY7e,EAAO6e,SAASnT,SAAWlM,EAAOqf,UAAYrf,EAAOyW,YAAcjW,EAAO+M,SAC/FvN,EAAOqf,SAAShD,eAElBrc,EAAO2I,KAAK,aAAcvE,EAC5B,CAEA,SAASkb,EAAY1X,GACnB,MAAMrN,EAAWF,IACX2F,EAAS/E,KACT2N,EAAO5I,EAAOsb,iBACd9a,OACJA,EAAMqc,QACNA,EACAhR,aAAcC,EAAGI,QACjBA,GACElM,EACJ,IAAKkM,EAAS,OACd,IAAK1L,EAAOsc,eAAuC,UAAtBlV,EAAMmV,YAAyB,OAC5D,IAOIwC,EAPAnb,EAAIwD,EAER,GADIxD,EAAEkY,gBAAelY,EAAIA,EAAEkY,eACZ,gBAAXlY,EAAEmY,KAAwB,CAC5B,GAAqB,OAAjB3T,EAAK8T,QAAkB,OAE3B,GADWtY,EAAEoY,YACF5T,EAAK4T,UAAW,MAC7B,CAEA,GAAe,cAAXpY,EAAEmY,MAEJ,GADAgD,EAAc,IAAInb,EAAEob,gBAAgBnjB,QAAOsb,GAAKA,EAAEgF,aAAe/T,EAAK8T,UAAS,IAC1E6C,GAAeA,EAAY5C,aAAe/T,EAAK8T,QAAS,YAE7D6C,EAAcnb,EAEhB,IAAKwE,EAAKwU,UAIR,YAHIxU,EAAK+V,aAAe/V,EAAK8V,aAC3B1e,EAAO2I,KAAK,oBAAqBvE,IAIrC,MAAMwY,EAAQ2C,EAAY3C,MACpB2B,EAAQgB,EAAYhB,MAC1B,GAAIna,EAAEqb,wBAGJ,OAFA5C,EAAQb,OAASY,OACjBC,EAAQ2B,OAASD,GAGnB,IAAKve,EAAOif,eAaV,OAZK7a,EAAElM,OAAOgK,QAAQ0G,EAAKmW,qBACzB/e,EAAOme,YAAa,QAElBvV,EAAKwU,YACPplB,OAAOsT,OAAOuR,EAAS,CACrBb,OAAQY,EACR4B,OAAQD,EACRF,SAAUzB,EACV0B,SAAUC,IAEZ3V,EAAKgW,eAAiBniB,MAI1B,GAAI+D,EAAOkf,sBAAwBlf,EAAOoK,KACxC,GAAI5K,EAAOmL,cAET,GAAIoT,EAAQ1B,EAAQ2B,QAAUxe,EAAOI,WAAaJ,EAAOuS,gBAAkBgM,EAAQ1B,EAAQ2B,QAAUxe,EAAOI,WAAaJ,EAAO8R,eAG9H,OAFAlJ,EAAKwU,WAAY,OACjBxU,EAAKyU,SAAU,QAGZ,GAAIT,EAAQC,EAAQb,QAAUhc,EAAOI,WAAaJ,EAAOuS,gBAAkBqK,EAAQC,EAAQb,QAAUhc,EAAOI,WAAaJ,EAAO8R,eACrI,OAGJ,GAAIvX,EAAS3B,eACPwL,EAAElM,SAAWqC,EAAS3B,eAAiBwL,EAAElM,OAAOgK,QAAQ0G,EAAKmW,mBAG/D,OAFAnW,EAAKyU,SAAU,OACfrd,EAAOme,YAAa,GAIpBvV,EAAK6V,qBACPze,EAAO2I,KAAK,YAAavE,GAE3ByY,EAAQ8C,UAAY9C,EAAQwB,SAC5BxB,EAAQ+C,UAAY/C,EAAQyB,SAC5BzB,EAAQwB,SAAWzB,EACnBC,EAAQyB,SAAWC,EACnB,MAAMsB,EAAQhD,EAAQwB,SAAWxB,EAAQb,OACnC8D,EAAQjD,EAAQyB,SAAWzB,EAAQ2B,OACzC,GAAIxe,EAAOQ,OAAO+Y,WAAapY,KAAK4e,KAAKF,GAAS,EAAIC,GAAS,GAAK9f,EAAOQ,OAAO+Y,UAAW,OAC7F,QAAgC,IAArB3Q,EAAK8V,YAA6B,CAC3C,IAAIsB,EACAhgB,EAAOkL,gBAAkB2R,EAAQyB,WAAazB,EAAQ2B,QAAUxe,EAAOmL,cAAgB0R,EAAQwB,WAAaxB,EAAQb,OACtHpT,EAAK8V,aAAc,EAGfmB,EAAQA,EAAQC,EAAQA,GAAS,KACnCE,EAA4D,IAA/C7e,KAAK8e,MAAM9e,KAAKsN,IAAIqR,GAAQ3e,KAAKsN,IAAIoR,IAAgB1e,KAAKK,GACvEoH,EAAK8V,YAAc1e,EAAOkL,eAAiB8U,EAAaxf,EAAOwf,WAAa,GAAKA,EAAaxf,EAAOwf,WAG3G,CASA,GARIpX,EAAK8V,aACP1e,EAAO2I,KAAK,oBAAqBvE,QAEH,IAArBwE,EAAK+V,cACV9B,EAAQwB,WAAaxB,EAAQb,QAAUa,EAAQyB,WAAazB,EAAQ2B,SACtE5V,EAAK+V,aAAc,IAGnB/V,EAAK8V,YAEP,YADA9V,EAAKwU,WAAY,GAGnB,IAAKxU,EAAK+V,YACR,OAEF3e,EAAOme,YAAa,GACf3d,EAAO+M,SAAWnJ,EAAE8b,YACvB9b,EAAEgY,iBAEA5b,EAAO2f,2BAA6B3f,EAAO4f,QAC7Chc,EAAEic,kBAEJ,IAAIhF,EAAOrb,EAAOkL,eAAiB2U,EAAQC,EACvCQ,EAActgB,EAAOkL,eAAiB2R,EAAQwB,SAAWxB,EAAQ8C,UAAY9C,EAAQyB,SAAWzB,EAAQ+C,UACxGpf,EAAO+f,iBACTlF,EAAOla,KAAKsN,IAAI4M,IAASvP,EAAM,GAAK,GACpCwU,EAAcnf,KAAKsN,IAAI6R,IAAgBxU,EAAM,GAAK,IAEpD+Q,EAAQxB,KAAOA,EACfA,GAAQ7a,EAAOggB,WACX1U,IACFuP,GAAQA,EACRiF,GAAeA,GAEjB,MAAMG,EAAuBzgB,EAAO0gB,iBACpC1gB,EAAO6e,eAAiBxD,EAAO,EAAI,OAAS,OAC5Crb,EAAO0gB,iBAAmBJ,EAAc,EAAI,OAAS,OACrD,MAAMK,EAAS3gB,EAAOQ,OAAOoK,OAASpK,EAAO+M,QACvCqT,EAA2C,SAA5B5gB,EAAO0gB,kBAA+B1gB,EAAOuX,gBAA8C,SAA5BvX,EAAO0gB,kBAA+B1gB,EAAOwX,eACjI,IAAK5O,EAAKyU,QAAS,CAQjB,GAPIsD,GAAUC,GACZ5gB,EAAOqY,QAAQ,CACbrB,UAAWhX,EAAO6e,iBAGtBjW,EAAK2S,eAAiBvb,EAAOtD,eAC7BsD,EAAO6Q,cAAc,GACjB7Q,EAAOyW,UAAW,CACpB,MAAMoK,EAAM,IAAI7kB,OAAOhB,YAAY,gBAAiB,CAClD8lB,SAAS,EACTZ,YAAY,IAEdlgB,EAAOU,UAAUqgB,cAAcF,EACjC,CACAjY,EAAKoY,qBAAsB,GAEvBxgB,EAAOygB,aAAyC,IAA1BjhB,EAAOuX,iBAAqD,IAA1BvX,EAAOwX,gBACjExX,EAAOkhB,eAAc,GAEvBlhB,EAAO2I,KAAK,kBAAmBvE,EACjC,CAGA,IADA,IAAI/I,MAAO4F,UACP2H,EAAKyU,SAAWzU,EAAKkW,oBAAsB2B,IAAyBzgB,EAAO0gB,kBAAoBC,GAAUC,GAAgBzf,KAAKsN,IAAI4M,IAAS,EAU7I,OATArjB,OAAOsT,OAAOuR,EAAS,CACrBb,OAAQY,EACR4B,OAAQD,EACRF,SAAUzB,EACV0B,SAAUC,EACVhD,eAAgB3S,EAAKkN,mBAEvBlN,EAAKuY,eAAgB,OACrBvY,EAAK2S,eAAiB3S,EAAKkN,kBAG7B9V,EAAO2I,KAAK,aAAcvE,GAC1BwE,EAAKyU,SAAU,EACfzU,EAAKkN,iBAAmBuF,EAAOzS,EAAK2S,eACpC,IAAI6F,GAAsB,EACtBC,EAAkB7gB,EAAO6gB,gBAiD7B,GAhDI7gB,EAAOkf,sBACT2B,EAAkB,GAEhBhG,EAAO,GACLsF,GAAUC,GAA8BhY,EAAKkW,oBAAsBlW,EAAKkN,kBAAoBtV,EAAO8M,eAAiBtN,EAAO8R,eAAiB9R,EAAOuM,gBAAgBvM,EAAOkK,YAAc,GAAKlK,EAAO8R,iBACtM9R,EAAOqY,QAAQ,CACbrB,UAAW,OACXjB,cAAc,EACdb,iBAAkB,IAGlBtM,EAAKkN,iBAAmB9V,EAAO8R,iBACjCsP,GAAsB,EAClB5gB,EAAO8gB,aACT1Y,EAAKkN,iBAAmB9V,EAAO8R,eAAiB,IAAM9R,EAAO8R,eAAiBlJ,EAAK2S,eAAiBF,IAASgG,KAGxGhG,EAAO,IACZsF,GAAUC,GAA8BhY,EAAKkW,oBAAsBlW,EAAKkN,kBAAoBtV,EAAO8M,eAAiBtN,EAAOuS,eAAiBvS,EAAOuM,gBAAgBvM,EAAOuM,gBAAgBhU,OAAS,GAAKyH,EAAOuS,iBACjNvS,EAAOqY,QAAQ,CACbrB,UAAW,OACXjB,cAAc,EACdb,iBAAkBlV,EAAO0J,OAAOnR,QAAmC,SAAzBiI,EAAOuJ,cAA2B/J,EAAOgK,uBAAyB7I,KAAK8I,KAAKjM,WAAWwC,EAAOuJ,cAAe,QAGvJnB,EAAKkN,iBAAmB9V,EAAOuS,iBACjC6O,GAAsB,EAClB5gB,EAAO8gB,aACT1Y,EAAKkN,iBAAmB9V,EAAOuS,eAAiB,GAAKvS,EAAOuS,eAAiB3J,EAAK2S,eAAiBF,IAASgG,KAI9GD,IACFhd,EAAEqb,yBAA0B,IAIzBzf,EAAOuX,gBAA4C,SAA1BvX,EAAO6e,gBAA6BjW,EAAKkN,iBAAmBlN,EAAK2S,iBAC7F3S,EAAKkN,iBAAmBlN,EAAK2S,iBAE1Bvb,EAAOwX,gBAA4C,SAA1BxX,EAAO6e,gBAA6BjW,EAAKkN,iBAAmBlN,EAAK2S,iBAC7F3S,EAAKkN,iBAAmBlN,EAAK2S,gBAE1Bvb,EAAOwX,gBAAmBxX,EAAOuX,iBACpC3O,EAAKkN,iBAAmBlN,EAAK2S,gBAI3B/a,EAAO+Y,UAAY,EAAG,CACxB,KAAIpY,KAAKsN,IAAI4M,GAAQ7a,EAAO+Y,WAAa3Q,EAAKkW,oBAW5C,YADAlW,EAAKkN,iBAAmBlN,EAAK2S,gBAT7B,IAAK3S,EAAKkW,mBAMR,OALAlW,EAAKkW,oBAAqB,EAC1BjC,EAAQb,OAASa,EAAQwB,SACzBxB,EAAQ2B,OAAS3B,EAAQyB,SACzB1V,EAAKkN,iBAAmBlN,EAAK2S,oBAC7BsB,EAAQxB,KAAOrb,EAAOkL,eAAiB2R,EAAQwB,SAAWxB,EAAQb,OAASa,EAAQyB,SAAWzB,EAAQ2B,OAO5G,CACKhe,EAAO+gB,eAAgB/gB,EAAO+M,WAG/B/M,EAAO6e,UAAY7e,EAAO6e,SAASnT,SAAWlM,EAAOqf,UAAY7e,EAAO2P,uBAC1EnQ,EAAOuU,oBACPvU,EAAOsT,uBAEL9S,EAAO6e,UAAY7e,EAAO6e,SAASnT,SAAWlM,EAAOqf,UACvDrf,EAAOqf,SAASC,cAGlBtf,EAAOoS,eAAexJ,EAAKkN,kBAE3B9V,EAAO+V,aAAanN,EAAKkN,kBAC3B,CAEA,SAAS0L,EAAW5Z,GAClB,MAAM5H,EAAS/E,KACT2N,EAAO5I,EAAOsb,gBACpB,IAEIiE,EAFAnb,EAAIwD,EACJxD,EAAEkY,gBAAelY,EAAIA,EAAEkY,eAG3B,GADgC,aAAXlY,EAAEmY,MAAkC,gBAAXnY,EAAEmY,MAO9C,GADAgD,EAAc,IAAInb,EAAEob,gBAAgBnjB,QAAOsb,GAAKA,EAAEgF,aAAe/T,EAAK8T,UAAS,IAC1E6C,GAAeA,EAAY5C,aAAe/T,EAAK8T,QAAS,WAN5C,CACjB,GAAqB,OAAjB9T,EAAK8T,QAAkB,OAC3B,GAAItY,EAAEoY,YAAc5T,EAAK4T,UAAW,OACpC+C,EAAcnb,CAChB,CAIA,GAAI,CAAC,gBAAiB,aAAc,eAAgB,eAAeuC,SAASvC,EAAEmY,MAAO,CAEnF,KADgB,CAAC,gBAAiB,eAAe5V,SAASvC,EAAEmY,QAAUvc,EAAO2E,QAAQ6B,UAAYxG,EAAO2E,QAAQqC,YAE9G,MAEJ,CACA4B,EAAK4T,UAAY,KACjB5T,EAAK8T,QAAU,KACf,MAAMlc,OACJA,EAAMqc,QACNA,EACAhR,aAAcC,EAAGQ,WACjBA,EAAUJ,QACVA,GACElM,EACJ,IAAKkM,EAAS,OACd,IAAK1L,EAAOsc,eAAmC,UAAlB1Y,EAAE2Y,YAAyB,OAKxD,GAJInU,EAAK6V,qBACPze,EAAO2I,KAAK,WAAYvE,GAE1BwE,EAAK6V,qBAAsB,GACtB7V,EAAKwU,UAMR,OALIxU,EAAKyU,SAAW7c,EAAOygB,YACzBjhB,EAAOkhB,eAAc,GAEvBtY,EAAKyU,SAAU,OACfzU,EAAK+V,aAAc,GAKjBne,EAAOygB,YAAcrY,EAAKyU,SAAWzU,EAAKwU,aAAwC,IAA1Bpd,EAAOuX,iBAAqD,IAA1BvX,EAAOwX,iBACnGxX,EAAOkhB,eAAc,GAIvB,MAAMO,EAAehlB,IACfilB,EAAWD,EAAe7Y,EAAKgW,eAGrC,GAAI5e,EAAOme,WAAY,CACrB,MAAMwD,EAAWvd,EAAEmR,MAAQnR,EAAEqZ,cAAgBrZ,EAAEqZ,eAC/Czd,EAAOsV,mBAAmBqM,GAAYA,EAAS,IAAMvd,EAAElM,OAAQypB,GAC/D3hB,EAAO2I,KAAK,YAAavE,GACrBsd,EAAW,KAAOD,EAAe7Y,EAAKgZ,cAAgB,KACxD5hB,EAAO2I,KAAK,wBAAyBvE,EAEzC,CAKA,GAJAwE,EAAKgZ,cAAgBnlB,IACrBF,GAAS,KACFyD,EAAO0H,YAAW1H,EAAOme,YAAa,EAAI,KAE5CvV,EAAKwU,YAAcxU,EAAKyU,UAAYrd,EAAO6e,gBAAmC,IAAjBhC,EAAQxB,OAAezS,EAAKuY,eAAiBvY,EAAKkN,mBAAqBlN,EAAK2S,iBAAmB3S,EAAKuY,cAIpK,OAHAvY,EAAKwU,WAAY,EACjBxU,EAAKyU,SAAU,OACfzU,EAAK+V,aAAc,GAMrB,IAAIkD,EAMJ,GATAjZ,EAAKwU,WAAY,EACjBxU,EAAKyU,SAAU,EACfzU,EAAK+V,aAAc,EAGjBkD,EADErhB,EAAO+gB,aACIzV,EAAM9L,EAAOI,WAAaJ,EAAOI,WAEhCwI,EAAKkN,iBAEjBtV,EAAO+M,QACT,OAEF,GAAI/M,EAAO6e,UAAY7e,EAAO6e,SAASnT,QAIrC,YAHAlM,EAAOqf,SAASmC,WAAW,CACzBK,eAMJ,MAAMC,EAAcD,IAAe7hB,EAAOuS,iBAAmBvS,EAAOQ,OAAOoK,KAC3E,IAAImX,EAAY,EACZ3S,EAAYpP,EAAOuM,gBAAgB,GACvC,IAAK,IAAI3N,EAAI,EAAGA,EAAI0N,EAAW/T,OAAQqG,GAAKA,EAAI4B,EAAOmO,mBAAqB,EAAInO,EAAOkO,eAAgB,CACrG,MAAMgK,EAAY9Z,EAAI4B,EAAOmO,mBAAqB,EAAI,EAAInO,EAAOkO,oBACxB,IAA9BpC,EAAW1N,EAAI8Z,IACpBoJ,GAAeD,GAAcvV,EAAW1N,IAAMijB,EAAavV,EAAW1N,EAAI8Z,MAC5EqJ,EAAYnjB,EACZwQ,EAAY9C,EAAW1N,EAAI8Z,GAAapM,EAAW1N,KAE5CkjB,GAAeD,GAAcvV,EAAW1N,MACjDmjB,EAAYnjB,EACZwQ,EAAY9C,EAAWA,EAAW/T,OAAS,GAAK+T,EAAWA,EAAW/T,OAAS,GAEnF,CACA,IAAIypB,EAAmB,KACnBC,EAAkB,KAClBzhB,EAAOmK,SACL3K,EAAOwS,YACTyP,EAAkBzhB,EAAOyL,SAAWzL,EAAOyL,QAAQC,SAAWlM,EAAOiM,QAAUjM,EAAOiM,QAAQvC,OAAOnR,OAAS,EAAIyH,EAAO0J,OAAOnR,OAAS,EAChIyH,EAAOyS,QAChBuP,EAAmB,IAIvB,MAAME,GAASL,EAAavV,EAAWyV,IAAc3S,EAC/CsJ,EAAYqJ,EAAYvhB,EAAOmO,mBAAqB,EAAI,EAAInO,EAAOkO,eACzE,GAAIgT,EAAWlhB,EAAO2hB,aAAc,CAElC,IAAK3hB,EAAO4hB,WAEV,YADApiB,EAAOkX,QAAQlX,EAAOkK,aAGM,SAA1BlK,EAAO6e,iBACLqD,GAAS1hB,EAAO6hB,gBAAiBriB,EAAOkX,QAAQ1W,EAAOmK,QAAU3K,EAAOyS,MAAQuP,EAAmBD,EAAYrJ,GAAgB1Y,EAAOkX,QAAQ6K,IAEtH,SAA1B/hB,EAAO6e,iBACLqD,EAAQ,EAAI1hB,EAAO6hB,gBACrBriB,EAAOkX,QAAQ6K,EAAYrJ,GACE,OAApBuJ,GAA4BC,EAAQ,GAAK/gB,KAAKsN,IAAIyT,GAAS1hB,EAAO6hB,gBAC3EriB,EAAOkX,QAAQ+K,GAEfjiB,EAAOkX,QAAQ6K,GAGrB,KAAO,CAEL,IAAKvhB,EAAO8hB,YAEV,YADAtiB,EAAOkX,QAAQlX,EAAOkK,aAGElK,EAAOuiB,aAAene,EAAElM,SAAW8H,EAAOuiB,WAAWC,QAAUpe,EAAElM,SAAW8H,EAAOuiB,WAAWE,QAQ7Gre,EAAElM,SAAW8H,EAAOuiB,WAAWC,OACxCxiB,EAAOkX,QAAQ6K,EAAYrJ,GAE3B1Y,EAAOkX,QAAQ6K,IATe,SAA1B/hB,EAAO6e,gBACT7e,EAAOkX,QAA6B,OAArB8K,EAA4BA,EAAmBD,EAAYrJ,GAE9C,SAA1B1Y,EAAO6e,gBACT7e,EAAOkX,QAA4B,OAApB+K,EAA2BA,EAAkBF,GAOlE,CACF,CAEA,SAASW,IACP,MAAM1iB,EAAS/E,MACTuF,OACJA,EAAM7D,GACNA,GACEqD,EACJ,GAAIrD,GAAyB,IAAnBA,EAAG6H,YAAmB,OAG5BhE,EAAOqN,aACT7N,EAAO2iB,gBAIT,MAAMpL,eACJA,EAAcC,eACdA,EAAcnL,SACdA,GACErM,EACEgM,EAAYhM,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAG1DlM,EAAOuX,gBAAiB,EACxBvX,EAAOwX,gBAAiB,EACxBxX,EAAO+K,aACP/K,EAAOuL,eACPvL,EAAOsT,sBACP,MAAMsP,EAAgB5W,GAAaxL,EAAOoK,OACZ,SAAzBpK,EAAOuJ,eAA4BvJ,EAAOuJ,cAAgB,KAAM/J,EAAOyS,OAAUzS,EAAOwS,aAAgBxS,EAAOQ,OAAO8M,gBAAmBsV,EAGxI5iB,EAAOQ,OAAOoK,OAASoB,EACzBhM,EAAOgY,YAAYhY,EAAO6K,UAAW,GAAG,GAAO,GAE/C7K,EAAOkX,QAAQlX,EAAOkK,YAAa,GAAG,GAAO,GAL/ClK,EAAOkX,QAAQlX,EAAO0J,OAAOnR,OAAS,EAAG,GAAG,GAAO,GAQjDyH,EAAO6iB,UAAY7iB,EAAO6iB,SAASC,SAAW9iB,EAAO6iB,SAASE,SAChEvnB,aAAawE,EAAO6iB,SAASG,eAC7BhjB,EAAO6iB,SAASG,cAAgBznB,YAAW,KACrCyE,EAAO6iB,UAAY7iB,EAAO6iB,SAASC,SAAW9iB,EAAO6iB,SAASE,QAChE/iB,EAAO6iB,SAASI,QAClB,GACC,MAGLjjB,EAAOwX,eAAiBA,EACxBxX,EAAOuX,eAAiBA,EACpBvX,EAAOQ,OAAOyP,eAAiB5D,IAAarM,EAAOqM,UACrDrM,EAAOkQ,eAEX,CAEA,SAASgT,EAAQ9e,GACf,MAAMpE,EAAS/E,KACV+E,EAAOkM,UACPlM,EAAOme,aACNne,EAAOQ,OAAO2iB,eAAe/e,EAAEgY,iBAC/Bpc,EAAOQ,OAAO4iB,0BAA4BpjB,EAAOyW,YACnDrS,EAAEic,kBACFjc,EAAEif,6BAGR,CAEA,SAASC,IACP,MAAMtjB,EAAS/E,MACTyF,UACJA,EAASmL,aACTA,EAAYK,QACZA,GACElM,EACJ,IAAKkM,EAAS,OAWd,IAAI+J,EAVJjW,EAAOoW,kBAAoBpW,EAAOI,UAC9BJ,EAAOkL,eACTlL,EAAOI,WAAaM,EAAU0C,WAE9BpD,EAAOI,WAAaM,EAAUwC,UAGP,IAArBlD,EAAOI,YAAiBJ,EAAOI,UAAY,GAC/CJ,EAAOuU,oBACPvU,EAAOsT,sBAEP,MAAMhB,EAAiBtS,EAAOuS,eAAiBvS,EAAO8R,eAEpDmE,EADqB,IAAnB3D,EACY,GAECtS,EAAOI,UAAYJ,EAAO8R,gBAAkBQ,EAEzD2D,IAAgBjW,EAAOkB,UACzBlB,EAAOoS,eAAevG,GAAgB7L,EAAOI,UAAYJ,EAAOI,WAElEJ,EAAO2I,KAAK,eAAgB3I,EAAOI,WAAW,EAChD,CAEA,SAASmjB,EAAOnf,GACd,MAAMpE,EAAS/E,KACfgO,EAAqBjJ,EAAQoE,EAAElM,QAC3B8H,EAAOQ,OAAO+M,SAA2C,SAAhCvN,EAAOQ,OAAOuJ,gBAA6B/J,EAAOQ,OAAO6S,YAGtFrT,EAAO8K,QACT,CAEA,SAAS0Y,IACP,MAAMxjB,EAAS/E,KACX+E,EAAOyjB,gCACXzjB,EAAOyjB,+BAAgC,EACnCzjB,EAAOQ,OAAOkf,sBAChB1f,EAAOrD,GAAGpD,MAAMmqB,YAAc,QAElC,CAEA,MAAMrc,EAAS,CAACrH,EAAQ2H,KACtB,MAAMpN,EAAWF,KACXmG,OACJA,EAAM7D,GACNA,EAAE+D,UACFA,EAAS6E,OACTA,GACEvF,EACE2jB,IAAYnjB,EAAO4f,OACnBwD,EAAuB,OAAXjc,EAAkB,mBAAqB,sBACnDkc,EAAelc,EAGrBpN,EAASqpB,GAAW,aAAc5jB,EAAOwjB,qBAAsB,CAC7DM,SAAS,EACTH,YAEFhnB,EAAGinB,GAAW,aAAc5jB,EAAOqc,aAAc,CAC/CyH,SAAS,IAEXnnB,EAAGinB,GAAW,cAAe5jB,EAAOqc,aAAc,CAChDyH,SAAS,IAEXvpB,EAASqpB,GAAW,YAAa5jB,EAAOsf,YAAa,CACnDwE,SAAS,EACTH,YAEFppB,EAASqpB,GAAW,cAAe5jB,EAAOsf,YAAa,CACrDwE,SAAS,EACTH,YAEFppB,EAASqpB,GAAW,WAAY5jB,EAAOwhB,WAAY,CACjDsC,SAAS,IAEXvpB,EAASqpB,GAAW,YAAa5jB,EAAOwhB,WAAY,CAClDsC,SAAS,IAEXvpB,EAASqpB,GAAW,gBAAiB5jB,EAAOwhB,WAAY,CACtDsC,SAAS,IAEXvpB,EAASqpB,GAAW,cAAe5jB,EAAOwhB,WAAY,CACpDsC,SAAS,IAEXvpB,EAASqpB,GAAW,aAAc5jB,EAAOwhB,WAAY,CACnDsC,SAAS,IAEXvpB,EAASqpB,GAAW,eAAgB5jB,EAAOwhB,WAAY,CACrDsC,SAAS,IAEXvpB,EAASqpB,GAAW,cAAe5jB,EAAOwhB,WAAY,CACpDsC,SAAS,KAIPtjB,EAAO2iB,eAAiB3iB,EAAO4iB,2BACjCzmB,EAAGinB,GAAW,QAAS5jB,EAAOkjB,SAAS,GAErC1iB,EAAO+M,SACT7M,EAAUkjB,GAAW,SAAU5jB,EAAOsjB,UAIpC9iB,EAAOujB,qBACT/jB,EAAO6jB,GAActe,EAAOC,KAAOD,EAAOE,QAAU,0CAA4C,wBAAyBid,GAAU,GAEnI1iB,EAAO6jB,GAAc,iBAAkBnB,GAAU,GAInD/lB,EAAGinB,GAAW,OAAQ5jB,EAAOujB,OAAQ,CACnCI,SAAS,GACT,EA2BJ,MAAMK,EAAgB,CAAChkB,EAAQQ,IACtBR,EAAOmK,MAAQ3J,EAAO2J,MAAQ3J,EAAO2J,KAAKC,KAAO,EA2N1D,IAII6Z,EAAW,CACbC,MAAM,EACNlN,UAAW,aACXuJ,gBAAgB,EAChBtD,kBAAmB,UACnBnF,aAAc,EACdrX,MAAO,IACP8M,SAAS,EACTwW,sBAAsB,EACtBI,gBAAgB,EAChB/D,QAAQ,EACRgE,gBAAgB,EAChBC,aAAc,SACdnY,SAAS,EACT6S,kBAAmB,wDAEnBpZ,MAAO,KACPE,OAAQ,KAER6Q,gCAAgC,EAEhChc,UAAW,KACX4pB,IAAK,KAELrI,oBAAoB,EACpBC,mBAAoB,GAEpB7I,YAAY,EAEZxE,gBAAgB,EAEhBgH,kBAAkB,EAElBjH,OAAQ,QAIRf,iBAAanP,EACb6lB,gBAAiB,SAEjBzX,aAAc,EACd/C,cAAe,EACf2E,eAAgB,EAChBC,mBAAoB,EACpB8J,oBAAoB,EACpBnL,gBAAgB,EAChBgC,sBAAsB,EACtB7C,mBAAoB,EAEpBE,kBAAmB,EAEnBmI,qBAAqB,EACrBnF,0BAA0B,EAE1BM,eAAe,EAEf9B,cAAc,EAEdqS,WAAY,EACZR,WAAY,GACZlD,eAAe,EACfwF,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBF,aAAc,IACdZ,cAAc,EACdtC,gBAAgB,EAChB1F,UAAW,EACX4G,0BAA0B,EAC1BjB,0BAA0B,EAC1BC,+BAA+B,EAC/BO,qBAAqB,EAErB8E,mBAAmB,EAEnBlD,YAAY,EACZD,gBAAiB,IAEjBlR,qBAAqB,EAErB8Q,YAAY,EAEZkC,eAAe,EACfC,0BAA0B,EAC1BxN,qBAAqB,EAErBhL,MAAM,EACNwP,oBAAoB,EACpBG,qBAAsB,EACtB5B,qBAAqB,EAErBhO,QAAQ,EAER6M,gBAAgB,EAChBD,gBAAgB,EAChB6G,aAAc,KAEdR,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAEnB+G,kBAAkB,EAClBhU,wBAAyB,GAEzBH,uBAAwB,UAExBjH,WAAY,eACZ6Q,gBAAiB,qBACjBvG,iBAAkB,sBAClBlC,kBAAmB,uBACnBC,uBAAwB,6BACxBkC,eAAgB,oBAChBC,eAAgB,oBAChB6Q,aAAc,iBACdnb,mBAAoB,wBACpBO,oBAAqB,EAErBuL,oBAAoB,EAEpBsP,cAAc,GAGhB,SAASC,EAAmBpkB,EAAQqkB,GAClC,OAAO,SAAsB/sB,QACf,IAARA,IACFA,EAAM,CAAC,GAET,MAAMgtB,EAAkB9sB,OAAOI,KAAKN,GAAK,GACnCitB,EAAejtB,EAAIgtB,GACG,iBAAjBC,GAA8C,OAAjBA,IAIR,IAA5BvkB,EAAOskB,KACTtkB,EAAOskB,GAAmB,CACxB5Y,SAAS,IAGW,eAApB4Y,GAAoCtkB,EAAOskB,IAAoBtkB,EAAOskB,GAAiB5Y,UAAY1L,EAAOskB,GAAiBrC,SAAWjiB,EAAOskB,GAAiBtC,SAChKhiB,EAAOskB,GAAiBE,MAAO,GAE7B,CAAC,aAAc,aAAa9lB,QAAQ4lB,IAAoB,GAAKtkB,EAAOskB,IAAoBtkB,EAAOskB,GAAiB5Y,UAAY1L,EAAOskB,GAAiBnoB,KACtJ6D,EAAOskB,GAAiBE,MAAO,GAE3BF,KAAmBtkB,GAAU,YAAaukB,GAIT,iBAA5BvkB,EAAOskB,IAAmC,YAAatkB,EAAOskB,KACvEtkB,EAAOskB,GAAiB5Y,SAAU,GAE/B1L,EAAOskB,KAAkBtkB,EAAOskB,GAAmB,CACtD5Y,SAAS,IAEX3N,EAASsmB,EAAkB/sB,IATzByG,EAASsmB,EAAkB/sB,IAf3ByG,EAASsmB,EAAkB/sB,EAyB/B,CACF,CAGA,MAAMmtB,EAAa,CACjB9d,gBACA2D,SACA1K,YACA8kB,WA92De,CACfrU,cA/EF,SAAuBtQ,EAAUyV,GAC/B,MAAMhW,EAAS/E,KACV+E,EAAOQ,OAAO+M,UACjBvN,EAAOU,UAAUnH,MAAM4rB,mBAAqB,GAAG5kB,MAC/CP,EAAOU,UAAUnH,MAAM6rB,gBAA+B,IAAb7kB,EAAiB,MAAQ,IAEpEP,EAAO2I,KAAK,gBAAiBpI,EAAUyV,EACzC,EAyEEyB,gBAzCF,SAAyBnB,EAAcU,QAChB,IAAjBV,IACFA,GAAe,GAEjB,MAAMtW,EAAS/E,MACTuF,OACJA,GACER,EACAQ,EAAO+M,UACP/M,EAAO6S,YACTrT,EAAO0Q,mBAETqG,EAAe,CACb/W,SACAsW,eACAU,YACAC,KAAM,UAEV,EAwBES,cAtBF,SAAuBpB,EAAcU,QACd,IAAjBV,IACFA,GAAe,GAEjB,MAAMtW,EAAS/E,MACTuF,OACJA,GACER,EACJA,EAAOyW,WAAY,EACfjW,EAAO+M,UACXvN,EAAO6Q,cAAc,GACrBkG,EAAe,CACb/W,SACAsW,eACAU,YACAC,KAAM,QAEV,GAi3DEnJ,QACAlD,OACAqW,WAnoCe,CACfC,cAjCF,SAAuBmE,GACrB,MAAMrlB,EAAS/E,KACf,IAAK+E,EAAOQ,OAAOsc,eAAiB9c,EAAOQ,OAAOyP,eAAiBjQ,EAAOslB,UAAYtlB,EAAOQ,OAAO+M,QAAS,OAC7G,MAAM5Q,EAAyC,cAApCqD,EAAOQ,OAAOyc,kBAAoCjd,EAAOrD,GAAKqD,EAAOU,UAC5EV,EAAOoJ,YACTpJ,EAAOib,qBAAsB,GAE/Bte,EAAGpD,MAAMgsB,OAAS,OAClB5oB,EAAGpD,MAAMgsB,OAASF,EAAS,WAAa,OACpCrlB,EAAOoJ,WACT1N,uBAAsB,KACpBsE,EAAOib,qBAAsB,CAAK,GAGxC,EAoBEuK,gBAlBF,WACE,MAAMxlB,EAAS/E,KACX+E,EAAOQ,OAAOyP,eAAiBjQ,EAAOslB,UAAYtlB,EAAOQ,OAAO+M,UAGhEvN,EAAOoJ,YACTpJ,EAAOib,qBAAsB,GAE/Bjb,EAA2C,cAApCA,EAAOQ,OAAOyc,kBAAoC,KAAO,aAAa1jB,MAAMgsB,OAAS,GACxFvlB,EAAOoJ,WACT1N,uBAAsB,KACpBsE,EAAOib,qBAAsB,CAAK,IAGxC,GAsoCE5T,OA5Ya,CACboe,aArBF,WACE,MAAMzlB,EAAS/E,MACTuF,OACJA,GACER,EACJA,EAAOqc,aAAeA,EAAaqJ,KAAK1lB,GACxCA,EAAOsf,YAAcA,EAAYoG,KAAK1lB,GACtCA,EAAOwhB,WAAaA,EAAWkE,KAAK1lB,GACpCA,EAAOwjB,qBAAuBA,EAAqBkC,KAAK1lB,GACpDQ,EAAO+M,UACTvN,EAAOsjB,SAAWA,EAASoC,KAAK1lB,IAElCA,EAAOkjB,QAAUA,EAAQwC,KAAK1lB,GAC9BA,EAAOujB,OAASA,EAAOmC,KAAK1lB,GAC5BqH,EAAOrH,EAAQ,KACjB,EAOE2lB,aANF,WAEEte,EADepM,KACA,MACjB,GA8YE4S,YAhRgB,CAChB8U,cAtHF,WACE,MAAM3iB,EAAS/E,MACT4P,UACJA,EAASuK,YACTA,EAAW5U,OACXA,EAAM7D,GACNA,GACEqD,EACE6N,EAAcrN,EAAOqN,YAC3B,IAAKA,GAAeA,GAAmD,IAApC7V,OAAOI,KAAKyV,GAAatV,OAAc,OAG1E,MAAMqtB,EAAa5lB,EAAO6lB,cAAchY,EAAa7N,EAAOQ,OAAO+jB,gBAAiBvkB,EAAOrD,IAC3F,IAAKipB,GAAc5lB,EAAO8lB,oBAAsBF,EAAY,OAC5D,MACMG,GADuBH,KAAc/X,EAAcA,EAAY+X,QAAclnB,IAClCsB,EAAOgmB,eAClDC,EAAcjC,EAAchkB,EAAQQ,GACpC0lB,EAAalC,EAAchkB,EAAQ+lB,GACnCI,EAAa3lB,EAAO0L,QACtB+Z,IAAgBC,GAClBvpB,EAAG8F,UAAU+G,OAAO,GAAGhJ,EAAO8P,6BAA8B,GAAG9P,EAAO8P,qCACtEtQ,EAAOomB,yBACGH,GAAeC,IACzBvpB,EAAG8F,UAAUC,IAAI,GAAGlC,EAAO8P,+BACvByV,EAAiB5b,KAAKqQ,MAAuC,WAA/BuL,EAAiB5b,KAAKqQ,OAAsBuL,EAAiB5b,KAAKqQ,MAA6B,WAArBha,EAAO2J,KAAKqQ,OACtH7d,EAAG8F,UAAUC,IAAI,GAAGlC,EAAO8P,qCAE7BtQ,EAAOomB,wBAIT,CAAC,aAAc,aAAc,aAAa/tB,SAAQoL,IAChD,QAAsC,IAA3BsiB,EAAiBtiB,GAAuB,OACnD,MAAM4iB,EAAmB7lB,EAAOiD,IAASjD,EAAOiD,GAAMyI,QAChDoa,EAAkBP,EAAiBtiB,IAASsiB,EAAiBtiB,GAAMyI,QACrEma,IAAqBC,GACvBtmB,EAAOyD,GAAM8iB,WAEVF,GAAoBC,GACvBtmB,EAAOyD,GAAM+iB,QACf,IAEF,MAAMC,EAAmBV,EAAiB/O,WAAa+O,EAAiB/O,YAAcxW,EAAOwW,UACvF0P,EAAclmB,EAAOoK,OAASmb,EAAiBhc,gBAAkBvJ,EAAOuJ,eAAiB0c,GACzFE,EAAUnmB,EAAOoK,KACnB6b,GAAoBrR,GACtBpV,EAAO4mB,kBAETroB,EAASyB,EAAOQ,OAAQulB,GACxB,MAAMc,EAAY7mB,EAAOQ,OAAO0L,QAC1B4a,EAAU9mB,EAAOQ,OAAOoK,KAC9B5S,OAAOsT,OAAOtL,EAAQ,CACpBif,eAAgBjf,EAAOQ,OAAOye,eAC9B1H,eAAgBvX,EAAOQ,OAAO+W,eAC9BC,eAAgBxX,EAAOQ,OAAOgX,iBAE5B2O,IAAeU,EACjB7mB,EAAOumB,WACGJ,GAAcU,GACxB7mB,EAAOwmB,SAETxmB,EAAO8lB,kBAAoBF,EAC3B5lB,EAAO2I,KAAK,oBAAqBod,GAC7B3Q,IACEsR,GACF1mB,EAAO4b,cACP5b,EAAO6Z,WAAWhP,GAClB7K,EAAOuL,iBACGob,GAAWG,GACrB9mB,EAAO6Z,WAAWhP,GAClB7K,EAAOuL,gBACEob,IAAYG,GACrB9mB,EAAO4b,eAGX5b,EAAO2I,KAAK,aAAcod,EAC5B,EA2CEF,cAzCF,SAAuBhY,EAAagQ,EAAMkJ,GAIxC,QAHa,IAATlJ,IACFA,EAAO,WAEJhQ,GAAwB,cAATgQ,IAAyBkJ,EAAa,OAC1D,IAAInB,GAAa,EACjB,MAAM5pB,EAASF,IACTkrB,EAAyB,WAATnJ,EAAoB7hB,EAAOirB,YAAcF,EAAY9b,aACrEic,EAASlvB,OAAOI,KAAKyV,GAAavQ,KAAI6pB,IAC1C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAMjoB,QAAQ,KAAY,CACzD,MAAMkoB,EAAWppB,WAAWmpB,EAAME,OAAO,IAEzC,MAAO,CACLC,MAFYN,EAAgBI,EAG5BD,QAEJ,CACA,MAAO,CACLG,MAAOH,EACPA,QACD,IAEHD,EAAOK,MAAK,CAAChqB,EAAGiqB,IAAMpc,SAAS7N,EAAE+pB,MAAO,IAAMlc,SAASoc,EAAEF,MAAO,MAChE,IAAK,IAAI1oB,EAAI,EAAGA,EAAIsoB,EAAO3uB,OAAQqG,GAAK,EAAG,CACzC,MAAMuoB,MACJA,EAAKG,MACLA,GACEJ,EAAOtoB,GACE,WAATif,EACE7hB,EAAOP,WAAW,eAAe6rB,QAAYplB,UAC/C0jB,EAAauB,GAENG,GAASP,EAAY/b,cAC9B4a,EAAauB,EAEjB,CACA,OAAOvB,GAAc,KACvB,GAmRE1V,cA7KoB,CACpBA,cA9BF,WACE,MAAMlQ,EAAS/E,MAEbqqB,SAAUmC,EAASjnB,OACnBA,GACER,GACEyM,mBACJA,GACEjM,EACJ,GAAIiM,EAAoB,CACtB,MAAMuG,EAAiBhT,EAAO0J,OAAOnR,OAAS,EACxCmvB,EAAqB1nB,EAAOsM,WAAW0G,GAAkBhT,EAAOuM,gBAAgByG,GAAuC,EAArBvG,EACxGzM,EAAOslB,SAAWtlB,EAAOsE,KAAOojB,CAClC,MACE1nB,EAAOslB,SAAsC,IAA3BtlB,EAAOqM,SAAS9T,QAEN,IAA1BiI,EAAO+W,iBACTvX,EAAOuX,gBAAkBvX,EAAOslB,WAEJ,IAA1B9kB,EAAOgX,iBACTxX,EAAOwX,gBAAkBxX,EAAOslB,UAE9BmC,GAAaA,IAAcznB,EAAOslB,WACpCtlB,EAAOyS,OAAQ,GAEbgV,IAAcznB,EAAOslB,UACvBtlB,EAAO2I,KAAK3I,EAAOslB,SAAW,OAAS,SAE3C,GA+KEppB,QAhNY,CACZyrB,WA/CF,WACE,MAAM3nB,EAAS/E,MACT2sB,WACJA,EAAUpnB,OACVA,EAAMsL,IACNA,EAAGnP,GACHA,EAAE4I,OACFA,GACEvF,EAEE6nB,EAzBR,SAAwBC,EAASC,GAC/B,MAAMC,EAAgB,GAYtB,OAXAF,EAAQzvB,SAAQ4vB,IACM,iBAATA,EACTjwB,OAAOI,KAAK6vB,GAAM5vB,SAAQuvB,IACpBK,EAAKL,IACPI,EAAc/jB,KAAK8jB,EAASH,EAC9B,IAEuB,iBAATK,GAChBD,EAAc/jB,KAAK8jB,EAASE,EAC9B,IAEKD,CACT,CAWmBE,CAAe,CAAC,cAAe1nB,EAAOwW,UAAW,CAChE,YAAahX,EAAOQ,OAAO6e,UAAY7e,EAAO6e,SAASnT,SACtD,CACDic,WAAc3nB,EAAO6S,YACpB,CACDvH,IAAOA,GACN,CACD3B,KAAQ3J,EAAO2J,MAAQ3J,EAAO2J,KAAKC,KAAO,GACzC,CACD,cAAe5J,EAAO2J,MAAQ3J,EAAO2J,KAAKC,KAAO,GAA0B,WAArB5J,EAAO2J,KAAKqQ,MACjE,CACD/U,QAAWF,EAAOE,SACjB,CACDD,IAAOD,EAAOC,KACb,CACD,WAAYhF,EAAO+M,SAClB,CACD6a,SAAY5nB,EAAO+M,SAAW/M,EAAO8M,gBACpC,CACD,iBAAkB9M,EAAO2P,sBACvB3P,EAAO8P,wBACXsX,EAAW3jB,QAAQ4jB,GACnBlrB,EAAG8F,UAAUC,OAAOklB,GACpB5nB,EAAOomB,sBACT,EAcEiC,cAZF,WACE,MACM1rB,GACJA,EAAEirB,WACFA,GAHa3sB,KAKf0B,EAAG8F,UAAU+G,UAAUoe,GALR3sB,KAMRmrB,sBACT,IAoNMkC,EAAmB,CAAC,EAC1B,MAAMC,GACJ,WAAAxwB,GACE,IAAI4E,EACA6D,EACJ,IAAK,IAAIyH,EAAOxJ,UAAUlG,OAAQ2P,EAAO,IAAIvF,MAAMsF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ1J,UAAU0J,GAEL,IAAhBD,EAAK3P,QAAgB2P,EAAK,GAAGnQ,aAAwE,WAAzDC,OAAOoG,UAAUN,SAASO,KAAK6J,EAAK,IAAI5J,MAAM,GAAI,GAChGkC,EAAS0H,EAAK,IAEbvL,EAAI6D,GAAU0H,EAEZ1H,IAAQA,EAAS,CAAC,GACvBA,EAASjC,EAAS,CAAC,EAAGiC,GAClB7D,IAAO6D,EAAO7D,KAAI6D,EAAO7D,GAAKA,GAClC,MAAMpC,EAAWF,IACjB,GAAImG,EAAO7D,IAA2B,iBAAd6D,EAAO7D,IAAmBpC,EAASvB,iBAAiBwH,EAAO7D,IAAIpE,OAAS,EAAG,CACjG,MAAMiwB,EAAU,GAQhB,OAPAjuB,EAASvB,iBAAiBwH,EAAO7D,IAAItE,SAAQ0uB,IAC3C,MAAM0B,EAAYlqB,EAAS,CAAC,EAAGiC,EAAQ,CACrC7D,GAAIoqB,IAENyB,EAAQvkB,KAAK,IAAIskB,GAAOE,GAAW,IAG9BD,CACT,CAGA,MAAMxoB,EAAS/E,KACf+E,EAAOP,YAAa,EACpBO,EAAOyE,QAAUG,IACjB5E,EAAOuF,OAASL,EAAU,CACxBxK,UAAW8F,EAAO9F,YAEpBsF,EAAO2E,QAAU2B,IACjBtG,EAAOyH,gBAAkB,CAAC,EAC1BzH,EAAOsI,mBAAqB,GAC5BtI,EAAO0oB,QAAU,IAAI1oB,EAAO2oB,aACxBnoB,EAAOkoB,SAAW/lB,MAAMC,QAAQpC,EAAOkoB,UACzC1oB,EAAO0oB,QAAQzkB,QAAQzD,EAAOkoB,SAEhC,MAAM7D,EAAmB,CAAC,EAC1B7kB,EAAO0oB,QAAQrwB,SAAQuwB,IACrBA,EAAI,CACFpoB,SACAR,SACA6oB,aAAcjE,EAAmBpkB,EAAQqkB,GACzCzd,GAAIpH,EAAOoH,GAAGse,KAAK1lB,GACnB6H,KAAM7H,EAAO6H,KAAK6d,KAAK1lB,GACvB+H,IAAK/H,EAAO+H,IAAI2d,KAAK1lB,GACrB2I,KAAM3I,EAAO2I,KAAK+c,KAAK1lB,IACvB,IAIJ,MAAM8oB,EAAevqB,EAAS,CAAC,EAAG0lB,EAAUY,GAqG5C,OAlGA7kB,EAAOQ,OAASjC,EAAS,CAAC,EAAGuqB,EAAcR,EAAkB9nB,GAC7DR,EAAOgmB,eAAiBznB,EAAS,CAAC,EAAGyB,EAAOQ,QAC5CR,EAAO+oB,aAAexqB,EAAS,CAAC,EAAGiC,GAG/BR,EAAOQ,QAAUR,EAAOQ,OAAO4G,IACjCpP,OAAOI,KAAK4H,EAAOQ,OAAO4G,IAAI/O,SAAQ2wB,IACpChpB,EAAOoH,GAAG4hB,EAAWhpB,EAAOQ,OAAO4G,GAAG4hB,GAAW,IAGjDhpB,EAAOQ,QAAUR,EAAOQ,OAAO6H,OACjCrI,EAAOqI,MAAMrI,EAAOQ,OAAO6H,OAI7BrQ,OAAOsT,OAAOtL,EAAQ,CACpBkM,QAASlM,EAAOQ,OAAO0L,QACvBvP,KAEAirB,WAAY,GAEZle,OAAQ,GACR4C,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAEjBrB,aAAY,IACyB,eAA5BlL,EAAOQ,OAAOwW,UAEvB7L,WAAU,IAC2B,aAA5BnL,EAAOQ,OAAOwW,UAGvB9M,YAAa,EACbW,UAAW,EAEX2H,aAAa,EACbC,OAAO,EAEPrS,UAAW,EACXgW,kBAAmB,EACnBlV,SAAU,EACV+nB,SAAU,EACVxS,WAAW,EACX,qBAAAnF,GAGE,OAAOnQ,KAAK+nB,MAAMjuB,KAAKmF,UAAY,GAAK,IAAM,GAAK,EACrD,EAEAmX,eAAgBvX,EAAOQ,OAAO+W,eAC9BC,eAAgBxX,EAAOQ,OAAOgX,eAE9B8D,gBAAiB,CACf8B,eAAW1e,EACX2e,aAAS3e,EACT+f,yBAAqB/f,EACrBkgB,oBAAgBlgB,EAChBggB,iBAAahgB,EACboX,sBAAkBpX,EAClB6c,oBAAgB7c,EAChBogB,wBAAoBpgB,EAEpBqgB,kBAAmB/e,EAAOQ,OAAOue,kBAEjC6C,cAAe,EACfuH,kBAAczqB,EAEd0qB,WAAY,GACZpI,yBAAqBtiB,EACrBigB,iBAAajgB,EACb8d,UAAW,KACXE,QAAS,MAGXyB,YAAY,EAEZc,eAAgBjf,EAAOQ,OAAOye,eAC9BpC,QAAS,CACPb,OAAQ,EACRwC,OAAQ,EACRH,SAAU,EACVC,SAAU,EACVjD,KAAM,GAGRgO,aAAc,GACdC,aAAc,IAEhBtpB,EAAO2I,KAAK,WAGR3I,EAAOQ,OAAO0jB,MAChBlkB,EAAOkkB,OAKFlkB,CACT,CACA,iBAAA0L,CAAkB6d,GAChB,OAAItuB,KAAKiQ,eACAqe,EAGF,CACL5jB,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjBwH,YAAe,gBACfoc,EACJ,CACA,aAAA3P,CAAc/X,GACZ,MAAM8J,SACJA,EAAQnL,OACRA,GACEvF,KAEE8X,EAAkBrP,EADT3B,EAAgB4J,EAAU,IAAInL,EAAO6I,4BACR,IAC5C,OAAO3F,EAAa7B,GAAWkR,CACjC,CACA,mBAAAhC,CAAoBvI,GAClB,OAAOvN,KAAK2e,cAAc3e,KAAKyO,OAAOrN,QAAOwF,GAA6D,EAAlDA,EAAQsT,aAAa,6BAAmC3M,IAAO,GACzH,CACA,YAAA6R,GACE,MACM1O,SACJA,EAAQnL,OACRA,GAHavF,UAKRyO,OAAS3H,EAAgB4J,EAAU,IAAInL,EAAO6I,2BACvD,CACA,MAAAmd,GACE,MAAMxmB,EAAS/E,KACX+E,EAAOkM,UACXlM,EAAOkM,SAAU,EACblM,EAAOQ,OAAOygB,YAChBjhB,EAAOkhB,gBAETlhB,EAAO2I,KAAK,UACd,CACA,OAAA4d,GACE,MAAMvmB,EAAS/E,KACV+E,EAAOkM,UACZlM,EAAOkM,SAAU,EACblM,EAAOQ,OAAOygB,YAChBjhB,EAAOwlB,kBAETxlB,EAAO2I,KAAK,WACd,CACA,WAAA6gB,CAAYtoB,EAAUT,GACpB,MAAMT,EAAS/E,KACfiG,EAAWC,KAAKE,IAAIF,KAAKC,IAAIF,EAAU,GAAI,GAC3C,MAAMG,EAAMrB,EAAO8R,eAEb/Q,GADMf,EAAOuS,eACIlR,GAAOH,EAAWG,EACzCrB,EAAOqW,YAAYtV,OAA0B,IAAVN,EAAwB,EAAIA,GAC/DT,EAAOuU,oBACPvU,EAAOsT,qBACT,CACA,oBAAA8S,GACE,MAAMpmB,EAAS/E,KACf,IAAK+E,EAAOQ,OAAOmkB,eAAiB3kB,EAAOrD,GAAI,OAC/C,MAAM8sB,EAAMzpB,EAAOrD,GAAG+sB,UAAUttB,MAAM,KAAKC,QAAOqtB,GACT,IAAhCA,EAAUxqB,QAAQ,WAA+E,IAA5DwqB,EAAUxqB,QAAQc,EAAOQ,OAAO8P,0BAE9EtQ,EAAO2I,KAAK,oBAAqB8gB,EAAIhsB,KAAK,KAC5C,CACA,eAAAksB,CAAgB9nB,GACd,MAAM7B,EAAS/E,KACf,OAAI+E,EAAO0H,UAAkB,GACtB7F,EAAQ6nB,UAAUttB,MAAM,KAAKC,QAAOqtB,GACI,IAAtCA,EAAUxqB,QAAQ,iBAAyE,IAAhDwqB,EAAUxqB,QAAQc,EAAOQ,OAAO6I,cACjF5L,KAAK,IACV,CACA,iBAAA6W,GACE,MAAMtU,EAAS/E,KACf,IAAK+E,EAAOQ,OAAOmkB,eAAiB3kB,EAAOrD,GAAI,OAC/C,MAAMitB,EAAU,GAChB5pB,EAAO0J,OAAOrR,SAAQwJ,IACpB,MAAM+lB,EAAa5nB,EAAO2pB,gBAAgB9nB,GAC1C+nB,EAAQ3lB,KAAK,CACXpC,UACA+lB,eAEF5nB,EAAO2I,KAAK,cAAe9G,EAAS+lB,EAAW,IAEjD5nB,EAAO2I,KAAK,gBAAiBihB,EAC/B,CACA,oBAAA5f,CAAqB6f,EAAMC,QACZ,IAATD,IACFA,EAAO,gBAEK,IAAVC,IACFA,GAAQ,GAEV,MACMtpB,OACJA,EAAMkJ,OACNA,EAAM4C,WACNA,EAAUC,gBACVA,EACAjI,KAAMsH,EAAU1B,YAChBA,GAPajP,KASf,IAAI8uB,EAAM,EACV,GAAoC,iBAAzBvpB,EAAOuJ,cAA4B,OAAOvJ,EAAOuJ,cAC5D,GAAIvJ,EAAO8M,eAAgB,CACzB,IACI0c,EADAvc,EAAY/D,EAAOQ,GAAeR,EAAOQ,GAAasE,gBAAkB,EAE5E,IAAK,IAAI5P,EAAIsL,EAAc,EAAGtL,EAAI8K,EAAOnR,OAAQqG,GAAK,EAChD8K,EAAO9K,KAAOorB,IAChBvc,GAAa/D,EAAO9K,GAAG4P,gBACvBub,GAAO,EACHtc,EAAY7B,IAAYoe,GAAY,IAG5C,IAAK,IAAIprB,EAAIsL,EAAc,EAAGtL,GAAK,EAAGA,GAAK,EACrC8K,EAAO9K,KAAOorB,IAChBvc,GAAa/D,EAAO9K,GAAG4P,gBACvBub,GAAO,EACHtc,EAAY7B,IAAYoe,GAAY,GAG9C,MAEE,GAAa,YAATH,EACF,IAAK,IAAIjrB,EAAIsL,EAAc,EAAGtL,EAAI8K,EAAOnR,OAAQqG,GAAK,EAAG,EACnCkrB,EAAQxd,EAAW1N,GAAK2N,EAAgB3N,GAAK0N,EAAWpC,GAAe0B,EAAaU,EAAW1N,GAAK0N,EAAWpC,GAAe0B,KAEhJme,GAAO,EAEX,MAGA,IAAK,IAAInrB,EAAIsL,EAAc,EAAGtL,GAAK,EAAGA,GAAK,EAAG,CACxB0N,EAAWpC,GAAeoC,EAAW1N,GAAKgN,IAE5Dme,GAAO,EAEX,CAGJ,OAAOA,CACT,CACA,MAAAjf,GACE,MAAM9K,EAAS/E,KACf,IAAK+E,GAAUA,EAAO0H,UAAW,OACjC,MAAM2E,SACJA,EAAQ7L,OACRA,GACER,EAcJ,SAAS+V,IACP,MAAMkU,EAAiBjqB,EAAO6L,cAAmC,EAApB7L,EAAOI,UAAiBJ,EAAOI,UACtEuW,EAAexV,KAAKE,IAAIF,KAAKC,IAAI6oB,EAAgBjqB,EAAOuS,gBAAiBvS,EAAO8R,gBACtF9R,EAAO+V,aAAaY,GACpB3W,EAAOuU,oBACPvU,EAAOsT,qBACT,CACA,IAAI4W,EACJ,GApBI1pB,EAAOqN,aACT7N,EAAO2iB,gBAET,IAAI3iB,EAAOrD,GAAG3D,iBAAiB,qBAAqBX,SAAQ6Q,IACtDA,EAAQihB,UACVlhB,EAAqBjJ,EAAQkJ,EAC/B,IAEFlJ,EAAO+K,aACP/K,EAAOuL,eACPvL,EAAOoS,iBACPpS,EAAOsT,sBASH9S,EAAO6e,UAAY7e,EAAO6e,SAASnT,UAAY1L,EAAO+M,QACxDwI,IACIvV,EAAO6S,YACTrT,EAAO0Q,uBAEJ,CACL,IAA8B,SAAzBlQ,EAAOuJ,eAA4BvJ,EAAOuJ,cAAgB,IAAM/J,EAAOyS,QAAUjS,EAAO8M,eAAgB,CAC3G,MAAM5D,EAAS1J,EAAOiM,SAAWzL,EAAOyL,QAAQC,QAAUlM,EAAOiM,QAAQvC,OAAS1J,EAAO0J,OACzFwgB,EAAalqB,EAAOkX,QAAQxN,EAAOnR,OAAS,EAAG,GAAG,GAAO,EAC3D,MACE2xB,EAAalqB,EAAOkX,QAAQlX,EAAOkK,YAAa,GAAG,GAAO,GAEvDggB,GACHnU,GAEJ,CACIvV,EAAOyP,eAAiB5D,IAAarM,EAAOqM,UAC9CrM,EAAOkQ,gBAETlQ,EAAO2I,KAAK,SACd,CACA,eAAAie,CAAgBwD,EAAcC,QACT,IAAfA,IACFA,GAAa,GAEf,MAAMrqB,EAAS/E,KACTqvB,EAAmBtqB,EAAOQ,OAAOwW,UAKvC,OAJKoT,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAE9DF,IAAiBE,GAAqC,eAAjBF,GAAkD,aAAjBA,IAG1EpqB,EAAOrD,GAAG8F,UAAU+G,OAAO,GAAGxJ,EAAOQ,OAAO8P,yBAAyBga,KACrEtqB,EAAOrD,GAAG8F,UAAUC,IAAI,GAAG1C,EAAOQ,OAAO8P,yBAAyB8Z,KAClEpqB,EAAOomB,uBACPpmB,EAAOQ,OAAOwW,UAAYoT,EAC1BpqB,EAAO0J,OAAOrR,SAAQwJ,IACC,aAAjBuoB,EACFvoB,EAAQtI,MAAMoM,MAAQ,GAEtB9D,EAAQtI,MAAMsM,OAAS,EACzB,IAEF7F,EAAO2I,KAAK,mBACR0hB,GAAYrqB,EAAO8K,UAdd9K,CAgBX,CACA,uBAAAuqB,CAAwBvT,GACtB,MAAMhX,EAAS/E,KACX+E,EAAO8L,KAAqB,QAAdkL,IAAwBhX,EAAO8L,KAAqB,QAAdkL,IACxDhX,EAAO8L,IAAoB,QAAdkL,EACbhX,EAAO6L,aAA2C,eAA5B7L,EAAOQ,OAAOwW,WAA8BhX,EAAO8L,IACrE9L,EAAO8L,KACT9L,EAAOrD,GAAG8F,UAAUC,IAAI,GAAG1C,EAAOQ,OAAO8P,6BACzCtQ,EAAOrD,GAAGkE,IAAM,QAEhBb,EAAOrD,GAAG8F,UAAU+G,OAAO,GAAGxJ,EAAOQ,OAAO8P,6BAC5CtQ,EAAOrD,GAAGkE,IAAM,OAElBb,EAAO8K,SACT,CACA,KAAA0f,CAAMxoB,GACJ,MAAMhC,EAAS/E,KACf,GAAI+E,EAAOyqB,QAAS,OAAO,EAG3B,IAAI9tB,EAAKqF,GAAWhC,EAAOQ,OAAO7D,GAIlC,GAHkB,iBAAPA,IACTA,EAAKpC,SAASxB,cAAc4D,KAEzBA,EACH,OAAO,EAETA,EAAGqD,OAASA,EACRrD,EAAG+tB,YAAc/tB,EAAG+tB,WAAW5wB,MAAwC,qBAAhC6C,EAAG+tB,WAAW5wB,KAAKhB,WAC5DkH,EAAOoJ,WAAY,GAErB,MAAMuhB,EAAqB,IAClB,KAAK3qB,EAAOQ,OAAOkkB,cAAgB,IAAIvoB,OAAOC,MAAM,KAAKqB,KAAK,OAWvE,IAAIiD,EATe,MACjB,GAAI/D,GAAMA,EAAGmF,YAAcnF,EAAGmF,WAAW/I,cAAe,CAGtD,OAFY4D,EAAGmF,WAAW/I,cAAc4xB,IAG1C,CACA,OAAO5oB,EAAgBpF,EAAIguB,KAAsB,EAAE,EAGrCC,GAmBhB,OAlBKlqB,GAAaV,EAAOQ,OAAO4jB,iBAC9B1jB,EAAYtH,EAAc,MAAO4G,EAAOQ,OAAOkkB,cAC/C/nB,EAAGwd,OAAOzZ,GACVqB,EAAgBpF,EAAI,IAAIqD,EAAOQ,OAAO6I,cAAchR,SAAQwJ,IAC1DnB,EAAUyZ,OAAOtY,EAAQ,KAG7B7J,OAAOsT,OAAOtL,EAAQ,CACpBrD,KACA+D,YACAiL,SAAU3L,EAAOoJ,YAAczM,EAAG+tB,WAAW5wB,KAAK+wB,WAAaluB,EAAG+tB,WAAW5wB,KAAO4G,EACpFoqB,OAAQ9qB,EAAOoJ,UAAYzM,EAAG+tB,WAAW5wB,KAAO6C,EAChD8tB,SAAS,EAET3e,IAA8B,QAAzBnP,EAAGkE,IAAI4F,eAA6D,QAAlCjD,EAAa7G,EAAI,aACxDkP,aAA0C,eAA5B7L,EAAOQ,OAAOwW,YAAwD,QAAzBra,EAAGkE,IAAI4F,eAA6D,QAAlCjD,EAAa7G,EAAI,cAC9GoP,SAAiD,gBAAvCvI,EAAa9C,EAAW,cAE7B,CACT,CACA,IAAAwjB,CAAKvnB,GACH,MAAMqD,EAAS/E,KACf,GAAI+E,EAAOoV,YAAa,OAAOpV,EAE/B,IAAgB,IADAA,EAAOwqB,MAAM7tB,GACN,OAAOqD,EAC9BA,EAAO2I,KAAK,cAGR3I,EAAOQ,OAAOqN,aAChB7N,EAAO2iB,gBAIT3iB,EAAO2nB,aAGP3nB,EAAO+K,aAGP/K,EAAOuL,eACHvL,EAAOQ,OAAOyP,eAChBjQ,EAAOkQ,gBAILlQ,EAAOQ,OAAOygB,YAAcjhB,EAAOkM,SACrClM,EAAOkhB,gBAILlhB,EAAOQ,OAAOoK,MAAQ5K,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAChElM,EAAOkX,QAAQlX,EAAOQ,OAAOsX,aAAe9X,EAAOiM,QAAQiD,aAAc,EAAGlP,EAAOQ,OAAO6U,oBAAoB,GAAO,GAErHrV,EAAOkX,QAAQlX,EAAOQ,OAAOsX,aAAc,EAAG9X,EAAOQ,OAAO6U,oBAAoB,GAAO,GAIrFrV,EAAOQ,OAAOoK,MAChB5K,EAAO6Z,aAIT7Z,EAAOylB,eACP,MAAMsF,EAAe,IAAI/qB,EAAOrD,GAAG3D,iBAAiB,qBAsBpD,OArBIgH,EAAOoJ,WACT2hB,EAAa9mB,QAAQjE,EAAO8qB,OAAO9xB,iBAAiB,qBAEtD+xB,EAAa1yB,SAAQ6Q,IACfA,EAAQihB,SACVlhB,EAAqBjJ,EAAQkJ,GAE7BA,EAAQxQ,iBAAiB,QAAQ0L,IAC/B6E,EAAqBjJ,EAAQoE,EAAElM,OAAO,GAE1C,IAEF0R,EAAQ5J,GAGRA,EAAOoV,aAAc,EACrBxL,EAAQ5J,GAGRA,EAAO2I,KAAK,QACZ3I,EAAO2I,KAAK,aACL3I,CACT,CACA,OAAAgrB,CAAQC,EAAgBC,QACC,IAAnBD,IACFA,GAAiB,QAEC,IAAhBC,IACFA,GAAc,GAEhB,MAAMlrB,EAAS/E,MACTuF,OACJA,EAAM7D,GACNA,EAAE+D,UACFA,EAASgJ,OACTA,GACE1J,EACJ,YAA6B,IAAlBA,EAAOQ,QAA0BR,EAAO0H,YAGnD1H,EAAO2I,KAAK,iBAGZ3I,EAAOoV,aAAc,EAGrBpV,EAAO2lB,eAGHnlB,EAAOoK,MACT5K,EAAO4b,cAILsP,IACFlrB,EAAOqoB,gBACP1rB,EAAGgN,gBAAgB,SACnBjJ,EAAUiJ,gBAAgB,SACtBD,GAAUA,EAAOnR,QACnBmR,EAAOrR,SAAQwJ,IACbA,EAAQY,UAAU+G,OAAOhJ,EAAOiR,kBAAmBjR,EAAOkR,uBAAwBlR,EAAOmT,iBAAkBnT,EAAOoT,eAAgBpT,EAAOqT,gBACzIhS,EAAQ8H,gBAAgB,SACxB9H,EAAQ8H,gBAAgB,0BAA0B,KAIxD3J,EAAO2I,KAAK,WAGZ3Q,OAAOI,KAAK4H,EAAOyH,iBAAiBpP,SAAQ2wB,IAC1ChpB,EAAO+H,IAAIihB,EAAU,KAEA,IAAnBiC,IACFjrB,EAAOrD,GAAGqD,OAAS,KArhIzB,SAAqBlI,GACnB,MAAMqzB,EAASrzB,EACfE,OAAOI,KAAK+yB,GAAQ9yB,SAAQC,IAC1B,IACE6yB,EAAO7yB,GAAO,IAChB,CAAE,MAAO8L,GAET,CACA,WACS+mB,EAAO7yB,EAChB,CAAE,MAAO8L,GAET,IAEJ,CAwgIMgnB,CAAYprB,IAEdA,EAAO0H,WAAY,GAtCV,IAwCX,CACA,qBAAO2jB,CAAeC,GACpB/sB,EAAS+pB,EAAkBgD,EAC7B,CACA,2BAAWhD,GACT,OAAOA,CACT,CACA,mBAAWrE,GACT,OAAOA,CACT,CACA,oBAAOsH,CAAc3C,GACdL,GAAOnqB,UAAUuqB,cAAaJ,GAAOnqB,UAAUuqB,YAAc,IAClE,MAAMD,EAAUH,GAAOnqB,UAAUuqB,YACd,mBAARC,GAAsBF,EAAQxpB,QAAQ0pB,GAAO,GACtDF,EAAQzkB,KAAK2kB,EAEjB,CACA,UAAO4C,CAAIC,GACT,OAAI9oB,MAAMC,QAAQ6oB,IAChBA,EAAOpzB,SAAQqzB,GAAKnD,GAAOgD,cAAcG,KAClCnD,KAETA,GAAOgD,cAAcE,GACdlD,GACT,EAo1BF,SAASoD,GAA0B3rB,EAAQgmB,EAAgBxlB,EAAQorB,GAejE,OAdI5rB,EAAOQ,OAAO4jB,gBAChBpsB,OAAOI,KAAKwzB,GAAYvzB,SAAQC,IAC9B,IAAKkI,EAAOlI,KAAwB,IAAhBkI,EAAOwkB,KAAe,CACxC,IAAIhjB,EAAUD,EAAgB/B,EAAOrD,GAAI,IAAIivB,EAAWtzB,MAAQ,GAC3D0J,IACHA,EAAU5I,EAAc,MAAOwyB,EAAWtzB,IAC1C0J,EAAQ0nB,UAAYkC,EAAWtzB,GAC/B0H,EAAOrD,GAAGwd,OAAOnY,IAEnBxB,EAAOlI,GAAO0J,EACdgkB,EAAe1tB,GAAO0J,CACxB,KAGGxB,CACT,CA8LA,SAASqrB,GAAkB3vB,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEL,IAAIA,EAAQC,OAAOqB,QAAQ,eAAgB,QACnDA,QAAQ,KAAM,MACf,CAmjGA,SAASsuB,GAAYpiB,GACnB,MAAM1J,EAAS/E,MACTuF,OACJA,EAAMmL,SACNA,GACE3L,EACAQ,EAAOoK,MACT5K,EAAO4b,cAET,MAAMmQ,EAAgBlqB,IACpB,GAAuB,iBAAZA,EAAsB,CAC/B,MAAMmqB,EAAUzxB,SAASnB,cAAc,OACvC4yB,EAAQC,UAAYpqB,EACpB8J,EAASwO,OAAO6R,EAAQ3yB,SAAS,IACjC2yB,EAAQC,UAAY,EACtB,MACEtgB,EAASwO,OAAOtY,EAClB,EAEF,GAAsB,iBAAX6H,GAAuB,WAAYA,EAC5C,IAAK,IAAI9K,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAClC8K,EAAO9K,IAAImtB,EAAcriB,EAAO9K,SAGtCmtB,EAAcriB,GAEhB1J,EAAOqa,eACH7Z,EAAOoK,MACT5K,EAAO6Z,aAEJrZ,EAAO0rB,WAAYlsB,EAAOoJ,WAC7BpJ,EAAO8K,QAEX,CAEA,SAASqhB,GAAaziB,GACpB,MAAM1J,EAAS/E,MACTuF,OACJA,EAAM0J,YACNA,EAAWyB,SACXA,GACE3L,EACAQ,EAAOoK,MACT5K,EAAO4b,cAET,IAAIpH,EAAiBtK,EAAc,EACnC,MAAMkiB,EAAiBvqB,IACrB,GAAuB,iBAAZA,EAAsB,CAC/B,MAAMmqB,EAAUzxB,SAASnB,cAAc,OACvC4yB,EAAQC,UAAYpqB,EACpB8J,EAASwP,QAAQ6Q,EAAQ3yB,SAAS,IAClC2yB,EAAQC,UAAY,EACtB,MACEtgB,EAASwP,QAAQtZ,EACnB,EAEF,GAAsB,iBAAX6H,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI9K,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAClC8K,EAAO9K,IAAIwtB,EAAe1iB,EAAO9K,IAEvC4V,EAAiBtK,EAAcR,EAAOnR,MACxC,MACE6zB,EAAe1iB,GAEjB1J,EAAOqa,eACH7Z,EAAOoK,MACT5K,EAAO6Z,aAEJrZ,EAAO0rB,WAAYlsB,EAAOoJ,WAC7BpJ,EAAO8K,SAET9K,EAAOkX,QAAQ1C,EAAgB,GAAG,EACpC,CAEA,SAAS6X,GAAS7jB,EAAOkB,GACvB,MAAM1J,EAAS/E,MACTuF,OACJA,EAAM0J,YACNA,EAAWyB,SACXA,GACE3L,EACJ,IAAIssB,EAAoBpiB,EACpB1J,EAAOoK,OACT0hB,GAAqBtsB,EAAO2Z,aAC5B3Z,EAAO4b,cACP5b,EAAOqa,gBAET,MAAMkS,EAAavsB,EAAO0J,OAAOnR,OACjC,GAAIiQ,GAAS,EAEX,YADAxI,EAAOmsB,aAAaziB,GAGtB,GAAIlB,GAAS+jB,EAEX,YADAvsB,EAAO8rB,YAAYpiB,GAGrB,IAAI8K,EAAiB8X,EAAoB9jB,EAAQ8jB,EAAoB,EAAIA,EACzE,MAAME,EAAe,GACrB,IAAK,IAAI5tB,EAAI2tB,EAAa,EAAG3tB,GAAK4J,EAAO5J,GAAK,EAAG,CAC/C,MAAM6tB,EAAezsB,EAAO0J,OAAO9K,GACnC6tB,EAAajjB,SACbgjB,EAAaxjB,QAAQyjB,EACvB,CACA,GAAsB,iBAAX/iB,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI9K,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAClC8K,EAAO9K,IAAI+M,EAASwO,OAAOzQ,EAAO9K,IAExC4V,EAAiB8X,EAAoB9jB,EAAQ8jB,EAAoB5iB,EAAOnR,OAAS+zB,CACnF,MACE3gB,EAASwO,OAAOzQ,GAElB,IAAK,IAAI9K,EAAI,EAAGA,EAAI4tB,EAAaj0B,OAAQqG,GAAK,EAC5C+M,EAASwO,OAAOqS,EAAa5tB,IAE/BoB,EAAOqa,eACH7Z,EAAOoK,MACT5K,EAAO6Z,aAEJrZ,EAAO0rB,WAAYlsB,EAAOoJ,WAC7BpJ,EAAO8K,SAELtK,EAAOoK,KACT5K,EAAOkX,QAAQ1C,EAAiBxU,EAAO2Z,aAAc,GAAG,GAExD3Z,EAAOkX,QAAQ1C,EAAgB,GAAG,EAEtC,CAEA,SAASkY,GAAYC,GACnB,MAAM3sB,EAAS/E,MACTuF,OACJA,EAAM0J,YACNA,GACElK,EACJ,IAAIssB,EAAoBpiB,EACpB1J,EAAOoK,OACT0hB,GAAqBtsB,EAAO2Z,aAC5B3Z,EAAO4b,eAET,IACIgR,EADApY,EAAiB8X,EAErB,GAA6B,iBAAlBK,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAI/tB,EAAI,EAAGA,EAAI+tB,EAAcp0B,OAAQqG,GAAK,EAC7CguB,EAAgBD,EAAc/tB,GAC1BoB,EAAO0J,OAAOkjB,IAAgB5sB,EAAO0J,OAAOkjB,GAAepjB,SAC3DojB,EAAgBpY,IAAgBA,GAAkB,GAExDA,EAAiBrT,KAAKC,IAAIoT,EAAgB,EAC5C,MACEoY,EAAgBD,EACZ3sB,EAAO0J,OAAOkjB,IAAgB5sB,EAAO0J,OAAOkjB,GAAepjB,SAC3DojB,EAAgBpY,IAAgBA,GAAkB,GACtDA,EAAiBrT,KAAKC,IAAIoT,EAAgB,GAE5CxU,EAAOqa,eACH7Z,EAAOoK,MACT5K,EAAO6Z,aAEJrZ,EAAO0rB,WAAYlsB,EAAOoJ,WAC7BpJ,EAAO8K,SAELtK,EAAOoK,KACT5K,EAAOkX,QAAQ1C,EAAiBxU,EAAO2Z,aAAc,GAAG,GAExD3Z,EAAOkX,QAAQ1C,EAAgB,GAAG,EAEtC,CAEA,SAASqY,KACP,MAAM7sB,EAAS/E,KACT0xB,EAAgB,GACtB,IAAK,IAAI/tB,EAAI,EAAGA,EAAIoB,EAAO0J,OAAOnR,OAAQqG,GAAK,EAC7C+tB,EAAc1oB,KAAKrF,GAErBoB,EAAO0sB,YAAYC,EACrB,CAeA,SAASG,GAAWtsB,GAClB,MAAMoO,OACJA,EAAM5O,OACNA,EAAMoH,GACNA,EAAE2O,aACFA,EAAYlF,cACZA,EAAakc,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACE1sB,EA+BJ,IAAI2sB,EA9BJ/lB,EAAG,cAAc,KACf,GAAIpH,EAAOQ,OAAOoO,SAAWA,EAAQ,OACrC5O,EAAO4nB,WAAW3jB,KAAK,GAAGjE,EAAOQ,OAAO8P,yBAAyB1B,KAC7Doe,GAAeA,KACjBhtB,EAAO4nB,WAAW3jB,KAAK,GAAGjE,EAAOQ,OAAO8P,4BAE1C,MAAM8c,EAAwBL,EAAkBA,IAAoB,CAAC,EACrE/0B,OAAOsT,OAAOtL,EAAOQ,OAAQ4sB,GAC7Bp1B,OAAOsT,OAAOtL,EAAOgmB,eAAgBoH,EAAsB,IAE7DhmB,EAAG,gBAAgB,KACbpH,EAAOQ,OAAOoO,SAAWA,GAC7BmH,GAAc,IAEhB3O,EAAG,iBAAiB,CAACimB,EAAI9sB,KACnBP,EAAOQ,OAAOoO,SAAWA,GAC7BiC,EAActQ,EAAS,IAEzB6G,EAAG,iBAAiB,KAClB,GAAIpH,EAAOQ,OAAOoO,SAAWA,GACzBqe,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBI,aAAc,OAEzDttB,EAAO0J,OAAOrR,SAAQwJ,IACpBA,EAAQ7I,iBAAiB,gHAAgHX,SAAQk1B,GAAYA,EAAS/jB,UAAS,IAGjLyjB,GACF,KAGF7lB,EAAG,iBAAiB,KACdpH,EAAOQ,OAAOoO,SAAWA,IACxB5O,EAAO0J,OAAOnR,SACjB40B,GAAyB,GAE3BzxB,uBAAsB,KAChByxB,GAA0BntB,EAAO0J,QAAU1J,EAAO0J,OAAOnR,SAC3Dwd,IACAoX,GAAyB,EAC3B,IACA,GAEN,CAEA,SAASK,GAAaC,EAAc5rB,GAClC,MAAM6rB,EAAc9rB,EAAoBC,GAKxC,OAJI6rB,IAAgB7rB,IAClB6rB,EAAYn0B,MAAMo0B,mBAAqB,SACvCD,EAAYn0B,MAAM,+BAAiC,UAE9Cm0B,CACT,CAEA,SAASE,GAA2B7tB,GAClC,IAAIC,OACFA,EAAMO,SACNA,EAAQstB,kBACRA,EAAiBC,UACjBA,GACE/tB,EACJ,MAAMmK,YACJA,GACElK,EASJ,GAAIA,EAAOQ,OAAOqV,kBAAiC,IAAbtV,EAAgB,CACpD,IACIwtB,EADAC,GAAiB,EAGnBD,EADED,EACoBD,EAEAA,EAAkBxxB,QAAOqxB,IAC7C,MAAM/wB,EAAK+wB,EAAYjrB,UAAU+N,SAAS,0BAf/B7T,KACf,IAAKA,EAAGqH,cAGN,OADchE,EAAO0J,OAAOrN,QAAOwF,GAAWA,EAAQC,YAAcD,EAAQC,aAAenF,EAAG+tB,aAAY,GAG5G,OAAO/tB,EAAGqH,aAAa,EASmDiqB,CAASP,GAAeA,EAC9F,OAAO1tB,EAAO4Z,cAAcjd,KAAQuN,CAAW,IAGnD6jB,EAAoB11B,SAAQsE,IAC1BuH,EAAqBvH,GAAI,KACvB,GAAIqxB,EAAgB,OACpB,IAAKhuB,GAAUA,EAAO0H,UAAW,OACjCsmB,GAAiB,EACjBhuB,EAAOyW,WAAY,EACnB,MAAMoK,EAAM,IAAI7kB,OAAOhB,YAAY,gBAAiB,CAClD8lB,SAAS,EACTZ,YAAY,IAEdlgB,EAAOU,UAAUqgB,cAAcF,EAAI,GACnC,GAEN,CACF,CA0OA,SAASqN,GAAaC,EAAQtsB,EAAS3B,GACrC,MAAMkuB,EAAc,sBAAsBluB,EAAO,IAAIA,IAAS,KAAKiuB,EAAS,wBAAwBA,IAAW,KACzGE,EAAkBzsB,EAAoBC,GAC5C,IAAI0rB,EAAWc,EAAgBt1B,cAAc,IAAIq1B,EAAYhyB,MAAM,KAAKqB,KAAK,QAK7E,OAJK8vB,IACHA,EAAWn0B,EAAc,MAAOg1B,EAAYhyB,MAAM,MAClDiyB,EAAgBlU,OAAOoT,IAElBA,CACT,CAvnJAv1B,OAAOI,KAAK6sB,GAAY5sB,SAAQi2B,IAC9Bt2B,OAAOI,KAAK6sB,EAAWqJ,IAAiBj2B,SAAQk2B,IAC9ChG,GAAOnqB,UAAUmwB,GAAetJ,EAAWqJ,GAAgBC,EAAY,GACvE,IAEJhG,GAAOiD,IAAI,CAjsHX,SAAgBzrB,GACd,IAAIC,OACFA,EAAMoH,GACNA,EAAEuB,KACFA,GACE5I,EACJ,MAAM/D,EAASF,IACf,IAAIowB,EAAW,KACXsC,EAAiB,KACrB,MAAMC,EAAgB,KACfzuB,IAAUA,EAAO0H,WAAc1H,EAAOoV,cAC3CzM,EAAK,gBACLA,EAAK,UAAS,EAsCV+lB,EAA2B,KAC1B1uB,IAAUA,EAAO0H,WAAc1H,EAAOoV,aAC3CzM,EAAK,oBAAoB,EAE3BvB,EAAG,QAAQ,KACLpH,EAAOQ,OAAO2jB,qBAAmD,IAA1BnoB,EAAO2yB,eAxC7C3uB,IAAUA,EAAO0H,WAAc1H,EAAOoV,cAC3C8W,EAAW,IAAIyC,gBAAe7G,IAC5B0G,EAAiBxyB,EAAON,uBAAsB,KAC5C,MAAMiK,MACJA,EAAKE,OACLA,GACE7F,EACJ,IAAI4uB,EAAWjpB,EACXiL,EAAY/K,EAChBiiB,EAAQzvB,SAAQw2B,IACd,IAAIC,eACFA,EAAcC,YACdA,EAAW72B,OACXA,GACE22B,EACA32B,GAAUA,IAAW8H,EAAOrD,KAChCiyB,EAAWG,EAAcA,EAAYppB,OAASmpB,EAAe,IAAMA,GAAgBE,WACnFpe,EAAYme,EAAcA,EAAYlpB,QAAUipB,EAAe,IAAMA,GAAgBG,UAAS,IAE5FL,IAAajpB,GAASiL,IAAc/K,GACtC4oB,GACF,GACA,IAEJvC,EAASgD,QAAQlvB,EAAOrD,MAoBxBX,EAAOtD,iBAAiB,SAAU+1B,GAClCzyB,EAAOtD,iBAAiB,oBAAqBg2B,GAAyB,IAExEtnB,EAAG,WAAW,KApBRonB,GACFxyB,EAAOJ,qBAAqB4yB,GAE1BtC,GAAYA,EAASiD,WAAanvB,EAAOrD,KAC3CuvB,EAASiD,UAAUnvB,EAAOrD,IAC1BuvB,EAAW,MAiBblwB,EAAOrD,oBAAoB,SAAU81B,GACrCzyB,EAAOrD,oBAAoB,oBAAqB+1B,EAAyB,GAE7E,EAEA,SAAkB3uB,GAChB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,EAAEuB,KACFA,GACE5I,EACJ,MAAMqvB,EAAY,GACZpzB,EAASF,IACTuzB,EAAS,SAAUn3B,EAAQo3B,QACf,IAAZA,IACFA,EAAU,CAAC,GAEb,MACMpD,EAAW,IADIlwB,EAAOuzB,kBAAoBvzB,EAAOwzB,yBACrBC,IAIhC,GAAIzvB,EAAOib,oBAAqB,OAChC,GAAyB,IAArBwU,EAAUl3B,OAEZ,YADAoQ,EAAK,iBAAkB8mB,EAAU,IAGnC,MAAMC,EAAiB,WACrB/mB,EAAK,iBAAkB8mB,EAAU,GACnC,EACIzzB,EAAON,sBACTM,EAAON,sBAAsBg0B,GAE7B1zB,EAAOT,WAAWm0B,EAAgB,EACpC,IAEFxD,EAASgD,QAAQh3B,EAAQ,CACvBy3B,gBAA0C,IAAvBL,EAAQK,YAAoCL,EAAQK,WACvEC,eAAwC,IAAtBN,EAAQM,WAAmCN,EAAQM,UACrEC,mBAAgD,IAA1BP,EAAQO,eAAuCP,EAAQO,gBAE/ET,EAAUnrB,KAAKioB,EACjB,EAyBArD,EAAa,CACXqD,UAAU,EACV4D,gBAAgB,EAChBC,sBAAsB,IAExB3oB,EAAG,QA7BU,KACX,GAAKpH,EAAOQ,OAAO0rB,SAAnB,CACA,GAAIlsB,EAAOQ,OAAOsvB,eAAgB,CAChC,MAAME,EAAmBnsB,EAAe7D,EAAO8qB,QAC/C,IAAK,IAAIlsB,EAAI,EAAGA,EAAIoxB,EAAiBz3B,OAAQqG,GAAK,EAChDywB,EAAOW,EAAiBpxB,GAE5B,CAEAywB,EAAOrvB,EAAO8qB,OAAQ,CACpB8E,UAAW5vB,EAAOQ,OAAOuvB,uBAI3BV,EAAOrvB,EAAOU,UAAW,CACvBivB,YAAY,GAdqB,CAejC,IAcJvoB,EAAG,WAZa,KACdgoB,EAAU/2B,SAAQ6zB,IAChBA,EAAS+D,YAAY,IAEvBb,EAAU3mB,OAAO,EAAG2mB,EAAU72B,OAAO,GASzC,IAmpRA,MAAMmwB,GAAU,CA3lKhB,SAAiB3oB,GACf,IAkBImwB,GAlBAlwB,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,EAAEuB,KACFA,GACE5I,EACJ8oB,EAAa,CACX5c,QAAS,CACPC,SAAS,EACTxC,OAAQ,GACRymB,OAAO,EACPC,YAAa,KACbC,eAAgB,KAChBC,sBAAsB,EACtBC,gBAAiB,EACjBC,eAAgB,KAIpB,MAAMj2B,EAAWF,IACjB2F,EAAOiM,QAAU,CACfkkB,MAAO,CAAC,EACR5lB,UAAM7L,EACNF,QAAIE,EACJgL,OAAQ,GACR+mB,OAAQ,EACRnkB,WAAY,IAEd,MAAM0f,EAAUzxB,EAASnB,cAAc,OACvC,SAASg3B,EAAYtiB,EAAOtF,GAC1B,MAAMhI,EAASR,EAAOQ,OAAOyL,QAC7B,GAAIzL,EAAO2vB,OAASnwB,EAAOiM,QAAQkkB,MAAM3nB,GACvC,OAAOxI,EAAOiM,QAAQkkB,MAAM3nB,GAG9B,IAAI3G,EAmBJ,OAlBIrB,EAAO4vB,aACTvuB,EAAUrB,EAAO4vB,YAAY/xB,KAAK2B,EAAQ8N,EAAOtF,GAC1B,iBAAZ3G,IACTmqB,EAAQC,UAAYpqB,EACpBA,EAAUmqB,EAAQ3yB,SAAS,KAG7BwI,EADS7B,EAAOoJ,UACNhQ,EAAc,gBAEdA,EAAc,MAAO4G,EAAOQ,OAAO6I,YAE/CxH,EAAQrI,aAAa,0BAA2BgP,GAC3ChI,EAAO4vB,cACVvuB,EAAQoqB,UAAYne,GAElBtN,EAAO2vB,QACTnwB,EAAOiM,QAAQkkB,MAAM3nB,GAAS3G,GAEzBA,CACT,CACA,SAASiJ,EAAO4lB,GACd,MAAM3mB,cACJA,EAAa2E,eACbA,EAAcpB,eACdA,EACA1C,KAAM+V,GACJ3gB,EAAOQ,QACL+vB,gBACJA,EAAeC,eACfA,GACExwB,EAAOQ,OAAOyL,SAEhB1B,KAAMomB,EACNnyB,GAAIoyB,EAAUlnB,OACdA,EACA4C,WAAYukB,EACZJ,OAAQK,GACN9wB,EAAOiM,QACNjM,EAAOQ,OAAO+M,SACjBvN,EAAOuU,oBAET,MAAMrK,EAAclK,EAAOkK,aAAe,EAC1C,IAAI6mB,EAEA5hB,EACAD,EAFqB6hB,EAArB/wB,EAAO6L,aAA2B,QAA0B7L,EAAOkL,eAAiB,OAAS,MAG7FoC,GACF6B,EAAchO,KAAKoN,MAAMxE,EAAgB,GAAK2E,EAAiB8hB,EAC/DthB,EAAe/N,KAAKoN,MAAMxE,EAAgB,GAAK2E,EAAiB6hB,IAEhEphB,EAAcpF,GAAiB2E,EAAiB,GAAK8hB,EACrDthB,GAAgByR,EAAS5W,EAAgB2E,GAAkB6hB,GAE7D,IAAIhmB,EAAOL,EAAcgF,EACrB1Q,EAAK0L,EAAciF,EAClBwR,IACHpW,EAAOpJ,KAAKC,IAAImJ,EAAM,GACtB/L,EAAK2C,KAAKE,IAAI7C,EAAIkL,EAAOnR,OAAS,IAEpC,IAAIk4B,GAAUzwB,EAAOsM,WAAW/B,IAAS,IAAMvK,EAAOsM,WAAW,IAAM,GAgBvE,SAAS0kB,IACPhxB,EAAOuL,eACPvL,EAAOoS,iBACPpS,EAAOsT,sBACP3K,EAAK,gBACP,CACA,GArBIgY,GAAUzW,GAAegF,GAC3B3E,GAAQ2E,EACH5B,IAAgBmjB,GAAUzwB,EAAOsM,WAAW,KACxCqU,GAAUzW,EAAcgF,IACjC3E,GAAQ2E,EACJ5B,IAAgBmjB,GAAUzwB,EAAOsM,WAAW,KAElDtU,OAAOsT,OAAOtL,EAAOiM,QAAS,CAC5B1B,OACA/L,KACAiyB,SACAnkB,WAAYtM,EAAOsM,WACnB4C,eACAC,gBAQEwhB,IAAiBpmB,GAAQqmB,IAAepyB,IAAOkyB,EAQjD,OAPI1wB,EAAOsM,aAAeukB,GAAsBJ,IAAWK,GACzD9wB,EAAO0J,OAAOrR,SAAQwJ,IACpBA,EAAQtI,MAAMw3B,GAAiBN,EAAStvB,KAAKsN,IAAIzO,EAAOsR,yBAA5B,IAAwD,IAGxFtR,EAAOoS,sBACPzJ,EAAK,iBAGP,GAAI3I,EAAOQ,OAAOyL,QAAQokB,eAkBxB,OAjBArwB,EAAOQ,OAAOyL,QAAQokB,eAAehyB,KAAK2B,EAAQ,CAChDywB,SACAlmB,OACA/L,KACAkL,OAAQ,WACN,MAAMunB,EAAiB,GACvB,IAAK,IAAIryB,EAAI2L,EAAM3L,GAAKJ,EAAII,GAAK,EAC/BqyB,EAAehtB,KAAKyF,EAAO9K,IAE7B,OAAOqyB,CACT,CANQ,UAQNjxB,EAAOQ,OAAOyL,QAAQqkB,qBACxBU,IAEAroB,EAAK,kBAIT,MAAMuoB,EAAiB,GACjBC,EAAgB,GAChBvX,EAAgBpR,IACpB,IAAI6G,EAAa7G,EAOjB,OANIA,EAAQ,EACV6G,EAAa3F,EAAOnR,OAASiQ,EACpB6G,GAAc3F,EAAOnR,SAE9B8W,GAA0B3F,EAAOnR,QAE5B8W,CAAU,EAEnB,GAAIqhB,EACF1wB,EAAO0J,OAAOrN,QAAOM,GAAMA,EAAGuF,QAAQ,IAAIlC,EAAOQ,OAAO6I,8BAA6BhR,SAAQwJ,IAC3FA,EAAQ2H,QAAQ,SAGlB,IAAK,IAAI5K,EAAI+xB,EAAc/xB,GAAKgyB,EAAYhyB,GAAK,EAC/C,GAAIA,EAAI2L,GAAQ3L,EAAIJ,EAAI,CACtB,MAAM6Q,EAAauK,EAAchb,GACjCoB,EAAO0J,OAAOrN,QAAOM,GAAMA,EAAGuF,QAAQ,IAAIlC,EAAOQ,OAAO6I,uCAAuCgG,8CAAuDA,SAAiBhX,SAAQwJ,IAC7KA,EAAQ2H,QAAQ,GAEpB,CAGJ,MAAM4nB,EAAWzQ,GAAUjX,EAAOnR,OAAS,EACrC84B,EAAS1Q,EAAyB,EAAhBjX,EAAOnR,OAAamR,EAAOnR,OACnD,IAAK,IAAIqG,EAAIwyB,EAAUxyB,EAAIyyB,EAAQzyB,GAAK,EACtC,GAAIA,GAAK2L,GAAQ3L,GAAKJ,EAAI,CACxB,MAAM6Q,EAAauK,EAAchb,QACP,IAAfgyB,GAA8BF,EACvCS,EAAcltB,KAAKoL,IAEfzQ,EAAIgyB,GAAYO,EAAcltB,KAAKoL,GACnCzQ,EAAI+xB,GAAcO,EAAejtB,KAAKoL,GAE9C,CAKF,GAHA8hB,EAAc94B,SAAQmQ,IACpBxI,EAAO2L,SAASwO,OAAOiW,EAAY1mB,EAAOlB,GAAQA,GAAO,IAEvDmY,EACF,IAAK,IAAI/hB,EAAIsyB,EAAe34B,OAAS,EAAGqG,GAAK,EAAGA,GAAK,EAAG,CACtD,MAAM4J,EAAQ0oB,EAAetyB,GAC7BoB,EAAO2L,SAASwP,QAAQiV,EAAY1mB,EAAOlB,GAAQA,GACrD,MAEA0oB,EAAe3J,MAAK,CAAChqB,EAAGiqB,IAAMA,EAAIjqB,IAClC2zB,EAAe74B,SAAQmQ,IACrBxI,EAAO2L,SAASwP,QAAQiV,EAAY1mB,EAAOlB,GAAQA,GAAO,IAG9DzG,EAAgB/B,EAAO2L,SAAU,+BAA+BtT,SAAQwJ,IACtEA,EAAQtI,MAAMw3B,GAAiBN,EAAStvB,KAAKsN,IAAIzO,EAAOsR,yBAA5B,IAAwD,IAEtF0f,GACF,CAuFA5pB,EAAG,cAAc,KACf,IAAKpH,EAAOQ,OAAOyL,QAAQC,QAAS,OACpC,IAAIolB,EACJ,QAAkD,IAAvCtxB,EAAO+oB,aAAa9c,QAAQvC,OAAwB,CAC7D,MAAMA,EAAS,IAAI1J,EAAO2L,SAAStS,UAAUgD,QAAOM,GAAMA,EAAGuF,QAAQ,IAAIlC,EAAOQ,OAAO6I,8BACnFK,GAAUA,EAAOnR,SACnByH,EAAOiM,QAAQvC,OAAS,IAAIA,GAC5B4nB,GAAoB,EACpB5nB,EAAOrR,SAAQ,CAACwJ,EAASwN,KACvBxN,EAAQrI,aAAa,0BAA2B6V,GAChDrP,EAAOiM,QAAQkkB,MAAM9gB,GAAcxN,EACnCA,EAAQ2H,QAAQ,IAGtB,CACK8nB,IACHtxB,EAAOiM,QAAQvC,OAAS1J,EAAOQ,OAAOyL,QAAQvC,QAEhD1J,EAAO4nB,WAAW3jB,KAAK,GAAGjE,EAAOQ,OAAO8P,iCACxCtQ,EAAOQ,OAAO2P,qBAAsB,EACpCnQ,EAAOgmB,eAAe7V,qBAAsB,EAC5CrF,GAAQ,IAEV1D,EAAG,gBAAgB,KACZpH,EAAOQ,OAAOyL,QAAQC,UACvBlM,EAAOQ,OAAO+M,UAAYvN,EAAO4X,mBACnCpc,aAAa00B,GACbA,EAAiB30B,YAAW,KAC1BuP,GAAQ,GACP,MAEHA,IACF,IAEF1D,EAAG,sBAAsB,KAClBpH,EAAOQ,OAAOyL,QAAQC,SACvBlM,EAAOQ,OAAO+M,SAChB7N,EAAeM,EAAOU,UAAW,wBAAyB,GAAGV,EAAOiN,gBACtE,IAEFjV,OAAOsT,OAAOtL,EAAOiM,QAAS,CAC5B6f,YA/HF,SAAqBpiB,GACnB,GAAsB,iBAAXA,GAAuB,WAAYA,EAC5C,IAAK,IAAI9K,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAClC8K,EAAO9K,IAAIoB,EAAOiM,QAAQvC,OAAOzF,KAAKyF,EAAO9K,SAGnDoB,EAAOiM,QAAQvC,OAAOzF,KAAKyF,GAE7BoB,GAAO,EACT,EAuHEqhB,aAtHF,SAAsBziB,GACpB,MAAMQ,EAAclK,EAAOkK,YAC3B,IAAIsK,EAAiBtK,EAAc,EAC/BqnB,EAAoB,EACxB,GAAI5uB,MAAMC,QAAQ8G,GAAS,CACzB,IAAK,IAAI9K,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAClC8K,EAAO9K,IAAIoB,EAAOiM,QAAQvC,OAAOV,QAAQU,EAAO9K,IAEtD4V,EAAiBtK,EAAcR,EAAOnR,OACtCg5B,EAAoB7nB,EAAOnR,MAC7B,MACEyH,EAAOiM,QAAQvC,OAAOV,QAAQU,GAEhC,GAAI1J,EAAOQ,OAAOyL,QAAQkkB,MAAO,CAC/B,MAAMA,EAAQnwB,EAAOiM,QAAQkkB,MACvBqB,EAAW,CAAC,EAClBx5B,OAAOI,KAAK+3B,GAAO93B,SAAQo5B,IACzB,MAAMC,EAAWvB,EAAMsB,GACjBE,EAAgBD,EAASvc,aAAa,2BACxCwc,GACFD,EAASl4B,aAAa,0BAA2B4R,SAASumB,EAAe,IAAMJ,GAEjFC,EAASpmB,SAASqmB,EAAa,IAAMF,GAAqBG,CAAQ,IAEpE1xB,EAAOiM,QAAQkkB,MAAQqB,CACzB,CACA1mB,GAAO,GACP9K,EAAOkX,QAAQ1C,EAAgB,EACjC,EA2FEkY,YA1FF,SAAqBC,GACnB,GAAI,MAAOA,EAAyD,OACpE,IAAIziB,EAAclK,EAAOkK,YACzB,GAAIvH,MAAMC,QAAQ+pB,GAChB,IAAK,IAAI/tB,EAAI+tB,EAAcp0B,OAAS,EAAGqG,GAAK,EAAGA,GAAK,EAC9CoB,EAAOQ,OAAOyL,QAAQkkB,eACjBnwB,EAAOiM,QAAQkkB,MAAMxD,EAAc/tB,IAE1C5G,OAAOI,KAAK4H,EAAOiM,QAAQkkB,OAAO93B,SAAQC,IACpCA,EAAMq0B,IACR3sB,EAAOiM,QAAQkkB,MAAM73B,EAAM,GAAK0H,EAAOiM,QAAQkkB,MAAM73B,GACrD0H,EAAOiM,QAAQkkB,MAAM73B,EAAM,GAAGkB,aAAa,0BAA2BlB,EAAM,UACrE0H,EAAOiM,QAAQkkB,MAAM73B,GAC9B,KAGJ0H,EAAOiM,QAAQvC,OAAOjB,OAAOkkB,EAAc/tB,GAAI,GAC3C+tB,EAAc/tB,GAAKsL,IAAaA,GAAe,GACnDA,EAAc/I,KAAKC,IAAI8I,EAAa,QAGlClK,EAAOQ,OAAOyL,QAAQkkB,eACjBnwB,EAAOiM,QAAQkkB,MAAMxD,GAE5B30B,OAAOI,KAAK4H,EAAOiM,QAAQkkB,OAAO93B,SAAQC,IACpCA,EAAMq0B,IACR3sB,EAAOiM,QAAQkkB,MAAM73B,EAAM,GAAK0H,EAAOiM,QAAQkkB,MAAM73B,GACrD0H,EAAOiM,QAAQkkB,MAAM73B,EAAM,GAAGkB,aAAa,0BAA2BlB,EAAM,UACrE0H,EAAOiM,QAAQkkB,MAAM73B,GAC9B,KAGJ0H,EAAOiM,QAAQvC,OAAOjB,OAAOkkB,EAAe,GACxCA,EAAgBziB,IAAaA,GAAe,GAChDA,EAAc/I,KAAKC,IAAI8I,EAAa,GAEtCY,GAAO,GACP9K,EAAOkX,QAAQhN,EAAa,EAC9B,EAqDE2iB,gBApDF,WACE7sB,EAAOiM,QAAQvC,OAAS,GACpB1J,EAAOQ,OAAOyL,QAAQkkB,QACxBnwB,EAAOiM,QAAQkkB,MAAQ,CAAC,GAE1BrlB,GAAO,GACP9K,EAAOkX,QAAQ,EAAG,EACpB,EA8CEpM,UAEJ,EAGA,SAAkB/K,GAChB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,EAAEuB,KACFA,GACE5I,EACJ,MAAMxF,EAAWF,IACX2B,EAASF,IAWf,SAAS81B,EAAOhqB,GACd,IAAK5H,EAAOkM,QAAS,OACrB,MACEL,aAAcC,GACZ9L,EACJ,IAAIoE,EAAIwD,EACJxD,EAAEkY,gBAAelY,EAAIA,EAAEkY,eAC3B,MAAMuV,EAAKztB,EAAE0tB,SAAW1tB,EAAE2tB,SACpBC,EAAahyB,EAAOQ,OAAOyxB,SAASD,WACpCE,EAAWF,GAAqB,KAAPH,EACzBM,EAAaH,GAAqB,KAAPH,EAC3BO,EAAqB,KAAPP,EACdQ,EAAsB,KAAPR,EACfS,EAAmB,KAAPT,EACZU,EAAqB,KAAPV,EAEpB,IAAK7xB,EAAOuX,iBAAmBvX,EAAOkL,gBAAkBmnB,GAAgBryB,EAAOmL,cAAgBonB,GAAeJ,GAC5G,OAAO,EAET,IAAKnyB,EAAOwX,iBAAmBxX,EAAOkL,gBAAkBknB,GAAepyB,EAAOmL,cAAgBmnB,GAAaJ,GACzG,OAAO,EAET,KAAI9tB,EAAEouB,UAAYpuB,EAAEquB,QAAUruB,EAAEsuB,SAAWtuB,EAAEuuB,SAGzCp4B,EAAS3B,eAAiB2B,EAAS3B,cAAcE,WAA+D,UAAlDyB,EAAS3B,cAAcE,SAAS2N,eAA+E,aAAlDlM,EAAS3B,cAAcE,SAAS2N,gBAA/J,CAGA,GAAIzG,EAAOQ,OAAOyxB,SAASW,iBAAmBV,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GAAc,CAChI,IAAIM,GAAS,EAEb,GAAIhvB,EAAe7D,EAAOrD,GAAI,IAAIqD,EAAOQ,OAAO6I,4BAA4B9Q,OAAS,GAAgF,IAA3EsL,EAAe7D,EAAOrD,GAAI,IAAIqD,EAAOQ,OAAOmT,oBAAoBpb,OACxJ,OAEF,MAAMoE,EAAKqD,EAAOrD,GACZm2B,EAAcn2B,EAAGqO,YACjB+nB,EAAep2B,EAAGsO,aAClB+nB,EAAch3B,EAAOmgB,WACrB8W,EAAej3B,EAAOirB,YACtBiM,EAAerwB,EAAclG,GAC/BmP,IAAKonB,EAAa3vB,MAAQ5G,EAAGyG,YACjC,MAAM+vB,EAAc,CAAC,CAACD,EAAa3vB,KAAM2vB,EAAa5vB,KAAM,CAAC4vB,EAAa3vB,KAAOuvB,EAAaI,EAAa5vB,KAAM,CAAC4vB,EAAa3vB,KAAM2vB,EAAa5vB,IAAMyvB,GAAe,CAACG,EAAa3vB,KAAOuvB,EAAaI,EAAa5vB,IAAMyvB,IAC5N,IAAK,IAAIn0B,EAAI,EAAGA,EAAIu0B,EAAY56B,OAAQqG,GAAK,EAAG,CAC9C,MAAMuoB,EAAQgM,EAAYv0B,GAC1B,GAAIuoB,EAAM,IAAM,GAAKA,EAAM,IAAM6L,GAAe7L,EAAM,IAAM,GAAKA,EAAM,IAAM8L,EAAc,CACzF,GAAiB,IAAb9L,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtC0L,GAAS,CACX,CACF,CACA,IAAKA,EAAQ,MACf,CACI7yB,EAAOkL,iBACLgnB,GAAYC,GAAcC,GAAeC,KACvCjuB,EAAEgY,eAAgBhY,EAAEgY,iBAAsBhY,EAAEgvB,aAAc,KAE3DjB,GAAcE,KAAkBvmB,IAAQomB,GAAYE,IAAgBtmB,IAAK9L,EAAOuY,cAChF2Z,GAAYE,KAAiBtmB,IAAQqmB,GAAcE,IAAiBvmB,IAAK9L,EAAO6Y,eAEjFqZ,GAAYC,GAAcG,GAAaC,KACrCnuB,EAAEgY,eAAgBhY,EAAEgY,iBAAsBhY,EAAEgvB,aAAc,IAE5DjB,GAAcI,IAAavyB,EAAOuY,aAClC2Z,GAAYI,IAAWtyB,EAAO6Y,aAEpClQ,EAAK,WAAYkpB,EArCjB,CAuCF,CACA,SAASrL,IACHxmB,EAAOiyB,SAAS/lB,UACpB3R,EAAS7B,iBAAiB,UAAWk5B,GACrC5xB,EAAOiyB,SAAS/lB,SAAU,EAC5B,CACA,SAASqa,IACFvmB,EAAOiyB,SAAS/lB,UACrB3R,EAAS5B,oBAAoB,UAAWi5B,GACxC5xB,EAAOiyB,SAAS/lB,SAAU,EAC5B,CAtFAlM,EAAOiyB,SAAW,CAChB/lB,SAAS,GAEX2c,EAAa,CACXoJ,SAAU,CACR/lB,SAAS,EACT0mB,gBAAgB,EAChBZ,YAAY,KAgFhB5qB,EAAG,QAAQ,KACLpH,EAAOQ,OAAOyxB,SAAS/lB,SACzBsa,GACF,IAEFpf,EAAG,WAAW,KACRpH,EAAOiyB,SAAS/lB,SAClBqa,GACF,IAEFvuB,OAAOsT,OAAOtL,EAAOiyB,SAAU,CAC7BzL,SACAD,WAEJ,EAGA,SAAoBxmB,GAClB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,EAAEuB,KACFA,GACE5I,EACJ,MAAM/D,EAASF,IAiBf,IAAIu3B,EAhBJxK,EAAa,CACXyK,WAAY,CACVpnB,SAAS,EACTqnB,gBAAgB,EAChBC,QAAQ,EACRC,aAAa,EACbC,YAAa,EACbC,aAAc,YACdC,eAAgB,KAChBC,cAAe,KACfC,kBAAmB,0BAGvB9zB,EAAOszB,WAAa,CAClBpnB,SAAS,GAGX,IACI6nB,EADAC,EAAiBv3B,IAErB,MAAMw3B,EAAoB,GAqE1B,SAASC,IACFl0B,EAAOkM,UACZlM,EAAOm0B,cAAe,EACxB,CACA,SAASC,IACFp0B,EAAOkM,UACZlM,EAAOm0B,cAAe,EACxB,CACA,SAASE,EAAcC,GACrB,QAAIt0B,EAAOQ,OAAO8yB,WAAWM,gBAAkBU,EAASC,MAAQv0B,EAAOQ,OAAO8yB,WAAWM,oBAIrF5zB,EAAOQ,OAAO8yB,WAAWO,eAAiBp3B,IAAQu3B,EAAiBh0B,EAAOQ,OAAO8yB,WAAWO,iBAQ5FS,EAASC,OAAS,GAAK93B,IAAQu3B,EAAiB,KAgBhDM,EAAStd,UAAY,EACjBhX,EAAOyS,QAASzS,EAAOQ,OAAOoK,MAAU5K,EAAOyW,YACnDzW,EAAOuY,YACP5P,EAAK,SAAU2rB,EAASE,MAEfx0B,EAAOwS,cAAexS,EAAOQ,OAAOoK,MAAU5K,EAAOyW,YAChEzW,EAAO6Y,YACPlQ,EAAK,SAAU2rB,EAASE,MAG1BR,GAAiB,IAAIh4B,EAAOX,MAAO4F,WAE5B,IACT,CAcA,SAAS2wB,EAAOhqB,GACd,IAAIxD,EAAIwD,EACJwZ,GAAsB,EAC1B,IAAKphB,EAAOkM,QAAS,OAGrB,GAAItE,EAAM1P,OAAOiR,QAAQ,IAAInJ,EAAOQ,OAAO8yB,WAAWQ,qBAAsB,OAC5E,MAAMtzB,EAASR,EAAOQ,OAAO8yB,WACzBtzB,EAAOQ,OAAO+M,SAChBnJ,EAAEgY,iBAEJ,IAAIY,EAAWhd,EAAOrD,GACwB,cAA1CqD,EAAOQ,OAAO8yB,WAAWK,eAC3B3W,EAAWziB,SAASxB,cAAciH,EAAOQ,OAAO8yB,WAAWK,eAE7D,MAAMc,EAAyBzX,GAAYA,EAASxM,SAASpM,EAAElM,QAC/D,IAAK8H,EAAOm0B,eAAiBM,IAA2Bj0B,EAAO+yB,eAAgB,OAAO,EAClFnvB,EAAEkY,gBAAelY,EAAIA,EAAEkY,eAC3B,IAAIiY,EAAQ,EACZ,MAAMG,EAAY10B,EAAO6L,cAAgB,EAAI,EACvCjD,EAxJR,SAAmBxE,GAKjB,IAAIuwB,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAqDT,MAlDI,WAAY1wB,IACdwwB,EAAKxwB,EAAE2wB,QAEL,eAAgB3wB,IAClBwwB,GAAMxwB,EAAE4wB,WAAa,KAEnB,gBAAiB5wB,IACnBwwB,GAAMxwB,EAAE6wB,YAAc,KAEpB,gBAAiB7wB,IACnBuwB,GAAMvwB,EAAE8wB,YAAc,KAIpB,SAAU9wB,GAAKA,EAAExH,OAASwH,EAAE+wB,kBAC9BR,EAAKC,EACLA,EAAK,GAEPC,EA3BmB,GA2BdF,EACLG,EA5BmB,GA4BdF,EACD,WAAYxwB,IACd0wB,EAAK1wB,EAAEgxB,QAEL,WAAYhxB,IACdywB,EAAKzwB,EAAEixB,QAELjxB,EAAEouB,WAAaqC,IAEjBA,EAAKC,EACLA,EAAK,IAEFD,GAAMC,IAAO1wB,EAAEkxB,YACE,IAAhBlxB,EAAEkxB,WAEJT,GA1CgB,GA2ChBC,GA3CgB,KA8ChBD,GA7CgB,IA8ChBC,GA9CgB,MAmDhBD,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEjBC,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEd,CACLS,MAAOZ,EACPa,MAAOZ,EACPa,OAAQZ,EACRa,OAAQZ,EAEZ,CAqFehc,CAAU1U,GACvB,GAAI5D,EAAOizB,YACT,GAAIzzB,EAAOkL,eAAgB,CACzB,KAAI/J,KAAKsN,IAAI7F,EAAK6sB,QAAUt0B,KAAKsN,IAAI7F,EAAK8sB,SAA+C,OAAO,EAA7CnB,GAAS3rB,EAAK6sB,OAASf,CAC5E,KAAO,MAAIvzB,KAAKsN,IAAI7F,EAAK8sB,QAAUv0B,KAAKsN,IAAI7F,EAAK6sB,SAAmC,OAAO,EAAjClB,GAAS3rB,EAAK8sB,MAAuB,MAE/FnB,EAAQpzB,KAAKsN,IAAI7F,EAAK6sB,QAAUt0B,KAAKsN,IAAI7F,EAAK8sB,SAAW9sB,EAAK6sB,OAASf,GAAa9rB,EAAK8sB,OAE3F,GAAc,IAAVnB,EAAa,OAAO,EACpB/zB,EAAOgzB,SAAQe,GAASA,GAG5B,IAAIoB,EAAY31B,EAAOtD,eAAiB63B,EAAQ/zB,EAAOkzB,YAavD,GAZIiC,GAAa31B,EAAO8R,iBAAgB6jB,EAAY31B,EAAO8R,gBACvD6jB,GAAa31B,EAAOuS,iBAAgBojB,EAAY31B,EAAOuS,gBAS3D6O,IAAsBphB,EAAOQ,OAAOoK,QAAgB+qB,IAAc31B,EAAO8R,gBAAkB6jB,IAAc31B,EAAOuS,gBAC5G6O,GAAuBphB,EAAOQ,OAAO4f,QAAQhc,EAAEic,kBAC9CrgB,EAAOQ,OAAO6e,UAAarf,EAAOQ,OAAO6e,SAASnT,QAoChD,CAOL,MAAMooB,EAAW,CACfj0B,KAAM5D,IACN83B,MAAOpzB,KAAKsN,IAAI8lB,GAChBvd,UAAW7V,KAAKy0B,KAAKrB,IAEjBsB,EAAoB9B,GAAuBO,EAASj0B,KAAO0zB,EAAoB1zB,KAAO,KAAOi0B,EAASC,OAASR,EAAoBQ,OAASD,EAAStd,YAAc+c,EAAoB/c,UAC7L,IAAK6e,EAAmB,CACtB9B,OAAsBr1B,EACtB,IAAIo3B,EAAW91B,EAAOtD,eAAiB63B,EAAQ/zB,EAAOkzB,YACtD,MAAM/gB,EAAe3S,EAAOwS,YACtBI,EAAS5S,EAAOyS,MAiBtB,GAhBIqjB,GAAY91B,EAAO8R,iBAAgBgkB,EAAW91B,EAAO8R,gBACrDgkB,GAAY91B,EAAOuS,iBAAgBujB,EAAW91B,EAAOuS,gBACzDvS,EAAO6Q,cAAc,GACrB7Q,EAAO+V,aAAa+f,GACpB91B,EAAOoS,iBACPpS,EAAOuU,oBACPvU,EAAOsT,wBACFX,GAAgB3S,EAAOwS,cAAgBI,GAAU5S,EAAOyS,QAC3DzS,EAAOsT,sBAELtT,EAAOQ,OAAOoK,MAChB5K,EAAOqY,QAAQ,CACbrB,UAAWsd,EAAStd,UAAY,EAAI,OAAS,OAC7CsD,cAAc,IAGdta,EAAOQ,OAAO6e,SAAS0W,OAAQ,CAYjCv6B,aAAa63B,GACbA,OAAU30B,EACNu1B,EAAkB17B,QAAU,IAC9B07B,EAAkBzY,QAGpB,MAAMwa,EAAY/B,EAAkB17B,OAAS07B,EAAkBA,EAAkB17B,OAAS,QAAKmG,EACzFu3B,EAAahC,EAAkB,GAErC,GADAA,EAAkBhwB,KAAKqwB,GACnB0B,IAAc1B,EAASC,MAAQyB,EAAUzB,OAASD,EAAStd,YAAcgf,EAAUhf,WAErFid,EAAkBxrB,OAAO,QACpB,GAAIwrB,EAAkB17B,QAAU,IAAM+7B,EAASj0B,KAAO41B,EAAW51B,KAAO,KAAO41B,EAAW1B,MAAQD,EAASC,OAAS,GAAKD,EAASC,OAAS,EAAG,CAOnJ,MAAM2B,EAAkB3B,EAAQ,EAAI,GAAM,GAC1CR,EAAsBO,EACtBL,EAAkBxrB,OAAO,GACzB4qB,EAAU92B,GAAS,KACjByD,EAAOsZ,eAAetZ,EAAOQ,OAAOC,OAAO,OAAM/B,EAAWw3B,EAAgB,GAC3E,EACL,CAEK7C,IAIHA,EAAU92B,GAAS,KAEjBw3B,EAAsBO,EACtBL,EAAkBxrB,OAAO,GACzBzI,EAAOsZ,eAAetZ,EAAOQ,OAAOC,OAAO,OAAM/B,EAHzB,GAGoD,GAC3E,KAEP,CAQA,GALKm3B,GAAmBltB,EAAK,SAAUvE,GAGnCpE,EAAOQ,OAAOqiB,UAAY7iB,EAAOQ,OAAO21B,8BAA8Bn2B,EAAO6iB,SAASuT,OAEtF51B,EAAO+yB,iBAAmBuC,IAAa91B,EAAO8R,gBAAkBgkB,IAAa91B,EAAOuS,gBACtF,OAAO,CAEX,CACF,KApIgE,CAE9D,MAAM+hB,EAAW,CACfj0B,KAAM5D,IACN83B,MAAOpzB,KAAKsN,IAAI8lB,GAChBvd,UAAW7V,KAAKy0B,KAAKrB,GACrBC,IAAK5sB,GAIHqsB,EAAkB17B,QAAU,GAC9B07B,EAAkBzY,QAGpB,MAAMwa,EAAY/B,EAAkB17B,OAAS07B,EAAkBA,EAAkB17B,OAAS,QAAKmG,EAmB/F,GAlBAu1B,EAAkBhwB,KAAKqwB,GAQnB0B,GACE1B,EAAStd,YAAcgf,EAAUhf,WAAasd,EAASC,MAAQyB,EAAUzB,OAASD,EAASj0B,KAAO21B,EAAU31B,KAAO,MACrHg0B,EAAcC,GAGhBD,EAAcC,GAtFpB,SAAuBA,GACrB,MAAM9zB,EAASR,EAAOQ,OAAO8yB,WAC7B,GAAIgB,EAAStd,UAAY,GACvB,GAAIhX,EAAOyS,QAAUzS,EAAOQ,OAAOoK,MAAQpK,EAAO+yB,eAEhD,OAAO,OAEJ,GAAIvzB,EAAOwS,cAAgBxS,EAAOQ,OAAOoK,MAAQpK,EAAO+yB,eAE7D,OAAO,EAET,OAAO,CACT,CA+EQ8C,CAAc/B,GAChB,OAAO,CAEX,CAkGA,OADIlwB,EAAEgY,eAAgBhY,EAAEgY,iBAAsBhY,EAAEgvB,aAAc,GACvD,CACT,CACA,SAAS/rB,EAAOM,GACd,IAAIqV,EAAWhd,EAAOrD,GACwB,cAA1CqD,EAAOQ,OAAO8yB,WAAWK,eAC3B3W,EAAWziB,SAASxB,cAAciH,EAAOQ,OAAO8yB,WAAWK,eAE7D3W,EAASrV,GAAQ,aAAcusB,GAC/BlX,EAASrV,GAAQ,aAAcysB,GAC/BpX,EAASrV,GAAQ,QAASiqB,EAC5B,CACA,SAASpL,IACP,OAAIxmB,EAAOQ,OAAO+M,SAChBvN,EAAOU,UAAU/H,oBAAoB,QAASi5B,IACvC,IAEL5xB,EAAOszB,WAAWpnB,UACtB7E,EAAO,oBACPrH,EAAOszB,WAAWpnB,SAAU,GACrB,EACT,CACA,SAASqa,IACP,OAAIvmB,EAAOQ,OAAO+M,SAChBvN,EAAOU,UAAUhI,iBAAiBkP,MAAOgqB,IAClC,KAEJ5xB,EAAOszB,WAAWpnB,UACvB7E,EAAO,uBACPrH,EAAOszB,WAAWpnB,SAAU,GACrB,EACT,CACA9E,EAAG,QAAQ,MACJpH,EAAOQ,OAAO8yB,WAAWpnB,SAAWlM,EAAOQ,OAAO+M,SACrDgZ,IAEEvmB,EAAOQ,OAAO8yB,WAAWpnB,SAASsa,GAAQ,IAEhDpf,EAAG,WAAW,KACRpH,EAAOQ,OAAO+M,SAChBiZ,IAEExmB,EAAOszB,WAAWpnB,SAASqa,GAAS,IAE1CvuB,OAAOsT,OAAOtL,EAAOszB,WAAY,CAC/B9M,SACAD,WAEJ,EAoBA,SAAoBxmB,GAClB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,EAAEuB,KACFA,GACE5I,EACJ8oB,EAAa,CACXtG,WAAY,CACVC,OAAQ,KACRC,OAAQ,KACR6T,aAAa,EACbC,cAAe,yBACfC,YAAa,uBACbC,UAAW,qBACXC,wBAAyB,gCAG7B12B,EAAOuiB,WAAa,CAClBC,OAAQ,KACRC,OAAQ,MAEV,MAAMkU,EAAoBh6B,IAAOgG,MAAMC,QAAQjG,GAAMA,EAAK,CAACA,IAAKN,QAAO+H,KAAOA,IAC9E,SAASwyB,EAAMj6B,GACb,IAAIk6B,EACJ,OAAIl6B,GAAoB,iBAAPA,GAAmBqD,EAAOoJ,YACzCytB,EAAM72B,EAAOrD,GAAG5D,cAAc4D,GAC1Bk6B,GAAYA,GAEdl6B,IACgB,iBAAPA,IAAiBk6B,EAAM,IAAIt8B,SAASvB,iBAAiB2D,KAC5DqD,EAAOQ,OAAOgkB,mBAAmC,iBAAP7nB,GAAmBk6B,EAAIt+B,OAAS,GAA+C,IAA1CyH,EAAOrD,GAAG3D,iBAAiB2D,GAAIpE,SAChHs+B,EAAM72B,EAAOrD,GAAG5D,cAAc4D,KAG9BA,IAAOk6B,EAAYl6B,EAEhBk6B,EACT,CACA,SAASC,EAASn6B,EAAIo6B,GACpB,MAAMv2B,EAASR,EAAOQ,OAAO+hB,YAC7B5lB,EAAKg6B,EAAkBh6B,IACpBtE,SAAQ2+B,IACLA,IACFA,EAAMv0B,UAAUs0B,EAAW,MAAQ,aAAav2B,EAAO+1B,cAAcn6B,MAAM,MACrD,WAAlB46B,EAAMC,UAAsBD,EAAMD,SAAWA,GAC7C/2B,EAAOQ,OAAOyP,eAAiBjQ,EAAOkM,SACxC8qB,EAAMv0B,UAAUzC,EAAOslB,SAAW,MAAQ,UAAU9kB,EAAOi2B,WAE/D,GAEJ,CACA,SAAS3rB,IAEP,MAAM0X,OACJA,EAAMC,OACNA,GACEziB,EAAOuiB,WACX,GAAIviB,EAAOQ,OAAOoK,KAGhB,OAFAksB,EAASrU,GAAQ,QACjBqU,EAAStU,GAAQ,GAGnBsU,EAASrU,EAAQziB,EAAOwS,cAAgBxS,EAAOQ,OAAOmK,QACtDmsB,EAAStU,EAAQxiB,EAAOyS,QAAUzS,EAAOQ,OAAOmK,OAClD,CACA,SAASusB,EAAY9yB,GACnBA,EAAEgY,mBACEpc,EAAOwS,aAAgBxS,EAAOQ,OAAOoK,MAAS5K,EAAOQ,OAAOmK,UAChE3K,EAAO6Y,YACPlQ,EAAK,kBACP,CACA,SAASwuB,EAAY/yB,GACnBA,EAAEgY,mBACEpc,EAAOyS,OAAUzS,EAAOQ,OAAOoK,MAAS5K,EAAOQ,OAAOmK,UAC1D3K,EAAOuY,YACP5P,EAAK,kBACP,CACA,SAASub,IACP,MAAM1jB,EAASR,EAAOQ,OAAO+hB,WAK7B,GAJAviB,EAAOQ,OAAO+hB,WAAaoJ,GAA0B3rB,EAAQA,EAAOgmB,eAAezD,WAAYviB,EAAOQ,OAAO+hB,WAAY,CACvHC,OAAQ,qBACRC,OAAQ,wBAEJjiB,EAAOgiB,SAAUhiB,EAAOiiB,OAAS,OACvC,IAAID,EAASoU,EAAMp2B,EAAOgiB,QACtBC,EAASmU,EAAMp2B,EAAOiiB,QAC1BzqB,OAAOsT,OAAOtL,EAAOuiB,WAAY,CAC/BC,SACAC,WAEFD,EAASmU,EAAkBnU,GAC3BC,EAASkU,EAAkBlU,GAC3B,MAAM2U,EAAa,CAACz6B,EAAIkE,KAClBlE,GACFA,EAAGjE,iBAAiB,QAAiB,SAARmI,EAAiBs2B,EAAcD,IAEzDl3B,EAAOkM,SAAWvP,GACrBA,EAAG8F,UAAUC,OAAOlC,EAAOi2B,UAAUr6B,MAAM,KAC7C,EAEFomB,EAAOnqB,SAAQsE,GAAMy6B,EAAWz6B,EAAI,UACpC8lB,EAAOpqB,SAAQsE,GAAMy6B,EAAWz6B,EAAI,SACtC,CACA,SAASquB,IACP,IAAIxI,OACFA,EAAMC,OACNA,GACEziB,EAAOuiB,WACXC,EAASmU,EAAkBnU,GAC3BC,EAASkU,EAAkBlU,GAC3B,MAAM4U,EAAgB,CAAC16B,EAAIkE,KACzBlE,EAAGhE,oBAAoB,QAAiB,SAARkI,EAAiBs2B,EAAcD,GAC/Dv6B,EAAG8F,UAAU+G,UAAUxJ,EAAOQ,OAAO+hB,WAAWgU,cAAcn6B,MAAM,KAAK,EAE3EomB,EAAOnqB,SAAQsE,GAAM06B,EAAc16B,EAAI,UACvC8lB,EAAOpqB,SAAQsE,GAAM06B,EAAc16B,EAAI,SACzC,CACAyK,EAAG,QAAQ,MACgC,IAArCpH,EAAOQ,OAAO+hB,WAAWrW,QAE3Bqa,KAEArC,IACApZ,IACF,IAEF1D,EAAG,+BAA+B,KAChC0D,GAAQ,IAEV1D,EAAG,WAAW,KACZ4jB,GAAS,IAEX5jB,EAAG,kBAAkB,KACnB,IAAIob,OACFA,EAAMC,OACNA,GACEziB,EAAOuiB,WACXC,EAASmU,EAAkBnU,GAC3BC,EAASkU,EAAkBlU,GACvBziB,EAAOkM,QACTpB,IAGF,IAAI0X,KAAWC,GAAQpmB,QAAOM,KAAQA,IAAItE,SAAQsE,GAAMA,EAAG8F,UAAUC,IAAI1C,EAAOQ,OAAO+hB,WAAWkU,YAAW,IAE/GrvB,EAAG,SAAS,CAACimB,EAAIjpB,KACf,IAAIoe,OACFA,EAAMC,OACNA,GACEziB,EAAOuiB,WACXC,EAASmU,EAAkBnU,GAC3BC,EAASkU,EAAkBlU,GAC3B,MAAMzF,EAAW5Y,EAAElM,OACnB,GAAI8H,EAAOQ,OAAO+hB,WAAW+T,cAAgB7T,EAAO9b,SAASqW,KAAcwF,EAAO7b,SAASqW,GAAW,CACpG,GAAIhd,EAAOs3B,YAAct3B,EAAOQ,OAAO82B,YAAct3B,EAAOQ,OAAO82B,WAAWC,YAAcv3B,EAAOs3B,WAAW36B,KAAOqgB,GAAYhd,EAAOs3B,WAAW36B,GAAG6T,SAASwM,IAAY,OAC3K,IAAIwa,EACAhV,EAAOjqB,OACTi/B,EAAWhV,EAAO,GAAG/f,UAAU+N,SAASxQ,EAAOQ,OAAO+hB,WAAWiU,aACxD/T,EAAOlqB,SAChBi/B,EAAW/U,EAAO,GAAGhgB,UAAU+N,SAASxQ,EAAOQ,OAAO+hB,WAAWiU,cAGjE7tB,GADe,IAAb6uB,EACG,iBAEA,kBAEP,IAAIhV,KAAWC,GAAQpmB,QAAOM,KAAQA,IAAItE,SAAQsE,GAAMA,EAAG8F,UAAUg1B,OAAOz3B,EAAOQ,OAAO+hB,WAAWiU,cACvG,KAEF,MAKMjQ,EAAU,KACdvmB,EAAOrD,GAAG8F,UAAUC,OAAO1C,EAAOQ,OAAO+hB,WAAWmU,wBAAwBt6B,MAAM,MAClF4uB,GAAS,EAEXhzB,OAAOsT,OAAOtL,EAAOuiB,WAAY,CAC/BiE,OAVa,KACbxmB,EAAOrD,GAAG8F,UAAU+G,UAAUxJ,EAAOQ,OAAO+hB,WAAWmU,wBAAwBt6B,MAAM,MACrF8nB,IACApZ,GAAQ,EAQRyb,UACAzb,SACAoZ,OACA8G,WAEJ,EAUA,SAAoBjrB,GAClB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,EAAEuB,KACFA,GACE5I,EACJ,MAAM23B,EAAM,oBAqCZ,IAAIC,EApCJ9O,EAAa,CACXyO,WAAY,CACV36B,GAAI,KACJi7B,cAAe,OACfL,WAAW,EACXjB,aAAa,EACbuB,aAAc,KACdC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,qBAAqB,EACrB1b,KAAM,UAEN2b,gBAAgB,EAChBC,mBAAoB,EACpBC,sBAAuBC,GAAUA,EACjCC,oBAAqBD,GAAUA,EAC/BE,YAAa,GAAGb,WAChBc,kBAAmB,GAAGd,kBACtBe,cAAe,GAAGf,KAClBgB,aAAc,GAAGhB,YACjBiB,WAAY,GAAGjB,UACflB,YAAa,GAAGkB,WAChBkB,qBAAsB,GAAGlB,qBACzBmB,yBAA0B,GAAGnB,yBAC7BoB,eAAgB,GAAGpB,cACnBjB,UAAW,GAAGiB,SACdqB,gBAAiB,GAAGrB,eACpBsB,cAAe,GAAGtB,aAClBuB,wBAAyB,GAAGvB,gBAGhC13B,EAAOs3B,WAAa,CAClB36B,GAAI,KACJu8B,QAAS,IAGX,IAAIC,EAAqB,EACzB,MAAMxC,EAAoBh6B,IAAOgG,MAAMC,QAAQjG,GAAMA,EAAK,CAACA,IAAKN,QAAO+H,KAAOA,IAC9E,SAASg1B,IACP,OAAQp5B,EAAOQ,OAAO82B,WAAW36B,KAAOqD,EAAOs3B,WAAW36B,IAAMgG,MAAMC,QAAQ5C,EAAOs3B,WAAW36B,KAAuC,IAAhCqD,EAAOs3B,WAAW36B,GAAGpE,MAC9H,CACA,SAAS8gC,EAAeC,EAAUxD,GAChC,MAAM0C,kBACJA,GACEx4B,EAAOQ,OAAO82B,WACbgC,IACLA,EAAWA,GAAyB,SAAbxD,EAAsB,WAAa,QAAtC,qBAElBwD,EAAS72B,UAAUC,IAAI,GAAG81B,KAAqB1C,MAC/CwD,EAAWA,GAAyB,SAAbxD,EAAsB,WAAa,QAAtC,oBAElBwD,EAAS72B,UAAUC,IAAI,GAAG81B,KAAqB1C,KAAYA,KAGjE,CACA,SAASyD,EAAcn1B,GACrB,MAAMk1B,EAAWl1B,EAAElM,OAAOiR,QAAQ0iB,GAAkB7rB,EAAOQ,OAAO82B,WAAWiB,cAC7E,IAAKe,EACH,OAEFl1B,EAAEgY,iBACF,MAAM5T,EAAQ9E,EAAa41B,GAAYt5B,EAAOQ,OAAOkO,eACrD,GAAI1O,EAAOQ,OAAOoK,KAAM,CACtB,GAAI5K,EAAO6K,YAAcrC,EAAO,OAChCxI,EAAOgY,YAAYxP,EACrB,MACExI,EAAOkX,QAAQ1O,EAEnB,CACA,SAASsC,IAEP,MAAMgB,EAAM9L,EAAO8L,IACbtL,EAASR,EAAOQ,OAAO82B,WAC7B,GAAI8B,IAAwB,OAC5B,IAGIr4B,EACA0T,EAJA9X,EAAKqD,EAAOs3B,WAAW36B,GAC3BA,EAAKg6B,EAAkBh6B,GAIvB,MAAMyP,EAAepM,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAAUlM,EAAOiM,QAAQvC,OAAOnR,OAASyH,EAAO0J,OAAOnR,OAC9GihC,EAAQx5B,EAAOQ,OAAOoK,KAAOzJ,KAAK8I,KAAKmC,EAAepM,EAAOQ,OAAOkO,gBAAkB1O,EAAOqM,SAAS9T,OAY5G,GAXIyH,EAAOQ,OAAOoK,MAChB6J,EAAgBzU,EAAO0U,mBAAqB,EAC5C3T,EAAUf,EAAOQ,OAAOkO,eAAiB,EAAIvN,KAAKoN,MAAMvO,EAAO6K,UAAY7K,EAAOQ,OAAOkO,gBAAkB1O,EAAO6K,gBAC7E,IAArB7K,EAAO6P,WACvB9O,EAAUf,EAAO6P,UACjB4E,EAAgBzU,EAAO2U,oBAEvBF,EAAgBzU,EAAOyU,eAAiB,EACxC1T,EAAUf,EAAOkK,aAAe,GAGd,YAAhB1J,EAAO+b,MAAsBvc,EAAOs3B,WAAW4B,SAAWl5B,EAAOs3B,WAAW4B,QAAQ3gC,OAAS,EAAG,CAClG,MAAM2gC,EAAUl5B,EAAOs3B,WAAW4B,QAClC,IAAIO,EACArgB,EACAsgB,EAsBJ,GArBIl5B,EAAO03B,iBACTP,EAAatzB,EAAiB60B,EAAQ,GAAIl5B,EAAOkL,eAAiB,QAAU,UAAU,GACtFvO,EAAGtE,SAAQ2+B,IACTA,EAAMz9B,MAAMyG,EAAOkL,eAAiB,QAAU,UAAeysB,GAAcn3B,EAAO23B,mBAAqB,GAA7C,IAAmD,IAE3G33B,EAAO23B,mBAAqB,QAAuBz5B,IAAlB+V,IACnC0kB,GAAsBp4B,GAAW0T,GAAiB,GAC9C0kB,EAAqB34B,EAAO23B,mBAAqB,EACnDgB,EAAqB34B,EAAO23B,mBAAqB,EACxCgB,EAAqB,IAC9BA,EAAqB,IAGzBM,EAAat4B,KAAKC,IAAIL,EAAUo4B,EAAoB,GACpD/f,EAAYqgB,GAAct4B,KAAKE,IAAI63B,EAAQ3gC,OAAQiI,EAAO23B,oBAAsB,GAChFuB,GAAYtgB,EAAYqgB,GAAc,GAExCP,EAAQ7gC,SAAQihC,IACd,MAAMK,EAAkB,IAAI,CAAC,GAAI,QAAS,aAAc,QAAS,aAAc,SAASr8B,KAAI6wB,GAAU,GAAG3tB,EAAOg4B,oBAAoBrK,OAAW7wB,KAAIs8B,GAAkB,iBAANA,GAAkBA,EAAEjzB,SAAS,KAAOizB,EAAEx9B,MAAM,KAAOw9B,IAAGC,OACrNP,EAAS72B,UAAU+G,UAAUmwB,EAAgB,IAE3Ch9B,EAAGpE,OAAS,EACd2gC,EAAQ7gC,SAAQyhC,IACd,MAAMC,EAAcr2B,EAAao2B,GAC7BC,IAAgBh5B,EAClB+4B,EAAOr3B,UAAUC,OAAOlC,EAAOg4B,kBAAkBp8B,MAAM,MAC9C4D,EAAOoJ,WAChB0wB,EAAOtgC,aAAa,OAAQ,UAE1BgH,EAAO03B,iBACL6B,GAAeN,GAAcM,GAAe3gB,GAC9C0gB,EAAOr3B,UAAUC,OAAO,GAAGlC,EAAOg4B,yBAAyBp8B,MAAM,MAE/D29B,IAAgBN,GAClBJ,EAAeS,EAAQ,QAErBC,IAAgB3gB,GAClBigB,EAAeS,EAAQ,QAE3B,QAEG,CACL,MAAMA,EAASZ,EAAQn4B,GASvB,GARI+4B,GACFA,EAAOr3B,UAAUC,OAAOlC,EAAOg4B,kBAAkBp8B,MAAM,MAErD4D,EAAOoJ,WACT8vB,EAAQ7gC,SAAQ,CAACihC,EAAUS,KACzBT,EAAS9/B,aAAa,OAAQugC,IAAgBh5B,EAAU,gBAAkB,SAAS,IAGnFP,EAAO03B,eAAgB,CACzB,MAAM8B,EAAuBd,EAAQO,GAC/BQ,EAAsBf,EAAQ9f,GACpC,IAAK,IAAIxa,EAAI66B,EAAY76B,GAAKwa,EAAWxa,GAAK,EACxCs6B,EAAQt6B,IACVs6B,EAAQt6B,GAAG6D,UAAUC,OAAO,GAAGlC,EAAOg4B,yBAAyBp8B,MAAM,MAGzEi9B,EAAeW,EAAsB,QACrCX,EAAeY,EAAqB,OACtC,CACF,CACA,GAAIz5B,EAAO03B,eAAgB,CACzB,MAAMgC,EAAuB/4B,KAAKE,IAAI63B,EAAQ3gC,OAAQiI,EAAO23B,mBAAqB,GAC5EgC,GAAiBxC,EAAauC,EAAuBvC,GAAc,EAAI+B,EAAW/B,EAClF5G,EAAajlB,EAAM,QAAU,OACnCotB,EAAQ7gC,SAAQyhC,IACdA,EAAOvgC,MAAMyG,EAAOkL,eAAiB6lB,EAAa,OAAS,GAAGoJ,KAAiB,GAEnF,CACF,CACAx9B,EAAGtE,SAAQ,CAAC2+B,EAAOoD,KASjB,GARoB,aAAhB55B,EAAO+b,OACTya,EAAMh+B,iBAAiB6yB,GAAkBrrB,EAAOk4B,eAAergC,SAAQgiC,IACrEA,EAAWC,YAAc95B,EAAO43B,sBAAsBr3B,EAAU,EAAE,IAEpEi2B,EAAMh+B,iBAAiB6yB,GAAkBrrB,EAAOm4B,aAAatgC,SAAQkiC,IACnEA,EAAQD,YAAc95B,EAAO83B,oBAAoBkB,EAAM,KAGvC,gBAAhBh5B,EAAO+b,KAAwB,CACjC,IAAIie,EAEFA,EADEh6B,EAAOy3B,oBACcj4B,EAAOkL,eAAiB,WAAa,aAErClL,EAAOkL,eAAiB,aAAe,WAEhE,MAAMuvB,GAAS15B,EAAU,GAAKy4B,EAC9B,IAAIkB,EAAS,EACTC,EAAS,EACgB,eAAzBH,EACFE,EAASD,EAETE,EAASF,EAEXzD,EAAMh+B,iBAAiB6yB,GAAkBrrB,EAAOo4B,uBAAuBvgC,SAAQuiC,IAC7EA,EAAWrhC,MAAM6D,UAAY,6BAA6Bs9B,aAAkBC,KAC5EC,EAAWrhC,MAAM4rB,mBAAqB,GAAGnlB,EAAOQ,OAAOC,SAAS,GAEpE,CACoB,WAAhBD,EAAO+b,MAAqB/b,EAAOw3B,cACrChB,EAAM/K,UAAYzrB,EAAOw3B,aAAah4B,EAAQe,EAAU,EAAGy4B,GACxC,IAAfY,GAAkBzxB,EAAK,mBAAoBquB,KAE5B,IAAfoD,GAAkBzxB,EAAK,mBAAoBquB,GAC/CruB,EAAK,mBAAoBquB,IAEvBh3B,EAAOQ,OAAOyP,eAAiBjQ,EAAOkM,SACxC8qB,EAAMv0B,UAAUzC,EAAOslB,SAAW,MAAQ,UAAU9kB,EAAOi2B,UAC7D,GAEJ,CACA,SAASoE,IAEP,MAAMr6B,EAASR,EAAOQ,OAAO82B,WAC7B,GAAI8B,IAAwB,OAC5B,MAAMhtB,EAAepM,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAAUlM,EAAOiM,QAAQvC,OAAOnR,OAASyH,EAAOmK,MAAQnK,EAAOQ,OAAO2J,KAAKC,KAAO,EAAIpK,EAAO0J,OAAOnR,OAAS4I,KAAK8I,KAAKjK,EAAOQ,OAAO2J,KAAKC,MAAQpK,EAAO0J,OAAOnR,OAC7N,IAAIoE,EAAKqD,EAAOs3B,WAAW36B,GAC3BA,EAAKg6B,EAAkBh6B,GACvB,IAAIm+B,EAAiB,GACrB,GAAoB,YAAhBt6B,EAAO+b,KAAoB,CAC7B,IAAIwe,EAAkB/6B,EAAOQ,OAAOoK,KAAOzJ,KAAK8I,KAAKmC,EAAepM,EAAOQ,OAAOkO,gBAAkB1O,EAAOqM,SAAS9T,OAChHyH,EAAOQ,OAAO6e,UAAYrf,EAAOQ,OAAO6e,SAASnT,SAAW6uB,EAAkB3uB,IAChF2uB,EAAkB3uB,GAEpB,IAAK,IAAIxN,EAAI,EAAGA,EAAIm8B,EAAiBn8B,GAAK,EACpC4B,EAAOq3B,aACTiD,GAAkBt6B,EAAOq3B,aAAax5B,KAAK2B,EAAQpB,EAAG4B,EAAO+3B,aAG7DuC,GAAkB,IAAIt6B,EAAOo3B,iBAAiB53B,EAAOoJ,UAAY,gBAAkB,aAAa5I,EAAO+3B,kBAAkB/3B,EAAOo3B,gBAGtI,CACoB,aAAhBp3B,EAAO+b,OAEPue,EADEt6B,EAAOu3B,eACQv3B,EAAOu3B,eAAe15B,KAAK2B,EAAQQ,EAAOk4B,aAAcl4B,EAAOm4B,YAE/D,gBAAgBn4B,EAAOk4B,wCAAkDl4B,EAAOm4B,uBAGjF,gBAAhBn4B,EAAO+b,OAEPue,EADEt6B,EAAOs3B,kBACQt3B,EAAOs3B,kBAAkBz5B,KAAK2B,EAAQQ,EAAOo4B,sBAE7C,gBAAgBp4B,EAAOo4B,iCAG5C54B,EAAOs3B,WAAW4B,QAAU,GAC5Bv8B,EAAGtE,SAAQ2+B,IACW,WAAhBx2B,EAAO+b,OACTya,EAAM/K,UAAY6O,GAAkB,IAElB,YAAhBt6B,EAAO+b,MACTvc,EAAOs3B,WAAW4B,QAAQj1B,QAAQ+yB,EAAMh+B,iBAAiB6yB,GAAkBrrB,EAAO+3B,cACpF,IAEkB,WAAhB/3B,EAAO+b,MACT5T,EAAK,mBAAoBhM,EAAG,GAEhC,CACA,SAASunB,IACPlkB,EAAOQ,OAAO82B,WAAa3L,GAA0B3rB,EAAQA,EAAOgmB,eAAesR,WAAYt3B,EAAOQ,OAAO82B,WAAY,CACvH36B,GAAI,sBAEN,MAAM6D,EAASR,EAAOQ,OAAO82B,WAC7B,IAAK92B,EAAO7D,GAAI,OAChB,IAAIA,EACqB,iBAAd6D,EAAO7D,IAAmBqD,EAAOoJ,YAC1CzM,EAAKqD,EAAOrD,GAAG5D,cAAcyH,EAAO7D,KAEjCA,GAA2B,iBAAd6D,EAAO7D,KACvBA,EAAK,IAAIpC,SAASvB,iBAAiBwH,EAAO7D,MAEvCA,IACHA,EAAK6D,EAAO7D,IAETA,GAAoB,IAAdA,EAAGpE,SACVyH,EAAOQ,OAAOgkB,mBAA0C,iBAAdhkB,EAAO7D,IAAmBgG,MAAMC,QAAQjG,IAAOA,EAAGpE,OAAS,IACvGoE,EAAK,IAAIqD,EAAOrD,GAAG3D,iBAAiBwH,EAAO7D,KAEvCA,EAAGpE,OAAS,IACdoE,EAAKA,EAAGN,QAAO26B,GACTnzB,EAAemzB,EAAO,WAAW,KAAOh3B,EAAOrD,KAElD,KAGHgG,MAAMC,QAAQjG,IAAqB,IAAdA,EAAGpE,SAAcoE,EAAKA,EAAG,IAClD3E,OAAOsT,OAAOtL,EAAOs3B,WAAY,CAC/B36B,OAEFA,EAAKg6B,EAAkBh6B,GACvBA,EAAGtE,SAAQ2+B,IACW,YAAhBx2B,EAAO+b,MAAsB/b,EAAO+2B,WACtCP,EAAMv0B,UAAUC,QAAQlC,EAAOs4B,gBAAkB,IAAI18B,MAAM,MAE7D46B,EAAMv0B,UAAUC,IAAIlC,EAAOi4B,cAAgBj4B,EAAO+b,MAClDya,EAAMv0B,UAAUC,IAAI1C,EAAOkL,eAAiB1K,EAAOu4B,gBAAkBv4B,EAAOw4B,eACxD,YAAhBx4B,EAAO+b,MAAsB/b,EAAO03B,iBACtClB,EAAMv0B,UAAUC,IAAI,GAAGlC,EAAOi4B,gBAAgBj4B,EAAO+b,gBACrD4c,EAAqB,EACjB34B,EAAO23B,mBAAqB,IAC9B33B,EAAO23B,mBAAqB,IAGZ,gBAAhB33B,EAAO+b,MAA0B/b,EAAOy3B,qBAC1CjB,EAAMv0B,UAAUC,IAAIlC,EAAOq4B,0BAEzBr4B,EAAO+2B,WACTP,EAAMt+B,iBAAiB,QAAS6gC,GAE7Bv5B,EAAOkM,SACV8qB,EAAMv0B,UAAUC,IAAIlC,EAAOi2B,UAC7B,IAEJ,CACA,SAASzL,IACP,MAAMxqB,EAASR,EAAOQ,OAAO82B,WAC7B,GAAI8B,IAAwB,OAC5B,IAAIz8B,EAAKqD,EAAOs3B,WAAW36B,GACvBA,IACFA,EAAKg6B,EAAkBh6B,GACvBA,EAAGtE,SAAQ2+B,IACTA,EAAMv0B,UAAU+G,OAAOhJ,EAAOg2B,aAC9BQ,EAAMv0B,UAAU+G,OAAOhJ,EAAOi4B,cAAgBj4B,EAAO+b,MACrDya,EAAMv0B,UAAU+G,OAAOxJ,EAAOkL,eAAiB1K,EAAOu4B,gBAAkBv4B,EAAOw4B,eAC3Ex4B,EAAO+2B,YACTP,EAAMv0B,UAAU+G,WAAWhJ,EAAOs4B,gBAAkB,IAAI18B,MAAM,MAC9D46B,EAAMr+B,oBAAoB,QAAS4gC,GACrC,KAGAv5B,EAAOs3B,WAAW4B,SAASl5B,EAAOs3B,WAAW4B,QAAQ7gC,SAAQ2+B,GAASA,EAAMv0B,UAAU+G,UAAUhJ,EAAOg4B,kBAAkBp8B,MAAM,OACrI,CACAgL,EAAG,mBAAmB,KACpB,IAAKpH,EAAOs3B,aAAet3B,EAAOs3B,WAAW36B,GAAI,OACjD,MAAM6D,EAASR,EAAOQ,OAAO82B,WAC7B,IAAI36B,GACFA,GACEqD,EAAOs3B,WACX36B,EAAKg6B,EAAkBh6B,GACvBA,EAAGtE,SAAQ2+B,IACTA,EAAMv0B,UAAU+G,OAAOhJ,EAAOu4B,gBAAiBv4B,EAAOw4B,eACtDhC,EAAMv0B,UAAUC,IAAI1C,EAAOkL,eAAiB1K,EAAOu4B,gBAAkBv4B,EAAOw4B,cAAc,GAC1F,IAEJ5xB,EAAG,QAAQ,MACgC,IAArCpH,EAAOQ,OAAO82B,WAAWprB,QAE3Bqa,KAEArC,IACA2W,IACA/vB,IACF,IAEF1D,EAAG,qBAAqB,UACU,IAArBpH,EAAO6P,WAChB/E,GACF,IAEF1D,EAAG,mBAAmB,KACpB0D,GAAQ,IAEV1D,EAAG,wBAAwB,KACzByzB,IACA/vB,GAAQ,IAEV1D,EAAG,WAAW,KACZ4jB,GAAS,IAEX5jB,EAAG,kBAAkB,KACnB,IAAIzK,GACFA,GACEqD,EAAOs3B,WACP36B,IACFA,EAAKg6B,EAAkBh6B,GACvBA,EAAGtE,SAAQ2+B,GAASA,EAAMv0B,UAAUzC,EAAOkM,QAAU,SAAW,OAAOlM,EAAOQ,OAAO82B,WAAWb,aAClG,IAEFrvB,EAAG,eAAe,KAChB0D,GAAQ,IAEV1D,EAAG,SAAS,CAACimB,EAAIjpB,KACf,MAAM4Y,EAAW5Y,EAAElM,OACbyE,EAAKg6B,EAAkB32B,EAAOs3B,WAAW36B,IAC/C,GAAIqD,EAAOQ,OAAO82B,WAAW36B,IAAMqD,EAAOQ,OAAO82B,WAAWhB,aAAe35B,GAAMA,EAAGpE,OAAS,IAAMykB,EAASva,UAAU+N,SAASxQ,EAAOQ,OAAO82B,WAAWiB,aAAc,CACpK,GAAIv4B,EAAOuiB,aAAeviB,EAAOuiB,WAAWC,QAAUxF,IAAahd,EAAOuiB,WAAWC,QAAUxiB,EAAOuiB,WAAWE,QAAUzF,IAAahd,EAAOuiB,WAAWE,QAAS,OACnK,MAAM+U,EAAW76B,EAAG,GAAG8F,UAAU+N,SAASxQ,EAAOQ,OAAO82B,WAAWd,aAEjE7tB,GADe,IAAb6uB,EACG,iBAEA,kBAEP76B,EAAGtE,SAAQ2+B,GAASA,EAAMv0B,UAAUg1B,OAAOz3B,EAAOQ,OAAO82B,WAAWd,cACtE,KAEF,MAaMjQ,EAAU,KACdvmB,EAAOrD,GAAG8F,UAAUC,IAAI1C,EAAOQ,OAAO82B,WAAW2B,yBACjD,IAAIt8B,GACFA,GACEqD,EAAOs3B,WACP36B,IACFA,EAAKg6B,EAAkBh6B,GACvBA,EAAGtE,SAAQ2+B,GAASA,EAAMv0B,UAAUC,IAAI1C,EAAOQ,OAAO82B,WAAW2B,4BAEnEjO,GAAS,EAEXhzB,OAAOsT,OAAOtL,EAAOs3B,WAAY,CAC/B9Q,OAzBa,KACbxmB,EAAOrD,GAAG8F,UAAU+G,OAAOxJ,EAAOQ,OAAO82B,WAAW2B,yBACpD,IAAIt8B,GACFA,GACEqD,EAAOs3B,WACP36B,IACFA,EAAKg6B,EAAkBh6B,GACvBA,EAAGtE,SAAQ2+B,GAASA,EAAMv0B,UAAU+G,OAAOxJ,EAAOQ,OAAO82B,WAAW2B,4BAEtE/U,IACA2W,IACA/vB,GAAQ,EAeRyb,UACAsU,SACA/vB,SACAoZ,OACA8G,WAEJ,EAEA,SAAmBjrB,GACjB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,EAAEuB,KACFA,GACE5I,EACJ,MAAMxF,EAAWF,IACjB,IAGI2gC,EACAC,EACAC,EACAC,EANA/d,GAAY,EACZiW,EAAU,KACV+H,EAAc,KAuBlB,SAASrlB,IACP,IAAK/V,EAAOQ,OAAO66B,UAAU1+B,KAAOqD,EAAOq7B,UAAU1+B,GAAI,OACzD,MAAM0+B,UACJA,EACAxvB,aAAcC,GACZ9L,GACEs7B,OACJA,EAAM3+B,GACNA,GACE0+B,EACE76B,EAASR,EAAOQ,OAAO66B,UACvBn6B,EAAWlB,EAAOQ,OAAOoK,KAAO5K,EAAO0S,aAAe1S,EAAOkB,SACnE,IAAIq6B,EAAUN,EACVO,GAAUN,EAAYD,GAAY/5B,EAClC4K,GACF0vB,GAAUA,EACNA,EAAS,GACXD,EAAUN,EAAWO,EACrBA,EAAS,IACCA,EAASP,EAAWC,IAC9BK,EAAUL,EAAYM,IAEfA,EAAS,GAClBD,EAAUN,EAAWO,EACrBA,EAAS,GACAA,EAASP,EAAWC,IAC7BK,EAAUL,EAAYM,GAEpBx7B,EAAOkL,gBACTowB,EAAO/hC,MAAM6D,UAAY,eAAeo+B,aACxCF,EAAO/hC,MAAMoM,MAAQ,GAAG41B,QAExBD,EAAO/hC,MAAM6D,UAAY,oBAAoBo+B,UAC7CF,EAAO/hC,MAAMsM,OAAS,GAAG01B,OAEvB/6B,EAAOi7B,OACTjgC,aAAa63B,GACb12B,EAAGpD,MAAMmiC,QAAU,EACnBrI,EAAU93B,YAAW,KACnBoB,EAAGpD,MAAMmiC,QAAU,EACnB/+B,EAAGpD,MAAM4rB,mBAAqB,OAAO,GACpC,KAEP,CAKA,SAASpa,IACP,IAAK/K,EAAOQ,OAAO66B,UAAU1+B,KAAOqD,EAAOq7B,UAAU1+B,GAAI,OACzD,MAAM0+B,UACJA,GACEr7B,GACEs7B,OACJA,EAAM3+B,GACNA,GACE0+B,EACJC,EAAO/hC,MAAMoM,MAAQ,GACrB21B,EAAO/hC,MAAMsM,OAAS,GACtBq1B,EAAYl7B,EAAOkL,eAAiBvO,EAAG6H,YAAc7H,EAAGsU,aACxDkqB,EAAUn7B,EAAOsE,MAAQtE,EAAOiN,YAAcjN,EAAOQ,OAAOiM,oBAAsBzM,EAAOQ,OAAO8M,eAAiBtN,EAAOqM,SAAS,GAAK,IAEpI4uB,EADuC,SAArCj7B,EAAOQ,OAAO66B,UAAUJ,SACfC,EAAYC,EAEZ/vB,SAASpL,EAAOQ,OAAO66B,UAAUJ,SAAU,IAEpDj7B,EAAOkL,eACTowB,EAAO/hC,MAAMoM,MAAQ,GAAGs1B,MAExBK,EAAO/hC,MAAMsM,OAAS,GAAGo1B,MAGzBt+B,EAAGpD,MAAMoiC,QADPR,GAAW,EACM,OAEA,GAEjBn7B,EAAOQ,OAAO66B,UAAUI,OAC1B9+B,EAAGpD,MAAMmiC,QAAU,GAEjB17B,EAAOQ,OAAOyP,eAAiBjQ,EAAOkM,SACxCmvB,EAAU1+B,GAAG8F,UAAUzC,EAAOslB,SAAW,MAAQ,UAAUtlB,EAAOQ,OAAO66B,UAAU5E,UAEvF,CACA,SAASmF,EAAmBx3B,GAC1B,OAAOpE,EAAOkL,eAAiB9G,EAAEy3B,QAAUz3B,EAAE03B,OAC/C,CACA,SAASC,EAAgB33B,GACvB,MAAMi3B,UACJA,EACAxvB,aAAcC,GACZ9L,GACErD,GACJA,GACE0+B,EACJ,IAAIW,EACJA,GAAiBJ,EAAmBx3B,GAAKvB,EAAclG,GAAIqD,EAAOkL,eAAiB,OAAS,QAA2B,OAAjB8vB,EAAwBA,EAAeC,EAAW,KAAOC,EAAYD,GAC3Ke,EAAgB76B,KAAKC,IAAID,KAAKE,IAAI26B,EAAe,GAAI,GACjDlwB,IACFkwB,EAAgB,EAAIA,GAEtB,MAAMlG,EAAW91B,EAAO8R,gBAAkB9R,EAAOuS,eAAiBvS,EAAO8R,gBAAkBkqB,EAC3Fh8B,EAAOoS,eAAe0jB,GACtB91B,EAAO+V,aAAa+f,GACpB91B,EAAOuU,oBACPvU,EAAOsT,qBACT,CACA,SAAS2oB,EAAY73B,GACnB,MAAM5D,EAASR,EAAOQ,OAAO66B,WACvBA,UACJA,EAAS36B,UACTA,GACEV,GACErD,GACJA,EAAE2+B,OACFA,GACED,EACJje,GAAY,EACZ4d,EAAe52B,EAAElM,SAAWojC,EAASM,EAAmBx3B,GAAKA,EAAElM,OAAO6K,wBAAwB/C,EAAOkL,eAAiB,OAAS,OAAS,KACxI9G,EAAEgY,iBACFhY,EAAEic,kBACF3f,EAAUnH,MAAM4rB,mBAAqB,QACrCmW,EAAO/hC,MAAM4rB,mBAAqB,QAClC4W,EAAgB33B,GAChB5I,aAAa4/B,GACbz+B,EAAGpD,MAAM4rB,mBAAqB,MAC1B3kB,EAAOi7B,OACT9+B,EAAGpD,MAAMmiC,QAAU,GAEjB17B,EAAOQ,OAAO+M,UAChBvN,EAAOU,UAAUnH,MAAM,oBAAsB,QAE/CoP,EAAK,qBAAsBvE,EAC7B,CACA,SAAS83B,EAAW93B,GAClB,MAAMi3B,UACJA,EAAS36B,UACTA,GACEV,GACErD,GACJA,EAAE2+B,OACFA,GACED,EACCje,IACDhZ,EAAEgY,eAAgBhY,EAAEgY,iBAAsBhY,EAAEgvB,aAAc,EAC9D2I,EAAgB33B,GAChB1D,EAAUnH,MAAM4rB,mBAAqB,MACrCxoB,EAAGpD,MAAM4rB,mBAAqB,MAC9BmW,EAAO/hC,MAAM4rB,mBAAqB,MAClCxc,EAAK,oBAAqBvE,GAC5B,CACA,SAAS+3B,EAAU/3B,GACjB,MAAM5D,EAASR,EAAOQ,OAAO66B,WACvBA,UACJA,EAAS36B,UACTA,GACEV,GACErD,GACJA,GACE0+B,EACCje,IACLA,GAAY,EACRpd,EAAOQ,OAAO+M,UAChBvN,EAAOU,UAAUnH,MAAM,oBAAsB,GAC7CmH,EAAUnH,MAAM4rB,mBAAqB,IAEnC3kB,EAAOi7B,OACTjgC,aAAa4/B,GACbA,EAAc7+B,GAAS,KACrBI,EAAGpD,MAAMmiC,QAAU,EACnB/+B,EAAGpD,MAAM4rB,mBAAqB,OAAO,GACpC,MAELxc,EAAK,mBAAoBvE,GACrB5D,EAAO47B,eACTp8B,EAAOsZ,iBAEX,CACA,SAASjS,EAAOM,GACd,MAAM0zB,UACJA,EAAS76B,OACTA,GACER,EACErD,EAAK0+B,EAAU1+B,GACrB,IAAKA,EAAI,OACT,MAAMzE,EAASyE,EACT0/B,IAAiB77B,EAAOikB,kBAAmB,CAC/CX,SAAS,EACTH,SAAS,GAEL2Y,IAAkB97B,EAAOikB,kBAAmB,CAChDX,SAAS,EACTH,SAAS,GAEX,IAAKzrB,EAAQ,OACb,MAAMqkC,EAAyB,OAAX50B,EAAkB,mBAAqB,sBAC3DzP,EAAOqkC,GAAa,cAAeN,EAAaI,GAChD9hC,EAASgiC,GAAa,cAAeL,EAAYG,GACjD9hC,EAASgiC,GAAa,YAAaJ,EAAWG,EAChD,CASA,SAASpY,IACP,MAAMmX,UACJA,EACA1+B,GAAI6/B,GACFx8B,EACJA,EAAOQ,OAAO66B,UAAY1P,GAA0B3rB,EAAQA,EAAOgmB,eAAeqV,UAAWr7B,EAAOQ,OAAO66B,UAAW,CACpH1+B,GAAI,qBAEN,MAAM6D,EAASR,EAAOQ,OAAO66B,UAC7B,IAAK76B,EAAO7D,GAAI,OAChB,IAAIA,EAeA2+B,EAXJ,GAHyB,iBAAd96B,EAAO7D,IAAmBqD,EAAOoJ,YAC1CzM,EAAKqD,EAAOrD,GAAG5D,cAAcyH,EAAO7D,KAEjCA,GAA2B,iBAAd6D,EAAO7D,GAGbA,IACVA,EAAK6D,EAAO7D,SAFZ,GADAA,EAAKpC,EAASvB,iBAAiBwH,EAAO7D,KACjCA,EAAGpE,OAAQ,OAIdyH,EAAOQ,OAAOgkB,mBAA0C,iBAAdhkB,EAAO7D,IAAmBA,EAAGpE,OAAS,GAAqD,IAAhDikC,EAASxjC,iBAAiBwH,EAAO7D,IAAIpE,SAC5HoE,EAAK6/B,EAASzjC,cAAcyH,EAAO7D,KAEjCA,EAAGpE,OAAS,IAAGoE,EAAKA,EAAG,IAC3BA,EAAG8F,UAAUC,IAAI1C,EAAOkL,eAAiB1K,EAAOu4B,gBAAkBv4B,EAAOw4B,eAErEr8B,IACF2+B,EAAS3+B,EAAG5D,cAAc8yB,GAAkB7rB,EAAOQ,OAAO66B,UAAUoB,YAC/DnB,IACHA,EAASliC,EAAc,MAAO4G,EAAOQ,OAAO66B,UAAUoB,WACtD9/B,EAAGwd,OAAOmhB,KAGdtjC,OAAOsT,OAAO+vB,EAAW,CACvB1+B,KACA2+B,WAEE96B,EAAOk8B,WA5CN18B,EAAOQ,OAAO66B,UAAU1+B,IAAOqD,EAAOq7B,UAAU1+B,IACrD0K,EAAO,MA8CH1K,GACFA,EAAG8F,UAAUzC,EAAOkM,QAAU,SAAW,UAAUjQ,EAAgB+D,EAAOQ,OAAO66B,UAAU5E,WAE/F,CACA,SAASzL,IACP,MAAMxqB,EAASR,EAAOQ,OAAO66B,UACvB1+B,EAAKqD,EAAOq7B,UAAU1+B,GACxBA,GACFA,EAAG8F,UAAU+G,UAAUvN,EAAgB+D,EAAOkL,eAAiB1K,EAAOu4B,gBAAkBv4B,EAAOw4B,gBAnD5Fh5B,EAAOQ,OAAO66B,UAAU1+B,IAAOqD,EAAOq7B,UAAU1+B,IACrD0K,EAAO,MAqDT,CApRAwhB,EAAa,CACXwS,UAAW,CACT1+B,GAAI,KACJs+B,SAAU,OACVQ,MAAM,EACNiB,WAAW,EACXN,eAAe,EACf3F,UAAW,wBACXgG,UAAW,wBACXE,uBAAwB,4BACxB5D,gBAAiB,8BACjBC,cAAe,+BAGnBh5B,EAAOq7B,UAAY,CACjB1+B,GAAI,KACJ2+B,OAAQ,MAqQVl0B,EAAG,QAAQ,MAC+B,IAApCpH,EAAOQ,OAAO66B,UAAUnvB,QAE1Bqa,KAEArC,IACAnZ,IACAgL,IACF,IAEF3O,EAAG,4CAA4C,KAC7C2D,GAAY,IAEd3D,EAAG,gBAAgB,KACjB2O,GAAc,IAEhB3O,EAAG,iBAAiB,CAACimB,EAAI9sB,MAvOzB,SAAuBA,GAChBP,EAAOQ,OAAO66B,UAAU1+B,IAAOqD,EAAOq7B,UAAU1+B,KACrDqD,EAAOq7B,UAAUC,OAAO/hC,MAAM4rB,mBAAqB,GAAG5kB,MACxD,CAqOEsQ,CAActQ,EAAS,IAEzB6G,EAAG,kBAAkB,KACnB,MAAMzK,GACJA,GACEqD,EAAOq7B,UACP1+B,GACFA,EAAG8F,UAAUzC,EAAOkM,QAAU,SAAW,UAAUjQ,EAAgB+D,EAAOQ,OAAO66B,UAAU5E,WAC7F,IAEFrvB,EAAG,WAAW,KACZ4jB,GAAS,IAEX,MASMzE,EAAU,KACdvmB,EAAOrD,GAAG8F,UAAUC,OAAOzG,EAAgB+D,EAAOQ,OAAO66B,UAAUsB,yBAC/D38B,EAAOq7B,UAAU1+B,IACnBqD,EAAOq7B,UAAU1+B,GAAG8F,UAAUC,OAAOzG,EAAgB+D,EAAOQ,OAAO66B,UAAUsB,yBAE/E3R,GAAS,EAEXhzB,OAAOsT,OAAOtL,EAAOq7B,UAAW,CAC9B7U,OAjBa,KACbxmB,EAAOrD,GAAG8F,UAAU+G,UAAUvN,EAAgB+D,EAAOQ,OAAO66B,UAAUsB,yBAClE38B,EAAOq7B,UAAU1+B,IACnBqD,EAAOq7B,UAAU1+B,GAAG8F,UAAU+G,UAAUvN,EAAgB+D,EAAOQ,OAAO66B,UAAUsB,yBAElFzY,IACAnZ,IACAgL,GAAc,EAWdwQ,UACAxb,aACAgL,eACAmO,OACA8G,WAEJ,EAEA,SAAkBjrB,GAChB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACX+T,SAAU,CACR1wB,SAAS,KAGb,MAAM2wB,EAAmB,2IACnBC,EAAe,CAACngC,EAAIuE,KACxB,MAAM4K,IACJA,GACE9L,EACE00B,EAAY5oB,GAAO,EAAI,EACvBixB,EAAIpgC,EAAGwY,aAAa,yBAA2B,IACrD,IAAIe,EAAIvZ,EAAGwY,aAAa,0BACpBgB,EAAIxZ,EAAGwY,aAAa,0BACxB,MAAMslB,EAAQ99B,EAAGwY,aAAa,8BACxBumB,EAAU/+B,EAAGwY,aAAa,gCAC1B6nB,EAASrgC,EAAGwY,aAAa,+BAqB/B,GApBIe,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KACAnW,EAAOkL,gBAChBgL,EAAI6mB,EACJ5mB,EAAI,MAEJA,EAAI4mB,EACJ7mB,EAAI,KAGJA,EADEA,EAAEhX,QAAQ,MAAQ,EACbkM,SAAS8K,EAAG,IAAMhV,EAAWwzB,EAAhC,IAEGxe,EAAIhV,EAAWwzB,EAAlB,KAGJve,EADEA,EAAEjX,QAAQ,MAAQ,EACbkM,SAAS+K,EAAG,IAAMjV,EAArB,IAEGiV,EAAIjV,EAAP,KAEF,MAAOw6B,EAA6C,CACtD,MAAMuB,EAAiBvB,GAAWA,EAAU,IAAM,EAAIv6B,KAAKsN,IAAIvN,IAC/DvE,EAAGpD,MAAMmiC,QAAUuB,CACrB,CACA,IAAI7/B,EAAY,eAAe8Y,MAAMC,UACrC,GAAI,MAAOskB,EAAyC,CAElDr9B,GAAa,UADQq9B,GAASA,EAAQ,IAAM,EAAIt5B,KAAKsN,IAAIvN,MAE3D,CACA,GAAI87B,SAAiBA,EAA2C,CAE9D5/B,GAAa,WADS4/B,EAAS97B,GAAY,OAE7C,CACAvE,EAAGpD,MAAM6D,UAAYA,CAAS,EAE1B2Y,EAAe,KACnB,MAAMpZ,GACJA,EAAE+M,OACFA,EAAMxI,SACNA,EAAQmL,SACRA,EAAQjD,UACRA,GACEpJ,EACEk9B,EAAWn7B,EAAgBpF,EAAIkgC,GACjC78B,EAAOoJ,WACT8zB,EAASj5B,QAAQlC,EAAgB/B,EAAO8qB,OAAQ+R,IAElDK,EAAS7kC,SAAQ2+B,IACf8F,EAAa9F,EAAO91B,EAAS,IAE/BwI,EAAOrR,SAAQ,CAACwJ,EAASwN,KACvB,IAAIwC,EAAgBhQ,EAAQX,SACxBlB,EAAOQ,OAAOkO,eAAiB,GAAqC,SAAhC1O,EAAOQ,OAAOuJ,gBACpD8H,GAAiB1Q,KAAK8I,KAAKoF,EAAa,GAAKnO,GAAYmL,EAAS9T,OAAS,IAE7EsZ,EAAgB1Q,KAAKE,IAAIF,KAAKC,IAAIyQ,GAAgB,GAAI,GACtDhQ,EAAQ7I,iBAAiB,GAAG6jC,oCAAmDxkC,SAAQ2+B,IACrF8F,EAAa9F,EAAOnlB,EAAc,GAClC,GACF,EAoBJzK,EAAG,cAAc,KACVpH,EAAOQ,OAAOo8B,SAAS1wB,UAC5BlM,EAAOQ,OAAO2P,qBAAsB,EACpCnQ,EAAOgmB,eAAe7V,qBAAsB,EAAI,IAElD/I,EAAG,QAAQ,KACJpH,EAAOQ,OAAOo8B,SAAS1wB,SAC5B6J,GAAc,IAEhB3O,EAAG,gBAAgB,KACZpH,EAAOQ,OAAOo8B,SAAS1wB,SAC5B6J,GAAc,IAEhB3O,EAAG,iBAAiB,CAAC+1B,EAAS58B,KACvBP,EAAOQ,OAAOo8B,SAAS1wB,SAhCR,SAAU3L,QACb,IAAbA,IACFA,EAAWP,EAAOQ,OAAOC,OAE3B,MAAM9D,GACJA,EAAEmuB,OACFA,GACE9qB,EACEk9B,EAAW,IAAIvgC,EAAG3D,iBAAiB6jC,IACrC78B,EAAOoJ,WACT8zB,EAASj5B,QAAQ6mB,EAAO9xB,iBAAiB6jC,IAE3CK,EAAS7kC,SAAQ+kC,IACf,IAAIC,EAAmBjyB,SAASgyB,EAAWjoB,aAAa,iCAAkC,KAAO5U,EAChF,IAAbA,IAAgB88B,EAAmB,GACvCD,EAAW7jC,MAAM4rB,mBAAqB,GAAGkY,KAAoB,GAEjE,CAgBExsB,CAActQ,EAAS,GAE3B,EAEA,SAAcR,GACZ,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,EAAEuB,KACFA,GACE5I,EACJ,MAAM/D,EAASF,IACf+sB,EAAa,CACXyU,KAAM,CACJpxB,SAAS,EACTqxB,SAAU,EACVnW,SAAU,EACVqQ,QAAQ,EACR+F,eAAgB,wBAChBC,iBAAkB,yBAGtBz9B,EAAOs9B,KAAO,CACZpxB,SAAS,GAEX,IAEIwxB,EACAC,EAHAC,EAAe,EACfC,GAAY,EAGhB,MAAMC,EAAU,GACVC,EAAU,CACdC,QAAS,EACTC,QAAS,EACTp8B,aAASnD,EACTw/B,gBAAYx/B,EACZy/B,iBAAaz/B,EACbwK,aAASxK,EACT0/B,iBAAa1/B,EACb6+B,SAAU,GAENc,EAAQ,CACZjhB,eAAW1e,EACX2e,aAAS3e,EACT2f,cAAU3f,EACV4f,cAAU5f,EACV4/B,UAAM5/B,EACN6/B,UAAM7/B,EACN8/B,UAAM9/B,EACN+/B,UAAM//B,EACNiH,WAAOjH,EACPmH,YAAQnH,EACRsd,YAAQtd,EACR8f,YAAQ9f,EACRggC,aAAc,CAAC,EACfC,eAAgB,CAAC,GAEb1V,EAAW,CACf/S,OAAGxX,EACHyX,OAAGzX,EACHkgC,mBAAelgC,EACfmgC,mBAAengC,EACfogC,cAAUpgC,GAEZ,IAAI+7B,EAAQ,EAcZ,SAASsE,IACP,GAAIjB,EAAQvlC,OAAS,EAAG,OAAO,EAC/B,MAAMymC,EAAKlB,EAAQ,GAAGlhB,MAChBqiB,EAAKnB,EAAQ,GAAGvf,MAChB2gB,EAAKpB,EAAQ,GAAGlhB,MAChBuiB,EAAKrB,EAAQ,GAAGvf,MAEtB,OADiBpd,KAAK4e,MAAMmf,EAAKF,IAAO,GAAKG,EAAKF,IAAO,EAE3D,CAYA,SAASG,EAAiBh7B,GACxB,MAAMsV,EAHC1Z,EAAOoJ,UAAY,eAAiB,IAAIpJ,EAAOQ,OAAO6I,aAI7D,QAAIjF,EAAElM,OAAOgK,QAAQwX,IACjB1Z,EAAO0J,OAAOrN,QAAOwF,GAAWA,EAAQ2O,SAASpM,EAAElM,UAASK,OAAS,CAE3E,CASA,SAAS8mC,EAAej7B,GAItB,GAHsB,UAAlBA,EAAE2Y,aACJ+gB,EAAQr1B,OAAO,EAAGq1B,EAAQvlC,SAEvB6mC,EAAiBh7B,GAAI,OAC1B,MAAM5D,EAASR,EAAOQ,OAAO88B,KAI7B,GAHAI,GAAqB,EACrBC,GAAmB,EACnBG,EAAQ75B,KAAKG,KACT05B,EAAQvlC,OAAS,GAArB,CAKA,GAFAmlC,GAAqB,EACrBK,EAAQuB,WAAaP,KAChBhB,EAAQl8B,QAAS,CACpBk8B,EAAQl8B,QAAUuC,EAAElM,OAAOiR,QAAQ,IAAInJ,EAAOQ,OAAO6I,4BAChD00B,EAAQl8B,UAASk8B,EAAQl8B,QAAU7B,EAAO0J,OAAO1J,EAAOkK,cAC7D,IAAIhB,EAAU60B,EAAQl8B,QAAQ9I,cAAc,IAAIyH,EAAOg9B,kBAUvD,GATIt0B,IACFA,EAAUA,EAAQlQ,iBAAiB,kDAAkD,IAEvF+kC,EAAQ70B,QAAUA,EAEhB60B,EAAQK,YADNl1B,EACoBrF,EAAek6B,EAAQ70B,QAAS,IAAI1I,EAAOg9B,kBAAkB,QAE7D9+B,GAEnBq/B,EAAQK,YAEX,YADAL,EAAQ70B,aAAUxK,GAGpBq/B,EAAQR,SAAWQ,EAAQK,YAAYjpB,aAAa,qBAAuB3U,EAAO+8B,QACpF,CACA,GAAIQ,EAAQ70B,QAAS,CACnB,MAAO80B,EAASC,GA3DpB,WACE,GAAIH,EAAQvlC,OAAS,EAAG,MAAO,CAC7B2d,EAAG,KACHC,EAAG,MAEL,MAAMrT,EAAMi7B,EAAQ70B,QAAQnG,wBAC5B,MAAO,EAAE+6B,EAAQ,GAAGlhB,OAASkhB,EAAQ,GAAGlhB,MAAQkhB,EAAQ,GAAGlhB,OAAS,EAAI9Z,EAAIoT,EAAIla,EAAOqH,SAAWu6B,GAAeE,EAAQ,GAAGvf,OAASuf,EAAQ,GAAGvf,MAAQuf,EAAQ,GAAGvf,OAAS,EAAIzb,EAAIqT,EAAIna,EAAOmH,SAAWy6B,EAC5M,CAoD+B2B,GAC3BxB,EAAQC,QAAUA,EAClBD,EAAQE,QAAUA,EAClBF,EAAQ70B,QAAQ3P,MAAM4rB,mBAAqB,KAC7C,CACA0Y,GAAY,CA5BZ,CA6BF,CACA,SAAS2B,EAAgBp7B,GACvB,IAAKg7B,EAAiBh7B,GAAI,OAC1B,MAAM5D,EAASR,EAAOQ,OAAO88B,KACvBA,EAAOt9B,EAAOs9B,KACdmC,EAAe3B,EAAQ4B,WAAUC,GAAYA,EAASnjB,YAAcpY,EAAEoY,YACxEijB,GAAgB,IAAG3B,EAAQ2B,GAAgBr7B,GAC3C05B,EAAQvlC,OAAS,IAGrBolC,GAAmB,EACnBI,EAAQ6B,UAAYb,IACfhB,EAAQ70B,UAGbo0B,EAAK7C,MAAQsD,EAAQ6B,UAAY7B,EAAQuB,WAAa1B,EAClDN,EAAK7C,MAAQsD,EAAQR,WACvBD,EAAK7C,MAAQsD,EAAQR,SAAW,GAAKD,EAAK7C,MAAQsD,EAAQR,SAAW,IAAM,IAEzED,EAAK7C,MAAQj6B,EAAO4mB,WACtBkW,EAAK7C,MAAQj6B,EAAO4mB,SAAW,GAAK5mB,EAAO4mB,SAAWkW,EAAK7C,MAAQ,IAAM,IAE3EsD,EAAQ70B,QAAQ3P,MAAM6D,UAAY,4BAA4BkgC,EAAK7C,UACrE,CACA,SAASoF,EAAaz7B,GACpB,IAAKg7B,EAAiBh7B,GAAI,OAC1B,GAAsB,UAAlBA,EAAE2Y,aAAsC,eAAX3Y,EAAEmY,KAAuB,OAC1D,MAAM/b,EAASR,EAAOQ,OAAO88B,KACvBA,EAAOt9B,EAAOs9B,KACdmC,EAAe3B,EAAQ4B,WAAUC,GAAYA,EAASnjB,YAAcpY,EAAEoY,YACxEijB,GAAgB,GAAG3B,EAAQr1B,OAAOg3B,EAAc,GAC/C/B,GAAuBC,IAG5BD,GAAqB,EACrBC,GAAmB,EACdI,EAAQ70B,UACbo0B,EAAK7C,MAAQt5B,KAAKC,IAAID,KAAKE,IAAIi8B,EAAK7C,MAAOsD,EAAQR,UAAW/8B,EAAO4mB,UACrE2W,EAAQ70B,QAAQ3P,MAAM4rB,mBAAqB,GAAGnlB,EAAOQ,OAAOC,UAC5Ds9B,EAAQ70B,QAAQ3P,MAAM6D,UAAY,4BAA4BkgC,EAAK7C,SACnEmD,EAAeN,EAAK7C,MACpBoD,GAAY,EACRP,EAAK7C,MAAQ,GAAKsD,EAAQl8B,QAC5Bk8B,EAAQl8B,QAAQY,UAAUC,IAAI,GAAGlC,EAAOi9B,oBAC/BH,EAAK7C,OAAS,GAAKsD,EAAQl8B,SACpCk8B,EAAQl8B,QAAQY,UAAU+G,OAAO,GAAGhJ,EAAOi9B,oBAE1B,IAAfH,EAAK7C,QACPsD,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAClBF,EAAQl8B,aAAUnD,IAEtB,CAWA,SAAS4gB,EAAYlb,GACnB,IAAKg7B,EAAiBh7B,KAhHxB,SAAkCA,GAChC,MAAMnC,EAAW,IAAIjC,EAAOQ,OAAO88B,KAAKE,iBACxC,QAAIp5B,EAAElM,OAAOgK,QAAQD,IACjB,IAAIjC,EAAO8qB,OAAO9xB,iBAAiBiJ,IAAW5F,QAAO0qB,GAAeA,EAAYvW,SAASpM,EAAElM,UAASK,OAAS,CAEnH,CA2G+BunC,CAAyB17B,GAAI,OAC1D,MAAMk5B,EAAOt9B,EAAOs9B,KACpB,IAAKS,EAAQ70B,QAAS,OACtB,IAAKm1B,EAAMjhB,YAAc2gB,EAAQl8B,QAAS,OACrCw8B,EAAMhhB,UACTghB,EAAM14B,MAAQo4B,EAAQ70B,QAAQ1E,YAC9B65B,EAAMx4B,OAASk4B,EAAQ70B,QAAQ+H,aAC/BotB,EAAMriB,OAAStf,EAAaqhC,EAAQK,YAAa,MAAQ,EACzDC,EAAM7f,OAAS9hB,EAAaqhC,EAAQK,YAAa,MAAQ,EACzDL,EAAQG,WAAaH,EAAQl8B,QAAQ2C,YACrCu5B,EAAQI,YAAcJ,EAAQl8B,QAAQoP,aACtC8sB,EAAQK,YAAY7kC,MAAM4rB,mBAAqB,OAGjD,MAAM4a,EAAc1B,EAAM14B,MAAQ23B,EAAK7C,MACjCuF,EAAe3B,EAAMx4B,OAASy3B,EAAK7C,MACzC,GAAIsF,EAAchC,EAAQG,YAAc8B,EAAejC,EAAQI,YAAa,OAC5EE,EAAMC,KAAOn9B,KAAKE,IAAI08B,EAAQG,WAAa,EAAI6B,EAAc,EAAG,GAChE1B,EAAMG,MAAQH,EAAMC,KACpBD,EAAME,KAAOp9B,KAAKE,IAAI08B,EAAQI,YAAc,EAAI6B,EAAe,EAAG,GAClE3B,EAAMI,MAAQJ,EAAME,KACpBF,EAAMM,eAAezoB,EAAI4nB,EAAQvlC,OAAS,EAAIulC,EAAQ,GAAGlhB,MAAQxY,EAAEwY,MACnEyhB,EAAMM,eAAexoB,EAAI2nB,EAAQvlC,OAAS,EAAIulC,EAAQ,GAAGvf,MAAQna,EAAEma,MAKnE,GAJoBpd,KAAKC,IAAID,KAAKsN,IAAI4vB,EAAMM,eAAezoB,EAAImoB,EAAMK,aAAaxoB,GAAI/U,KAAKsN,IAAI4vB,EAAMM,eAAexoB,EAAIkoB,EAAMK,aAAavoB,IACzH,IAChBnW,EAAOme,YAAa,IAEjBkgB,EAAMhhB,UAAYwgB,EAAW,CAChC,GAAI79B,EAAOkL,iBAAmB/J,KAAKoN,MAAM8vB,EAAMC,QAAUn9B,KAAKoN,MAAM8vB,EAAMriB,SAAWqiB,EAAMM,eAAezoB,EAAImoB,EAAMK,aAAaxoB,GAAK/U,KAAKoN,MAAM8vB,EAAMG,QAAUr9B,KAAKoN,MAAM8vB,EAAMriB,SAAWqiB,EAAMM,eAAezoB,EAAImoB,EAAMK,aAAaxoB,GAEvO,YADAmoB,EAAMjhB,WAAY,GAGpB,IAAKpd,EAAOkL,iBAAmB/J,KAAKoN,MAAM8vB,EAAME,QAAUp9B,KAAKoN,MAAM8vB,EAAM7f,SAAW6f,EAAMM,eAAexoB,EAAIkoB,EAAMK,aAAavoB,GAAKhV,KAAKoN,MAAM8vB,EAAMI,QAAUt9B,KAAKoN,MAAM8vB,EAAM7f,SAAW6f,EAAMM,eAAexoB,EAAIkoB,EAAMK,aAAavoB,GAExO,YADAkoB,EAAMjhB,WAAY,EAGtB,CACIhZ,EAAE8b,YACJ9b,EAAEgY,iBAEJhY,EAAEic,kBACFge,EAAMhhB,SAAU,EAChB,MAAM4iB,GAAc3C,EAAK7C,MAAQmD,IAAiBG,EAAQR,SAAWv9B,EAAOQ,OAAO88B,KAAKlW,WAClF4W,QACJA,EAAOC,QACPA,GACEF,EACJM,EAAMhgB,SAAWggB,EAAMM,eAAezoB,EAAImoB,EAAMK,aAAaxoB,EAAImoB,EAAMriB,OAASikB,GAAc5B,EAAM14B,MAAkB,EAAVq4B,GAC5GK,EAAM/f,SAAW+f,EAAMM,eAAexoB,EAAIkoB,EAAMK,aAAavoB,EAAIkoB,EAAM7f,OAASyhB,GAAc5B,EAAMx4B,OAAmB,EAAVo4B,GACzGI,EAAMhgB,SAAWggB,EAAMC,OACzBD,EAAMhgB,SAAWggB,EAAMC,KAAO,GAAKD,EAAMC,KAAOD,EAAMhgB,SAAW,IAAM,IAErEggB,EAAMhgB,SAAWggB,EAAMG,OACzBH,EAAMhgB,SAAWggB,EAAMG,KAAO,GAAKH,EAAMhgB,SAAWggB,EAAMG,KAAO,IAAM,IAErEH,EAAM/f,SAAW+f,EAAME,OACzBF,EAAM/f,SAAW+f,EAAME,KAAO,GAAKF,EAAME,KAAOF,EAAM/f,SAAW,IAAM,IAErE+f,EAAM/f,SAAW+f,EAAMI,OACzBJ,EAAM/f,SAAW+f,EAAMI,KAAO,GAAKJ,EAAM/f,SAAW+f,EAAMI,KAAO,IAAM,IAIpExV,EAAS2V,gBAAe3V,EAAS2V,cAAgBP,EAAMM,eAAezoB,GACtE+S,EAAS4V,gBAAe5V,EAAS4V,cAAgBR,EAAMM,eAAexoB,GACtE8S,EAAS6V,WAAU7V,EAAS6V,SAAWzjC,KAAKoB,OACjDwsB,EAAS/S,GAAKmoB,EAAMM,eAAezoB,EAAI+S,EAAS2V,gBAAkBvjC,KAAKoB,MAAQwsB,EAAS6V,UAAY,EACpG7V,EAAS9S,GAAKkoB,EAAMM,eAAexoB,EAAI8S,EAAS4V,gBAAkBxjC,KAAKoB,MAAQwsB,EAAS6V,UAAY,EAChG39B,KAAKsN,IAAI4vB,EAAMM,eAAezoB,EAAI+S,EAAS2V,eAAiB,IAAG3V,EAAS/S,EAAI,GAC5E/U,KAAKsN,IAAI4vB,EAAMM,eAAexoB,EAAI8S,EAAS4V,eAAiB,IAAG5V,EAAS9S,EAAI,GAChF8S,EAAS2V,cAAgBP,EAAMM,eAAezoB,EAC9C+S,EAAS4V,cAAgBR,EAAMM,eAAexoB,EAC9C8S,EAAS6V,SAAWzjC,KAAKoB,MACzBshC,EAAQK,YAAY7kC,MAAM6D,UAAY,eAAeihC,EAAMhgB,eAAeggB,EAAM/f,eAClF,CAoCA,SAAS4hB,IACP,MAAM5C,EAAOt9B,EAAOs9B,KAChBS,EAAQl8B,SAAW7B,EAAOkK,cAAgBlK,EAAO0J,OAAOxK,QAAQ6+B,EAAQl8B,WACtEk8B,EAAQ70B,UACV60B,EAAQ70B,QAAQ3P,MAAM6D,UAAY,+BAEhC2gC,EAAQK,cACVL,EAAQK,YAAY7kC,MAAM6D,UAAY,sBAExC2gC,EAAQl8B,QAAQY,UAAU+G,OAAO,GAAGxJ,EAAOQ,OAAO88B,KAAKG,oBACvDH,EAAK7C,MAAQ,EACbmD,EAAe,EACfG,EAAQl8B,aAAUnD,EAClBq/B,EAAQ70B,aAAUxK,EAClBq/B,EAAQK,iBAAc1/B,EACtBq/B,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAEtB,CACA,SAASkC,EAAO/7B,GACd,MAAMk5B,EAAOt9B,EAAOs9B,KACd98B,EAASR,EAAOQ,OAAO88B,KAC7B,IAAKS,EAAQl8B,QAAS,CAChBuC,GAAKA,EAAElM,SACT6lC,EAAQl8B,QAAUuC,EAAElM,OAAOiR,QAAQ,IAAInJ,EAAOQ,OAAO6I,6BAElD00B,EAAQl8B,UACP7B,EAAOQ,OAAOyL,SAAWjM,EAAOQ,OAAOyL,QAAQC,SAAWlM,EAAOiM,QACnE8xB,EAAQl8B,QAAUE,EAAgB/B,EAAO2L,SAAU,IAAI3L,EAAOQ,OAAOmT,oBAAoB,GAEzFoqB,EAAQl8B,QAAU7B,EAAO0J,OAAO1J,EAAOkK,cAG3C,IAAIhB,EAAU60B,EAAQl8B,QAAQ9I,cAAc,IAAIyH,EAAOg9B,kBACnDt0B,IACFA,EAAUA,EAAQlQ,iBAAiB,kDAAkD,IAEvF+kC,EAAQ70B,QAAUA,EAEhB60B,EAAQK,YADNl1B,EACoBrF,EAAek6B,EAAQ70B,QAAS,IAAI1I,EAAOg9B,kBAAkB,QAE7D9+B,CAE1B,CACA,IAAKq/B,EAAQ70B,UAAY60B,EAAQK,YAAa,OAM9C,IAAIgC,EACAC,EACAC,EACAC,EACA1gB,EACAC,EACA0gB,EACAC,EACAC,EACAC,EACAZ,EACAC,EACAY,EACAC,EACAC,EACAC,EACA7C,EACAC,EAtBAn+B,EAAOQ,OAAO+M,UAChBvN,EAAOU,UAAUnH,MAAMoI,SAAW,SAClC3B,EAAOU,UAAUnH,MAAMmqB,YAAc,QAEvCqa,EAAQl8B,QAAQY,UAAUC,IAAI,GAAGlC,EAAOi9B,yBAmBJ,IAAzBY,EAAMK,aAAaxoB,GAAqB9R,GACjDg8B,EAASh8B,EAAEwY,MACXyjB,EAASj8B,EAAEma,QAEX6hB,EAAS/B,EAAMK,aAAaxoB,EAC5BmqB,EAAShC,EAAMK,aAAavoB,GAE9B,MAAM6qB,EAA8B,iBAAN58B,EAAiBA,EAAI,KAC9B,IAAjBw5B,GAAsBoD,IACxBZ,OAAS1hC,EACT2hC,OAAS3hC,GAEX4+B,EAAK7C,MAAQuG,GAAkBjD,EAAQK,YAAYjpB,aAAa,qBAAuB3U,EAAO+8B,SAC9FK,EAAeoD,GAAkBjD,EAAQK,YAAYjpB,aAAa,qBAAuB3U,EAAO+8B,UAC5Fn5B,GAAwB,IAAjBw5B,GAAsBoD,GA8B/BR,EAAa,EACbC,EAAa,IA9BbvC,EAAaH,EAAQl8B,QAAQ2C,YAC7B25B,EAAcJ,EAAQl8B,QAAQoP,aAC9BqvB,EAAUz9B,EAAck7B,EAAQl8B,SAAS0B,KAAOvH,EAAOqH,QACvDk9B,EAAU19B,EAAck7B,EAAQl8B,SAASyB,IAAMtH,EAAOmH,QACtD0c,EAAQygB,EAAUpC,EAAa,EAAIkC,EACnCtgB,EAAQygB,EAAUpC,EAAc,EAAIkC,EACpCK,EAAa3C,EAAQ70B,QAAQ1E,YAC7Bm8B,EAAc5C,EAAQ70B,QAAQ+H,aAC9B8uB,EAAcW,EAAapD,EAAK7C,MAChCuF,EAAeW,EAAcrD,EAAK7C,MAClCmG,EAAgBz/B,KAAKE,IAAI68B,EAAa,EAAI6B,EAAc,EAAG,GAC3Dc,EAAgB1/B,KAAKE,IAAI88B,EAAc,EAAI6B,EAAe,EAAG,GAC7Dc,GAAiBF,EACjBG,GAAiBF,EACjBL,EAAa3gB,EAAQyd,EAAK7C,MAC1BgG,EAAa3gB,EAAQwd,EAAK7C,MACtB+F,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,GAEXL,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,IAMbC,GAAiC,IAAf1D,EAAK7C,QACzBsD,EAAQC,QAAU,EAClBD,EAAQE,QAAU,GAEpBF,EAAQK,YAAY7kC,MAAM4rB,mBAAqB,QAC/C4Y,EAAQK,YAAY7kC,MAAM6D,UAAY,eAAeojC,QAAiBC,SACtE1C,EAAQ70B,QAAQ3P,MAAM4rB,mBAAqB,QAC3C4Y,EAAQ70B,QAAQ3P,MAAM6D,UAAY,4BAA4BkgC,EAAK7C,QACrE,CACA,SAASwG,IACP,MAAM3D,EAAOt9B,EAAOs9B,KACd98B,EAASR,EAAOQ,OAAO88B,KAC7B,IAAKS,EAAQl8B,QAAS,CAChB7B,EAAOQ,OAAOyL,SAAWjM,EAAOQ,OAAOyL,QAAQC,SAAWlM,EAAOiM,QACnE8xB,EAAQl8B,QAAUE,EAAgB/B,EAAO2L,SAAU,IAAI3L,EAAOQ,OAAOmT,oBAAoB,GAEzFoqB,EAAQl8B,QAAU7B,EAAO0J,OAAO1J,EAAOkK,aAEzC,IAAIhB,EAAU60B,EAAQl8B,QAAQ9I,cAAc,IAAIyH,EAAOg9B,kBACnDt0B,IACFA,EAAUA,EAAQlQ,iBAAiB,kDAAkD,IAEvF+kC,EAAQ70B,QAAUA,EAEhB60B,EAAQK,YADNl1B,EACoBrF,EAAek6B,EAAQ70B,QAAS,IAAI1I,EAAOg9B,kBAAkB,QAE7D9+B,CAE1B,CACKq/B,EAAQ70B,SAAY60B,EAAQK,cAC7Bp+B,EAAOQ,OAAO+M,UAChBvN,EAAOU,UAAUnH,MAAMoI,SAAW,GAClC3B,EAAOU,UAAUnH,MAAMmqB,YAAc,IAEvC4Z,EAAK7C,MAAQ,EACbmD,EAAe,EACfG,EAAQK,YAAY7kC,MAAM4rB,mBAAqB,QAC/C4Y,EAAQK,YAAY7kC,MAAM6D,UAAY,qBACtC2gC,EAAQ70B,QAAQ3P,MAAM4rB,mBAAqB,QAC3C4Y,EAAQ70B,QAAQ3P,MAAM6D,UAAY,8BAClC2gC,EAAQl8B,QAAQY,UAAU+G,OAAO,GAAGhJ,EAAOi9B,oBAC3CM,EAAQl8B,aAAUnD,EAClBq/B,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EACpB,CAGA,SAASiD,EAAW98B,GAClB,MAAMk5B,EAAOt9B,EAAOs9B,KAChBA,EAAK7C,OAAwB,IAAf6C,EAAK7C,MAErBwG,IAGAd,EAAO/7B,EAEX,CACA,SAAS+8B,IASP,MAAO,CACL7E,kBATsBt8B,EAAOQ,OAAOikB,kBAAmB,CACvDX,SAAS,EACTH,SAAS,GAQTyd,2BANgCphC,EAAOQ,OAAOikB,kBAAmB,CACjEX,SAAS,EACTH,SAAS,GAMb,CAGA,SAAS6C,IACP,MAAM8W,EAAOt9B,EAAOs9B,KACpB,GAAIA,EAAKpxB,QAAS,OAClBoxB,EAAKpxB,SAAU,EACf,MAAMowB,gBACJA,EAAe8E,0BACfA,GACED,IAGJnhC,EAAOU,UAAUhI,iBAAiB,cAAe2mC,EAAgB/C,GACjEt8B,EAAOU,UAAUhI,iBAAiB,cAAe8mC,EAAiB4B,GAClE,CAAC,YAAa,gBAAiB,cAAc/oC,SAAQ2wB,IACnDhpB,EAAOU,UAAUhI,iBAAiBswB,EAAW6W,EAAcvD,EAAgB,IAI7Et8B,EAAOU,UAAUhI,iBAAiB,cAAe4mB,EAAa8hB,EAChE,CACA,SAAS7a,IACP,MAAM+W,EAAOt9B,EAAOs9B,KACpB,IAAKA,EAAKpxB,QAAS,OACnBoxB,EAAKpxB,SAAU,EACf,MAAMowB,gBACJA,EAAe8E,0BACfA,GACED,IAGJnhC,EAAOU,UAAU/H,oBAAoB,cAAe0mC,EAAgB/C,GACpEt8B,EAAOU,UAAU/H,oBAAoB,cAAe6mC,EAAiB4B,GACrE,CAAC,YAAa,gBAAiB,cAAc/oC,SAAQ2wB,IACnDhpB,EAAOU,UAAU/H,oBAAoBqwB,EAAW6W,EAAcvD,EAAgB,IAIhFt8B,EAAOU,UAAU/H,oBAAoB,cAAe2mB,EAAa8hB,EACnE,CAteAppC,OAAOqpC,eAAerhC,EAAOs9B,KAAM,QAAS,CAC1CgE,IAAG,IACM7G,EAET,GAAA8G,CAAIja,GACF,GAAImT,IAAUnT,EAAO,CACnB,MAAMpe,EAAU60B,EAAQ70B,QAClBrH,EAAUk8B,EAAQl8B,QACxB8G,EAAK,aAAc2e,EAAOpe,EAASrH,EACrC,CACA44B,EAAQnT,CACV,IA4dFlgB,EAAG,QAAQ,KACLpH,EAAOQ,OAAO88B,KAAKpxB,SACrBsa,GACF,IAEFpf,EAAG,WAAW,KACZmf,GAAS,IAEXnf,EAAG,cAAc,CAACimB,EAAIjpB,KACfpE,EAAOs9B,KAAKpxB,SApWnB,SAAsB9H,GACpB,MAAMmB,EAASvF,EAAOuF,OACtB,IAAKw4B,EAAQ70B,QAAS,OACtB,GAAIm1B,EAAMjhB,UAAW,OACjB7X,EAAOE,SAAWrB,EAAE8b,YAAY9b,EAAEgY,iBACtCiiB,EAAMjhB,WAAY,EAClB,MAAMxV,EAAQk2B,EAAQvlC,OAAS,EAAIulC,EAAQ,GAAK15B,EAChDi6B,EAAMK,aAAaxoB,EAAItO,EAAMgV,MAC7ByhB,EAAMK,aAAavoB,EAAIvO,EAAM2W,KAC/B,CA4VElC,CAAajY,EAAE,IAEjBgD,EAAG,YAAY,CAACimB,EAAIjpB,KACbpE,EAAOs9B,KAAKpxB,SAlRnB,WACE,MAAMoxB,EAAOt9B,EAAOs9B,KACpB,IAAKS,EAAQ70B,QAAS,OACtB,IAAKm1B,EAAMjhB,YAAcihB,EAAMhhB,QAG7B,OAFAghB,EAAMjhB,WAAY,OAClBihB,EAAMhhB,SAAU,GAGlBghB,EAAMjhB,WAAY,EAClBihB,EAAMhhB,SAAU,EAChB,IAAImkB,EAAoB,IACpBC,EAAoB,IACxB,MAAMC,EAAoBzY,EAAS/S,EAAIsrB,EACjCG,EAAetD,EAAMhgB,SAAWqjB,EAChCE,EAAoB3Y,EAAS9S,EAAIsrB,EACjCI,EAAexD,EAAM/f,SAAWsjB,EAGnB,IAAf3Y,EAAS/S,IAASsrB,EAAoBrgC,KAAKsN,KAAKkzB,EAAetD,EAAMhgB,UAAY4K,EAAS/S,IAC3E,IAAf+S,EAAS9S,IAASsrB,EAAoBtgC,KAAKsN,KAAKozB,EAAexD,EAAM/f,UAAY2K,EAAS9S,IAC9F,MAAM2rB,EAAmB3gC,KAAKC,IAAIogC,EAAmBC,GACrDpD,EAAMhgB,SAAWsjB,EACjBtD,EAAM/f,SAAWujB,EAEjB,MAAM9B,EAAc1B,EAAM14B,MAAQ23B,EAAK7C,MACjCuF,EAAe3B,EAAMx4B,OAASy3B,EAAK7C,MACzC4D,EAAMC,KAAOn9B,KAAKE,IAAI08B,EAAQG,WAAa,EAAI6B,EAAc,EAAG,GAChE1B,EAAMG,MAAQH,EAAMC,KACpBD,EAAME,KAAOp9B,KAAKE,IAAI08B,EAAQI,YAAc,EAAI6B,EAAe,EAAG,GAClE3B,EAAMI,MAAQJ,EAAME,KACpBF,EAAMhgB,SAAWld,KAAKC,IAAID,KAAKE,IAAIg9B,EAAMhgB,SAAUggB,EAAMG,MAAOH,EAAMC,MACtED,EAAM/f,SAAWnd,KAAKC,IAAID,KAAKE,IAAIg9B,EAAM/f,SAAU+f,EAAMI,MAAOJ,EAAME,MACtER,EAAQK,YAAY7kC,MAAM4rB,mBAAqB,GAAG2c,MAClD/D,EAAQK,YAAY7kC,MAAM6D,UAAY,eAAeihC,EAAMhgB,eAAeggB,EAAM/f,eAClF,CAiPEkD,EAAY,IAEdpa,EAAG,aAAa,CAACimB,EAAIjpB,MACdpE,EAAOyW,WAAazW,EAAOQ,OAAO88B,KAAKpxB,SAAWlM,EAAOs9B,KAAKpxB,SAAWlM,EAAOQ,OAAO88B,KAAK7F,QAC/FyJ,EAAW98B,EACb,IAEFgD,EAAG,iBAAiB,KACdpH,EAAOs9B,KAAKpxB,SAAWlM,EAAOQ,OAAO88B,KAAKpxB,SAC5Cg0B,GACF,IAEF94B,EAAG,eAAe,KACZpH,EAAOs9B,KAAKpxB,SAAWlM,EAAOQ,OAAO88B,KAAKpxB,SAAWlM,EAAOQ,OAAO+M,SACrE2yB,GACF,IAEFloC,OAAOsT,OAAOtL,EAAOs9B,KAAM,CACzB9W,SACAD,UACAwb,GAAI5B,EACJ6B,IAAKf,EACLxJ,OAAQyJ,GAEZ,EAGA,SAAoBnhC,GAClB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EAYJ,SAASkiC,EAAa/rB,EAAGC,GACvB,MAAM+rB,EAAe,WACnB,IAAIC,EACAC,EACAC,EACJ,MAAO,CAACC,EAAOvpB,KAGb,IAFAqpB,GAAY,EACZD,EAAWG,EAAM/pC,OACV4pC,EAAWC,EAAW,GAC3BC,EAAQF,EAAWC,GAAY,EAC3BE,EAAMD,IAAUtpB,EAClBqpB,EAAWC,EAEXF,EAAWE,EAGf,OAAOF,CAAQ,CAEnB,CAjBqB,GAwBrB,IAAII,EACAC,EAYJ,OAnBAvnC,KAAKib,EAAIA,EACTjb,KAAKkb,EAAIA,EACTlb,KAAKme,UAAYlD,EAAE3d,OAAS,EAM5B0C,KAAKwnC,YAAc,SAAqBvD,GACtC,OAAKA,GAGLsD,EAAKN,EAAajnC,KAAKib,EAAGgpB,GAC1BqD,EAAKC,EAAK,GAIFtD,EAAKjkC,KAAKib,EAAEqsB,KAAQtnC,KAAKkb,EAAEqsB,GAAMvnC,KAAKkb,EAAEosB,KAAQtnC,KAAKib,EAAEssB,GAAMvnC,KAAKib,EAAEqsB,IAAOtnC,KAAKkb,EAAEosB,IAR1E,CASlB,EACOtnC,IACT,CA8EA,SAASynC,IACF1iC,EAAOyb,WAAWC,SACnB1b,EAAOyb,WAAWknB,SACpB3iC,EAAOyb,WAAWknB,YAASjkC,SACpBsB,EAAOyb,WAAWknB,OAE7B,CAtIA9Z,EAAa,CACXpN,WAAY,CACVC,aAAShd,EACTkkC,SAAS,EACTC,GAAI,WAIR7iC,EAAOyb,WAAa,CAClBC,aAAShd,GA8HX0I,EAAG,cAAc,KACf,GAAsB,oBAAXpL,SAEiC,iBAArCgE,EAAOQ,OAAOib,WAAWC,SAAwB1b,EAAOQ,OAAOib,WAAWC,mBAAmB3c,aAFpG,CAGE,MAAM+jC,EAAiBvoC,SAASxB,cAAciH,EAAOQ,OAAOib,WAAWC,SACvE,GAAIonB,GAAkBA,EAAe9iC,OACnCA,EAAOyb,WAAWC,QAAUonB,EAAe9iC,YACtC,GAAI8iC,EAAgB,CACzB,MAAMC,EAAqB3+B,IACzBpE,EAAOyb,WAAWC,QAAUtX,EAAE2wB,OAAO,GACrC/0B,EAAO8K,SACPg4B,EAAenqC,oBAAoB,OAAQoqC,EAAmB,EAEhED,EAAepqC,iBAAiB,OAAQqqC,EAC1C,CAEF,MACA/iC,EAAOyb,WAAWC,QAAU1b,EAAOQ,OAAOib,WAAWC,OAAO,IAE9DtU,EAAG,UAAU,KACXs7B,GAAc,IAEhBt7B,EAAG,UAAU,KACXs7B,GAAc,IAEhBt7B,EAAG,kBAAkB,KACnBs7B,GAAc,IAEhBt7B,EAAG,gBAAgB,CAACimB,EAAIjtB,EAAW4V,KAC5BhW,EAAOyb,WAAWC,UAAW1b,EAAOyb,WAAWC,QAAQhU,WAC5D1H,EAAOyb,WAAW1F,aAAa3V,EAAW4V,EAAa,IAEzD5O,EAAG,iBAAiB,CAACimB,EAAI9sB,EAAUyV,KAC5BhW,EAAOyb,WAAWC,UAAW1b,EAAOyb,WAAWC,QAAQhU,WAC5D1H,EAAOyb,WAAW5K,cAActQ,EAAUyV,EAAa,IAEzDhe,OAAOsT,OAAOtL,EAAOyb,WAAY,CAC/B1F,aAtHF,SAAsBitB,EAAIhtB,GACxB,MAAMitB,EAAajjC,EAAOyb,WAAWC,QACrC,IAAIrJ,EACA6wB,EACJ,MAAM3a,EAASvoB,EAAOjI,YACtB,SAASorC,EAAuB7mC,GAC9B,GAAIA,EAAEoL,UAAW,OAMjB,MAAMtH,EAAYJ,EAAO6L,cAAgB7L,EAAOI,UAAYJ,EAAOI,UAC/B,UAAhCJ,EAAOQ,OAAOib,WAAWonB,MAhBjC,SAAgCvmC,GAC9B0D,EAAOyb,WAAWknB,OAAS3iC,EAAOQ,OAAOoK,KAAO,IAAIq3B,EAAajiC,EAAOsM,WAAYhQ,EAAEgQ,YAAc,IAAI21B,EAAajiC,EAAOqM,SAAU/P,EAAE+P,SAC1I,CAeM+2B,CAAuB9mC,GAGvB4mC,GAAuBljC,EAAOyb,WAAWknB,OAAOF,aAAariC,IAE1D8iC,GAAuD,cAAhCljC,EAAOQ,OAAOib,WAAWonB,KACnDxwB,GAAc/V,EAAEiW,eAAiBjW,EAAEwV,iBAAmB9R,EAAOuS,eAAiBvS,EAAO8R,iBACjF/K,OAAOsE,MAAMgH,IAAgBtL,OAAOs8B,SAAShxB,KAC/CA,EAAa,GAEf6wB,GAAuB9iC,EAAYJ,EAAO8R,gBAAkBO,EAAa/V,EAAEwV,gBAEzE9R,EAAOQ,OAAOib,WAAWmnB,UAC3BM,EAAsB5mC,EAAEiW,eAAiB2wB,GAE3C5mC,EAAE8V,eAAe8wB,GACjB5mC,EAAEyZ,aAAamtB,EAAqBljC,GACpC1D,EAAEiY,oBACFjY,EAAEgX,qBACJ,CACA,GAAI3Q,MAAMC,QAAQqgC,GAChB,IAAK,IAAIrkC,EAAI,EAAGA,EAAIqkC,EAAW1qC,OAAQqG,GAAK,EACtCqkC,EAAWrkC,KAAOoX,GAAgBitB,EAAWrkC,aAAc2pB,GAC7D4a,EAAuBF,EAAWrkC,SAG7BqkC,aAAsB1a,GAAUvS,IAAiBitB,GAC1DE,EAAuBF,EAE3B,EA4EEpyB,cA3EF,SAAuBtQ,EAAUyV,GAC/B,MAAMuS,EAASvoB,EAAOjI,YAChBkrC,EAAajjC,EAAOyb,WAAWC,QACrC,IAAI9c,EACJ,SAAS0kC,EAAwBhnC,GAC3BA,EAAEoL,YACNpL,EAAEuU,cAActQ,EAAUP,GACT,IAAbO,IACFjE,EAAEmb,kBACEnb,EAAEkE,OAAO6S,YACX9W,GAAS,KACPD,EAAEoU,kBAAkB,IAGxBxM,EAAqB5H,EAAEoE,WAAW,KAC3BuiC,GACL3mC,EAAEob,eAAe,KAGvB,CACA,GAAI/U,MAAMC,QAAQqgC,GAChB,IAAKrkC,EAAI,EAAGA,EAAIqkC,EAAW1qC,OAAQqG,GAAK,EAClCqkC,EAAWrkC,KAAOoX,GAAgBitB,EAAWrkC,aAAc2pB,GAC7D+a,EAAwBL,EAAWrkC,SAG9BqkC,aAAsB1a,GAAUvS,IAAiBitB,GAC1DK,EAAwBL,EAE5B,GAgDF,EAEA,SAAcljC,GACZ,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACX0a,KAAM,CACJr3B,SAAS,EACTs3B,kBAAmB,sBACnBC,iBAAkB,iBAClBC,iBAAkB,aAClBC,kBAAmB,0BACnBC,iBAAkB,yBAClBC,wBAAyB,wBACzBC,kBAAmB,+BACnBC,iBAAkB,KAClBC,gCAAiC,KACjCC,2BAA4B,KAC5BC,UAAW,QACXroC,GAAI,QAGRmE,EAAOujC,KAAO,CACZY,SAAS,GAEX,IAAIC,EAAa,KACjB,SAASC,EAAOC,GACd,MAAMC,EAAeH,EACO,IAAxBG,EAAahsC,SACjBgsC,EAAatY,UAAY,GACzBsY,EAAatY,UAAYqY,EAC3B,CACA,MAAM3N,EAAoBh6B,IAAOgG,MAAMC,QAAQjG,GAAMA,EAAK,CAACA,IAAKN,QAAO+H,KAAOA,IAQ9E,SAASogC,EAAgB7nC,IACvBA,EAAKg6B,EAAkBh6B,IACpBtE,SAAQ2+B,IACTA,EAAMx9B,aAAa,WAAY,IAAI,GAEvC,CACA,SAASirC,EAAmB9nC,IAC1BA,EAAKg6B,EAAkBh6B,IACpBtE,SAAQ2+B,IACTA,EAAMx9B,aAAa,WAAY,KAAK,GAExC,CACA,SAASkrC,EAAU/nC,EAAIgoC,IACrBhoC,EAAKg6B,EAAkBh6B,IACpBtE,SAAQ2+B,IACTA,EAAMx9B,aAAa,OAAQmrC,EAAK,GAEpC,CACA,SAASC,EAAqBjoC,EAAIkoC,IAChCloC,EAAKg6B,EAAkBh6B,IACpBtE,SAAQ2+B,IACTA,EAAMx9B,aAAa,uBAAwBqrC,EAAY,GAE3D,CAOA,SAASC,EAAWnoC,EAAI8O,IACtB9O,EAAKg6B,EAAkBh6B,IACpBtE,SAAQ2+B,IACTA,EAAMx9B,aAAa,aAAciS,EAAM,GAE3C,CAaA,SAASs5B,EAAUpoC,IACjBA,EAAKg6B,EAAkBh6B,IACpBtE,SAAQ2+B,IACTA,EAAMx9B,aAAa,iBAAiB,EAAK,GAE7C,CACA,SAASwrC,EAASroC,IAChBA,EAAKg6B,EAAkBh6B,IACpBtE,SAAQ2+B,IACTA,EAAMx9B,aAAa,iBAAiB,EAAM,GAE9C,CACA,SAASyrC,EAAkB7gC,GACzB,GAAkB,KAAdA,EAAE0tB,SAAgC,KAAd1tB,EAAE0tB,QAAgB,OAC1C,MAAMtxB,EAASR,EAAOQ,OAAO+iC,KACvBvmB,EAAW5Y,EAAElM,OACf8H,EAAOs3B,YAAct3B,EAAOs3B,WAAW36B,KAAOqgB,IAAahd,EAAOs3B,WAAW36B,IAAMqD,EAAOs3B,WAAW36B,GAAG6T,SAASpM,EAAElM,WAChHkM,EAAElM,OAAOgK,QAAQ2pB,GAAkB7rB,EAAOQ,OAAO82B,WAAWiB,gBAE/Dv4B,EAAOuiB,YAAcviB,EAAOuiB,WAAWC,QAAUxF,IAAahd,EAAOuiB,WAAWC,SAC5ExiB,EAAOyS,QAAUzS,EAAOQ,OAAOoK,MACnC5K,EAAOuY,YAELvY,EAAOyS,MACT4xB,EAAO7jC,EAAOojC,kBAEdS,EAAO7jC,EAAOkjC,mBAGd1jC,EAAOuiB,YAAcviB,EAAOuiB,WAAWE,QAAUzF,IAAahd,EAAOuiB,WAAWE,SAC5EziB,EAAOwS,cAAgBxS,EAAOQ,OAAOoK,MACzC5K,EAAO6Y,YAEL7Y,EAAOwS,YACT6xB,EAAO7jC,EAAOmjC,mBAEdU,EAAO7jC,EAAOijC,mBAGdzjC,EAAOs3B,YAActa,EAAS9a,QAAQ2pB,GAAkB7rB,EAAOQ,OAAO82B,WAAWiB,eACnFvb,EAASkoB,QAEb,CA0BA,SAASC,IACP,OAAOnlC,EAAOs3B,YAAct3B,EAAOs3B,WAAW4B,SAAWl5B,EAAOs3B,WAAW4B,QAAQ3gC,MACrF,CACA,SAAS6sC,IACP,OAAOD,KAAmBnlC,EAAOQ,OAAO82B,WAAWC,SACrD,CAmBA,MAAM8N,EAAY,CAAC1oC,EAAI2oC,EAAWhB,KAChCE,EAAgB7nC,GACG,WAAfA,EAAGs6B,UACLyN,EAAU/nC,EAAI,UACdA,EAAGjE,iBAAiB,UAAWusC,IAEjCH,EAAWnoC,EAAI2nC,GA1HjB,SAAuB3nC,EAAI4oC,IACzB5oC,EAAKg6B,EAAkBh6B,IACpBtE,SAAQ2+B,IACTA,EAAMx9B,aAAa,gBAAiB+rC,EAAS,GAEjD,CAsHEC,CAAc7oC,EAAI2oC,EAAU,EAExBG,EAAoB,KACxBzlC,EAAOujC,KAAKY,SAAU,CAAI,EAEtBuB,EAAkB,KACtBhqC,uBAAsB,KACpBA,uBAAsB,KACfsE,EAAO0H,YACV1H,EAAOujC,KAAKY,SAAU,EACxB,GACA,GACF,EAEEwB,EAAcvhC,IAClB,GAAIpE,EAAOujC,KAAKY,QAAS,OACzB,MAAMtiC,EAAUuC,EAAElM,OAAOiR,QAAQ,IAAInJ,EAAOQ,OAAO6I,4BACnD,IAAKxH,IAAY7B,EAAO0J,OAAO/C,SAAS9E,GAAU,OAClD,MAAM+jC,EAAW5lC,EAAO0J,OAAOxK,QAAQ2C,KAAa7B,EAAOkK,YACrD27B,EAAY7lC,EAAOQ,OAAO2P,qBAAuBnQ,EAAOgR,eAAiBhR,EAAOgR,cAAcrK,SAAS9E,GACzG+jC,GAAYC,GACZzhC,EAAE0hC,oBAAsB1hC,EAAE0hC,mBAAmBC,mBAC7C/lC,EAAOkL,eACTlL,EAAOrD,GAAGyG,WAAa,EAEvBpD,EAAOrD,GAAGuG,UAAY,EAExBlD,EAAOkX,QAAQlX,EAAO0J,OAAOxK,QAAQ2C,GAAU,GAAE,EAE7C6L,EAAa,KACjB,MAAMlN,EAASR,EAAOQ,OAAO+iC,KACzB/iC,EAAOyjC,4BACTW,EAAqB5kC,EAAO0J,OAAQlJ,EAAOyjC,4BAEzCzjC,EAAO0jC,WACTQ,EAAU1kC,EAAO0J,OAAQlJ,EAAO0jC,WAElC,MAAM93B,EAAepM,EAAO0J,OAAOnR,OAC/BiI,EAAOsjC,mBACT9jC,EAAO0J,OAAOrR,SAAQ,CAACwJ,EAAS2G,KAC9B,MAAM6G,EAAarP,EAAOQ,OAAOoK,KAAOQ,SAASvJ,EAAQsT,aAAa,2BAA4B,IAAM3M,EAExGs8B,EAAWjjC,EADcrB,EAAOsjC,kBAAkBtmC,QAAQ,gBAAiB6R,EAAa,GAAG7R,QAAQ,uBAAwB4O,GACtF,GAEzC,EAEI8X,EAAO,KACX,MAAM1jB,EAASR,EAAOQ,OAAO+iC,KAC7BvjC,EAAOrD,GAAGwd,OAAOiqB,GAGjB,MAAMrd,EAAc/mB,EAAOrD,GACvB6D,EAAOwjC,iCACTY,EAAqB7d,EAAavmB,EAAOwjC,iCAEvCxjC,EAAOujC,kBACTe,EAAW/d,EAAavmB,EAAOujC,kBAIjC,MAAMrjC,EAAYV,EAAOU,UACnB4kC,EAAY9kC,EAAO3E,IAAM6E,EAAUyU,aAAa,OAAS,kBAvNxC7Q,EAuN0E,QAtNpF,IAATA,IACFA,EAAO,IAGF,IAAI0hC,OAAO1hC,GAAM9G,QAAQ,MADb,IAAM2D,KAAK8kC,MAAM,GAAK9kC,KAAK+kC,UAAUpoC,SAAS,QAJnE,IAAyBwG,EAwNvB,MAAM6hC,EAAOnmC,EAAOQ,OAAOqiB,UAAY7iB,EAAOQ,OAAOqiB,SAAS3W,QAAU,MAAQ,SA7KlF,IAAqBrQ,IA8KAypC,EA7Kd3O,EA6KGj2B,GA5KLrI,SAAQ2+B,IACTA,EAAMx9B,aAAa,KAAMqC,EAAG,IAGhC,SAAmBc,EAAIwpC,IACrBxpC,EAAKg6B,EAAkBh6B,IACpBtE,SAAQ2+B,IACTA,EAAMx9B,aAAa,YAAa2sC,EAAK,GAEzC,CAoKEC,CAAU1lC,EAAWylC,GAGrBz4B,IAGA,IAAI8U,OACFA,EAAMC,OACNA,GACEziB,EAAOuiB,WAAaviB,EAAOuiB,WAAa,CAAC,EAW7C,GAVAC,EAASmU,EAAkBnU,GAC3BC,EAASkU,EAAkBlU,GACvBD,GACFA,EAAOnqB,SAAQsE,GAAM0oC,EAAU1oC,EAAI2oC,EAAW9kC,EAAOkjC,oBAEnDjhB,GACFA,EAAOpqB,SAAQsE,GAAM0oC,EAAU1oC,EAAI2oC,EAAW9kC,EAAOijC,oBAInD2B,IAA0B,CACPzO,EAAkB32B,EAAOs3B,WAAW36B,IAC5CtE,SAAQsE,IACnBA,EAAGjE,iBAAiB,UAAWusC,EAAkB,GAErD,CAGAjlC,EAAOrD,GAAGjE,iBAAiB,QAASitC,GAAa,GACjD3lC,EAAOrD,GAAGjE,iBAAiB,cAAe+sC,GAAmB,GAC7DzlC,EAAOrD,GAAGjE,iBAAiB,YAAagtC,GAAiB,EAAK,EA8BhEt+B,EAAG,cAAc,KACfg9B,EAAahrC,EAAc,OAAQ4G,EAAOQ,OAAO+iC,KAAKC,mBACtDY,EAAW5qC,aAAa,YAAa,aACrC4qC,EAAW5qC,aAAa,cAAe,OAAO,IAEhD4N,EAAG,aAAa,KACTpH,EAAOQ,OAAO+iC,KAAKr3B,SACxBgY,GAAM,IAER9c,EAAG,kEAAkE,KAC9DpH,EAAOQ,OAAO+iC,KAAKr3B,SACxBwB,GAAY,IAEdtG,EAAG,yCAAyC,KACrCpH,EAAOQ,OAAO+iC,KAAKr3B,SAlM1B,WACE,GAAIlM,EAAOQ,OAAOoK,MAAQ5K,EAAOQ,OAAOmK,SAAW3K,EAAOuiB,WAAY,OACtE,MAAMC,OACJA,EAAMC,OACNA,GACEziB,EAAOuiB,WACPE,IACEziB,EAAOwS,aACTuyB,EAAUtiB,GACVgiB,EAAmBhiB,KAEnBuiB,EAASviB,GACT+hB,EAAgB/hB,KAGhBD,IACExiB,EAAOyS,OACTsyB,EAAUviB,GACViiB,EAAmBjiB,KAEnBwiB,EAASxiB,GACTgiB,EAAgBhiB,IAGtB,CA2KE6jB,EAAkB,IAEpBj/B,EAAG,oBAAoB,KAChBpH,EAAOQ,OAAO+iC,KAAKr3B,SAvK1B,WACE,MAAM1L,EAASR,EAAOQ,OAAO+iC,KACxB4B,KACLnlC,EAAOs3B,WAAW4B,QAAQ7gC,SAAQihC,IAC5Bt5B,EAAOQ,OAAO82B,WAAWC,YAC3BiN,EAAgBlL,GACXt5B,EAAOQ,OAAO82B,WAAWO,eAC5B6M,EAAUpL,EAAU,UACpBwL,EAAWxL,EAAU94B,EAAOqjC,wBAAwBrmC,QAAQ,gBAAiBkG,EAAa41B,GAAY,MAGtGA,EAASp3B,QAAQ2pB,GAAkB7rB,EAAOQ,OAAO82B,WAAWkB,oBAC9Dc,EAAS9/B,aAAa,eAAgB,QAEtC8/B,EAAS3vB,gBAAgB,eAC3B,GAEJ,CAuJE28B,EAAkB,IAEpBl/B,EAAG,WAAW,KACPpH,EAAOQ,OAAO+iC,KAAKr3B,SAlD1B,WACMk4B,GAAYA,EAAW56B,SAC3B,IAAIgZ,OACFA,EAAMC,OACNA,GACEziB,EAAOuiB,WAAaviB,EAAOuiB,WAAa,CAAC,EAC7CC,EAASmU,EAAkBnU,GAC3BC,EAASkU,EAAkBlU,GACvBD,GACFA,EAAOnqB,SAAQsE,GAAMA,EAAGhE,oBAAoB,UAAWssC,KAErDxiB,GACFA,EAAOpqB,SAAQsE,GAAMA,EAAGhE,oBAAoB,UAAWssC,KAIrDG,KACmBzO,EAAkB32B,EAAOs3B,WAAW36B,IAC5CtE,SAAQsE,IACnBA,EAAGhE,oBAAoB,UAAWssC,EAAkB,IAKxDjlC,EAAOrD,GAAGhE,oBAAoB,QAASgtC,GAAa,GACpD3lC,EAAOrD,GAAGhE,oBAAoB,cAAe8sC,GAAmB,GAChEzlC,EAAOrD,GAAGhE,oBAAoB,YAAa+sC,GAAiB,EAC9D,CAwBE1a,EAAS,GAEb,EAEA,SAAiBjrB,GACf,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACXluB,QAAS,CACPuR,SAAS,EACTq6B,KAAM,GACN3rC,cAAc,EACdtC,IAAK,SACLkuC,WAAW,KAGf,IAAIpxB,GAAc,EACdqxB,EAAQ,CAAC,EACb,MAAMC,EAAUtkC,GACPA,EAAKtE,WAAWN,QAAQ,OAAQ,KAAKA,QAAQ,WAAY,IAAIA,QAAQ,OAAQ,KAAKA,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAEvHmpC,EAAgBC,IACpB,MAAM5qC,EAASF,IACf,IAAIlC,EAEFA,EADEgtC,EACS,IAAIC,IAAID,GAER5qC,EAAOpC,SAEpB,MAAMktC,EAAYltC,EAASM,SAASoE,MAAM,GAAGlC,MAAM,KAAKC,QAAO0qC,GAAiB,KAATA,IACjEvN,EAAQsN,EAAUvuC,OAGxB,MAAO,CACLD,IAHUwuC,EAAUtN,EAAQ,GAI5BlS,MAHYwf,EAAUtN,EAAQ,GAI/B,EAEGwN,EAAa,CAAC1uC,EAAKkQ,KACvB,MAAMxM,EAASF,IACf,IAAKsZ,IAAgBpV,EAAOQ,OAAO7F,QAAQuR,QAAS,OACpD,IAAItS,EAEFA,EADEoG,EAAOQ,OAAO8jB,IACL,IAAIuiB,IAAI7mC,EAAOQ,OAAO8jB,KAEtBtoB,EAAOpC,SAEpB,MAAMkU,EAAQ9N,EAAO0J,OAAOlB,GAC5B,IAAI8e,EAAQof,EAAQ54B,EAAMqH,aAAa,iBACvC,GAAInV,EAAOQ,OAAO7F,QAAQ4rC,KAAKhuC,OAAS,EAAG,CACzC,IAAIguC,EAAOvmC,EAAOQ,OAAO7F,QAAQ4rC,KACH,MAA1BA,EAAKA,EAAKhuC,OAAS,KAAYguC,EAAOA,EAAKjoC,MAAM,EAAGioC,EAAKhuC,OAAS,IACtE+uB,EAAQ,GAAGif,KAAQjuC,EAAM,GAAGA,KAAS,KAAKgvB,GAC5C,MAAY1tB,EAASM,SAASyM,SAASrO,KACrCgvB,EAAQ,GAAGhvB,EAAM,GAAGA,KAAS,KAAKgvB,KAEhCtnB,EAAOQ,OAAO7F,QAAQ6rC,YACxBlf,GAAS1tB,EAASQ,QAEpB,MAAM6sC,EAAejrC,EAAOrB,QAAQusC,MAChCD,GAAgBA,EAAa3f,QAAUA,IAGvCtnB,EAAOQ,OAAO7F,QAAQC,aACxBoB,EAAOrB,QAAQC,aAAa,CAC1B0sB,SACC,KAAMA,GAETtrB,EAAOrB,QAAQE,UAAU,CACvBysB,SACC,KAAMA,GACX,EAEI6f,EAAgB,CAAC1mC,EAAO6mB,EAAOhR,KACnC,GAAIgR,EACF,IAAK,IAAI1oB,EAAI,EAAGrG,EAASyH,EAAO0J,OAAOnR,OAAQqG,EAAIrG,EAAQqG,GAAK,EAAG,CACjE,MAAMkP,EAAQ9N,EAAO0J,OAAO9K,GAE5B,GADqB8nC,EAAQ54B,EAAMqH,aAAa,mBAC3BmS,EAAO,CAC1B,MAAM9e,EAAQxI,EAAO4Z,cAAc9L,GACnC9N,EAAOkX,QAAQ1O,EAAO/H,EAAO6V,EAC/B,CACF,MAEAtW,EAAOkX,QAAQ,EAAGzW,EAAO6V,EAC3B,EAEI8wB,EAAqB,KACzBX,EAAQE,EAAc3mC,EAAOQ,OAAO8jB,KACpC6iB,EAAcnnC,EAAOQ,OAAOC,MAAOgmC,EAAMnf,OAAO,EAAM,EA6BxDlgB,EAAG,QAAQ,KACLpH,EAAOQ,OAAO7F,QAAQuR,SA5Bf,MACX,MAAMlQ,EAASF,IACf,GAAKkE,EAAOQ,OAAO7F,QAAnB,CACA,IAAKqB,EAAOrB,UAAYqB,EAAOrB,QAAQE,UAGrC,OAFAmF,EAAOQ,OAAO7F,QAAQuR,SAAU,OAChClM,EAAOQ,OAAO6mC,eAAen7B,SAAU,GAGzCkJ,GAAc,EACdqxB,EAAQE,EAAc3mC,EAAOQ,OAAO8jB,KAC/BmiB,EAAMnuC,KAAQmuC,EAAMnf,OAMzB6f,EAAc,EAAGV,EAAMnf,MAAOtnB,EAAOQ,OAAO6U,oBACvCrV,EAAOQ,OAAO7F,QAAQC,cACzBoB,EAAOtD,iBAAiB,WAAY0uC,IAP/BpnC,EAAOQ,OAAO7F,QAAQC,cACzBoB,EAAOtD,iBAAiB,WAAY0uC,EAVN,CAiBlC,EAUEljB,EACF,IAEF9c,EAAG,WAAW,KACRpH,EAAOQ,OAAO7F,QAAQuR,SAZZ,MACd,MAAMlQ,EAASF,IACVkE,EAAOQ,OAAO7F,QAAQC,cACzBoB,EAAOrD,oBAAoB,WAAYyuC,EACzC,EASEpc,EACF,IAEF5jB,EAAG,4CAA4C,KACzCgO,GACF4xB,EAAWhnC,EAAOQ,OAAO7F,QAAQrC,IAAK0H,EAAOkK,YAC/C,IAEF9C,EAAG,eAAe,KACZgO,GAAepV,EAAOQ,OAAO+M,SAC/By5B,EAAWhnC,EAAOQ,OAAO7F,QAAQrC,IAAK0H,EAAOkK,YAC/C,GAEJ,EAEA,SAAwBnK,GACtB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYlgB,KACZA,EAAIvB,GACJA,GACErH,EACAqV,GAAc,EAClB,MAAM7a,EAAWF,IACX2B,EAASF,IACf+sB,EAAa,CACXwe,eAAgB,CACdn7B,SAAS,EACTtR,cAAc,EACd0sC,YAAY,EACZ,aAAA1tB,CAAcyT,EAAIxzB,GAChB,GAAImG,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAAS,CACnD,MAAMq7B,EAAgBvnC,EAAO0J,OAAOrN,QAAOwF,GAAWA,EAAQsT,aAAa,eAAiBtb,IAAM,GAClG,IAAK0tC,EAAe,OAAO,EAE3B,OADcn8B,SAASm8B,EAAcpyB,aAAa,2BAA4B,GAEhF,CACA,OAAOnV,EAAO4Z,cAAc7X,EAAgB/B,EAAO2L,SAAU,IAAI3L,EAAOQ,OAAO6I,yBAAyBxP,gCAAmCA,OAAU,GACvJ,KAGJ,MAAM2tC,EAAe,KACnB7+B,EAAK,cACL,MAAM8+B,EAAUltC,EAASX,SAASC,KAAK2D,QAAQ,IAAK,IAC9CkqC,EAAgB1nC,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAAUlM,EAAO2L,SAAS5S,cAAc,6BAA6BiH,EAAOkK,iBAAmBlK,EAAO0J,OAAO1J,EAAOkK,aAElL,GAAIu9B,KADoBC,EAAgBA,EAAcvyB,aAAa,aAAe,IACjD,CAC/B,MAAM8C,EAAWjY,EAAOQ,OAAO6mC,eAAeztB,cAAc5Z,EAAQynC,GACpE,QAAwB,IAAbxvB,GAA4BlR,OAAOsE,MAAM4M,GAAW,OAC/DjY,EAAOkX,QAAQe,EACjB,GAEI0vB,EAAU,KACd,IAAKvyB,IAAgBpV,EAAOQ,OAAO6mC,eAAen7B,QAAS,OAC3D,MAAMw7B,EAAgB1nC,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAAUlM,EAAO2L,SAAS5S,cAAc,6BAA6BiH,EAAOkK,iBAAmBlK,EAAO0J,OAAO1J,EAAOkK,aAC5K09B,EAAkBF,EAAgBA,EAAcvyB,aAAa,cAAgBuyB,EAAcvyB,aAAa,gBAAkB,GAC5HnV,EAAOQ,OAAO6mC,eAAezsC,cAAgBoB,EAAOrB,SAAWqB,EAAOrB,QAAQC,cAChFoB,EAAOrB,QAAQC,aAAa,KAAM,KAAM,IAAIgtC,KAAqB,IACjEj/B,EAAK,aAELpO,EAASX,SAASC,KAAO+tC,GAAmB,GAC5Cj/B,EAAK,WACP,EAoBFvB,EAAG,QAAQ,KACLpH,EAAOQ,OAAO6mC,eAAen7B,SAnBtB,MACX,IAAKlM,EAAOQ,OAAO6mC,eAAen7B,SAAWlM,EAAOQ,OAAO7F,SAAWqF,EAAOQ,OAAO7F,QAAQuR,QAAS,OACrGkJ,GAAc,EACd,MAAMvb,EAAOU,EAASX,SAASC,KAAK2D,QAAQ,IAAK,IACjD,GAAI3D,EAAM,CACR,MAAM4G,EAAQ,EACR+H,EAAQxI,EAAOQ,OAAO6mC,eAAeztB,cAAc5Z,EAAQnG,GACjEmG,EAAOkX,QAAQ1O,GAAS,EAAG/H,EAAOT,EAAOQ,OAAO6U,oBAAoB,EACtE,CACIrV,EAAOQ,OAAO6mC,eAAeC,YAC/BtrC,EAAOtD,iBAAiB,aAAc8uC,EACxC,EASEtjB,EACF,IAEF9c,EAAG,WAAW,KACRpH,EAAOQ,OAAO6mC,eAAen7B,SAV7BlM,EAAOQ,OAAO6mC,eAAeC,YAC/BtrC,EAAOrD,oBAAoB,aAAc6uC,EAW3C,IAEFpgC,EAAG,4CAA4C,KACzCgO,GACFuyB,GACF,IAEFvgC,EAAG,eAAe,KACZgO,GAAepV,EAAOQ,OAAO+M,SAC/Bo6B,GACF,GAEJ,EAIA,SAAkB5nC,GAChB,IAuBIszB,EACAwU,GAxBA7nC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,EAAEuB,KACFA,EAAInI,OACJA,GACET,EACJC,EAAO6iB,SAAW,CAChBC,SAAS,EACTC,QAAQ,EACR+kB,SAAU,GAEZjf,EAAa,CACXhG,SAAU,CACR3W,SAAS,EACT1P,MAAO,IACPurC,mBAAmB,EACnBC,sBAAsB,EACtBC,iBAAiB,EACjBC,kBAAkB,EAClBC,mBAAmB,KAKvB,IAEIC,EAEAC,EACAjrB,EACAkrB,EACAC,EACAC,EACAC,EACAC,EAVAC,EAAqBnoC,GAAUA,EAAOqiB,SAAWriB,EAAOqiB,SAASrmB,MAAQ,IACzEosC,EAAuBpoC,GAAUA,EAAOqiB,SAAWriB,EAAOqiB,SAASrmB,MAAQ,IAE3EqsC,GAAoB,IAAIxtC,MAAO4F,UAQnC,SAASi/B,EAAgB97B,GAClBpE,IAAUA,EAAO0H,WAAc1H,EAAOU,WACvC0D,EAAElM,SAAW8H,EAAOU,YACxBV,EAAOU,UAAU/H,oBAAoB,gBAAiBunC,GAClDwI,GAGJzlB,IACF,CACA,MAAM6lB,EAAe,KACnB,GAAI9oC,EAAO0H,YAAc1H,EAAO6iB,SAASC,QAAS,OAC9C9iB,EAAO6iB,SAASE,OAClBslB,GAAY,EACHA,IACTO,EAAuBR,EACvBC,GAAY,GAEd,MAAMP,EAAW9nC,EAAO6iB,SAASE,OAASqlB,EAAmBS,EAAoBD,GAAuB,IAAIvtC,MAAO4F,UACnHjB,EAAO6iB,SAASilB,SAAWA,EAC3Bn/B,EAAK,mBAAoBm/B,EAAUA,EAAWa,GAC9Cd,EAAMnsC,uBAAsB,KAC1BotC,GAAc,GACd,EAaEC,EAAMC,IACV,GAAIhpC,EAAO0H,YAAc1H,EAAO6iB,SAASC,QAAS,OAClDlnB,qBAAqBisC,GACrBiB,IACA,IAAItsC,OAA8B,IAAfwsC,EAA6BhpC,EAAOQ,OAAOqiB,SAASrmB,MAAQwsC,EAC/EL,EAAqB3oC,EAAOQ,OAAOqiB,SAASrmB,MAC5CosC,EAAuB5oC,EAAOQ,OAAOqiB,SAASrmB,MAC9C,MAAMysC,EAlBc,MACpB,IAAIvB,EAMJ,GAJEA,EADE1nC,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAC1BlM,EAAO0J,OAAOrN,QAAOwF,GAAWA,EAAQY,UAAU+N,SAAS,yBAAwB,GAEnFxQ,EAAO0J,OAAO1J,EAAOkK,cAElCw9B,EAAe,OAEpB,OAD0Bt8B,SAASs8B,EAAcvyB,aAAa,wBAAyB,GAC/D,EASE+zB,IACrBniC,OAAOsE,MAAM49B,IAAsBA,EAAoB,QAA2B,IAAfD,IACtExsC,EAAQysC,EACRN,EAAqBM,EACrBL,EAAuBK,GAEzBb,EAAmB5rC,EACnB,MAAMiE,EAAQT,EAAOQ,OAAOC,MACtB0oC,EAAU,KACTnpC,IAAUA,EAAO0H,YAClB1H,EAAOQ,OAAOqiB,SAASqlB,kBACpBloC,EAAOwS,aAAexS,EAAOQ,OAAOoK,MAAQ5K,EAAOQ,OAAOmK,QAC7D3K,EAAO6Y,UAAUpY,GAAO,GAAM,GAC9BkI,EAAK,aACK3I,EAAOQ,OAAOqiB,SAASolB,kBACjCjoC,EAAOkX,QAAQlX,EAAO0J,OAAOnR,OAAS,EAAGkI,GAAO,GAAM,GACtDkI,EAAK,cAGF3I,EAAOyS,OAASzS,EAAOQ,OAAOoK,MAAQ5K,EAAOQ,OAAOmK,QACvD3K,EAAOuY,UAAU9X,GAAO,GAAM,GAC9BkI,EAAK,aACK3I,EAAOQ,OAAOqiB,SAASolB,kBACjCjoC,EAAOkX,QAAQ,EAAGzW,GAAO,GAAM,GAC/BkI,EAAK,aAGL3I,EAAOQ,OAAO+M,UAChBs7B,GAAoB,IAAIxtC,MAAO4F,UAC/BvF,uBAAsB,KACpBqtC,GAAK,KAET,EAcF,OAZIvsC,EAAQ,GACVhB,aAAa63B,GACbA,EAAU93B,YAAW,KACnB4tC,GAAS,GACR3sC,IAEHd,uBAAsB,KACpBytC,GAAS,IAKN3sC,CAAK,EAER4sC,EAAQ,KACZP,GAAoB,IAAIxtC,MAAO4F,UAC/BjB,EAAO6iB,SAASC,SAAU,EAC1BimB,IACApgC,EAAK,gBAAgB,EAEjBytB,EAAO,KACXp2B,EAAO6iB,SAASC,SAAU,EAC1BtnB,aAAa63B,GACbz3B,qBAAqBisC,GACrBl/B,EAAK,eAAe,EAEhB0gC,EAAQ,CAAC7yB,EAAU8yB,KACvB,GAAItpC,EAAO0H,YAAc1H,EAAO6iB,SAASC,QAAS,OAClDtnB,aAAa63B,GACR7c,IACHiyB,GAAsB,GAExB,MAAMU,EAAU,KACdxgC,EAAK,iBACD3I,EAAOQ,OAAOqiB,SAASklB,kBACzB/nC,EAAOU,UAAUhI,iBAAiB,gBAAiBwnC,GAEnDjd,GACF,EAGF,GADAjjB,EAAO6iB,SAASE,QAAS,EACrBumB,EAMF,OALId,IACFJ,EAAmBpoC,EAAOQ,OAAOqiB,SAASrmB,OAE5CgsC,GAAe,OACfW,IAGF,MAAM3sC,EAAQ4rC,GAAoBpoC,EAAOQ,OAAOqiB,SAASrmB,MACzD4rC,EAAmB5rC,IAAS,IAAInB,MAAO4F,UAAY4nC,GAC/C7oC,EAAOyS,OAAS21B,EAAmB,IAAMpoC,EAAOQ,OAAOoK,OACvDw9B,EAAmB,IAAGA,EAAmB,GAC7Ce,IAAS,EAELlmB,EAAS,KACTjjB,EAAOyS,OAAS21B,EAAmB,IAAMpoC,EAAOQ,OAAOoK,MAAQ5K,EAAO0H,YAAc1H,EAAO6iB,SAASC,UACxG+lB,GAAoB,IAAIxtC,MAAO4F,UAC3BwnC,GACFA,GAAsB,EACtBM,EAAIX,IAEJW,IAEF/oC,EAAO6iB,SAASE,QAAS,EACzBpa,EAAK,kBAAiB,EAElB4gC,EAAqB,KACzB,GAAIvpC,EAAO0H,YAAc1H,EAAO6iB,SAASC,QAAS,OAClD,MAAMvoB,EAAWF,IACgB,WAA7BE,EAASivC,kBACXf,GAAsB,EACtBY,GAAM,IAEyB,YAA7B9uC,EAASivC,iBACXvmB,GACF,EAEIwmB,EAAiBrlC,IACC,UAAlBA,EAAE2Y,cACN0rB,GAAsB,EACtBC,GAAuB,EACnB1oC,EAAOyW,WAAazW,EAAO6iB,SAASE,QACxCsmB,GAAM,GAAK,EAEPK,EAAiBtlC,IACC,UAAlBA,EAAE2Y,cACN2rB,GAAuB,EACnB1oC,EAAO6iB,SAASE,QAClBE,IACF,EAoBF7b,EAAG,QAAQ,KACLpH,EAAOQ,OAAOqiB,SAAS3W,UAlBvBlM,EAAOQ,OAAOqiB,SAASslB,oBACzBnoC,EAAOrD,GAAGjE,iBAAiB,eAAgB+wC,GAC3CzpC,EAAOrD,GAAGjE,iBAAiB,eAAgBgxC,IAQ5BrvC,IACR3B,iBAAiB,mBAAoB6wC,GAU5CH,IACF,IAEFhiC,EAAG,WAAW,KAlBZpH,EAAOrD,GAAGhE,oBAAoB,eAAgB8wC,GAC9CzpC,EAAOrD,GAAGhE,oBAAoB,eAAgB+wC,GAO7BrvC,IACR1B,oBAAoB,mBAAoB4wC,GAY7CvpC,EAAO6iB,SAASC,SAClBsT,GACF,IAEFhvB,EAAG,0BAA0B,MACvBkhC,GAAiBG,IACnBxlB,GACF,IAEF7b,EAAG,8BAA8B,KAC1BpH,EAAOQ,OAAOqiB,SAASmlB,qBAG1B5R,IAFAiT,GAAM,GAAM,EAGd,IAEFjiC,EAAG,yBAAyB,CAACimB,EAAI5sB,EAAO+V,MAClCxW,EAAO0H,WAAc1H,EAAO6iB,SAASC,UACrCtM,IAAaxW,EAAOQ,OAAOqiB,SAASmlB,qBACtCqB,GAAM,GAAM,GAEZjT,IACF,IAEFhvB,EAAG,mBAAmB,MAChBpH,EAAO0H,WAAc1H,EAAO6iB,SAASC,UACrC9iB,EAAOQ,OAAOqiB,SAASmlB,qBACzB5R,KAGFhZ,GAAY,EACZkrB,GAAgB,EAChBG,GAAsB,EACtBF,EAAoBhtC,YAAW,KAC7BktC,GAAsB,EACtBH,GAAgB,EAChBe,GAAM,EAAK,GACV,MAAI,IAETjiC,EAAG,YAAY,KACb,IAAIpH,EAAO0H,WAAc1H,EAAO6iB,SAASC,SAAY1F,EAArD,CAGA,GAFA5hB,aAAa+sC,GACb/sC,aAAa63B,GACTrzB,EAAOQ,OAAOqiB,SAASmlB,qBAGzB,OAFAM,GAAgB,OAChBlrB,GAAY,GAGVkrB,GAAiBtoC,EAAOQ,OAAO+M,SAAS0V,IAC5CqlB,GAAgB,EAChBlrB,GAAY,CAV0D,CAUrD,IAEnBhW,EAAG,eAAe,MACZpH,EAAO0H,WAAc1H,EAAO6iB,SAASC,UACzC0lB,GAAe,EAAI,IAErBxwC,OAAOsT,OAAOtL,EAAO6iB,SAAU,CAC7BumB,QACAhT,OACAiT,QACApmB,UAEJ,EAEA,SAAeljB,GACb,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACX8gB,OAAQ,CACN3pC,OAAQ,KACR4pC,sBAAsB,EACtBC,iBAAkB,EAClBC,sBAAuB,4BACvBC,qBAAsB,mBAG1B,IAAI30B,GAAc,EACd40B,GAAgB,EAIpB,SAASC,IACP,MAAMC,EAAelqC,EAAO2pC,OAAO3pC,OACnC,IAAKkqC,GAAgBA,EAAaxiC,UAAW,OAC7C,MAAMiO,EAAeu0B,EAAav0B,aAC5BD,EAAew0B,EAAax0B,aAClC,GAAIA,GAAgBA,EAAajT,UAAU+N,SAASxQ,EAAOQ,OAAOmpC,OAAOG,uBAAwB,OACjG,GAAI,MAAOn0B,EAAuD,OAClE,IAAI8D,EAEFA,EADEywB,EAAa1pC,OAAOoK,KACPQ,SAAS8+B,EAAax0B,aAAaP,aAAa,2BAA4B,IAE5EQ,EAEb3V,EAAOQ,OAAOoK,KAChB5K,EAAOgY,YAAYyB,GAEnBzZ,EAAOkX,QAAQuC,EAEnB,CACA,SAASyK,IACP,MACEylB,OAAQQ,GACNnqC,EAAOQ,OACX,GAAI4U,EAAa,OAAO,EACxBA,GAAc,EACd,MAAMg1B,EAAcpqC,EAAOjI,YAC3B,GAAIoyC,EAAanqC,kBAAkBoqC,EACjCpqC,EAAO2pC,OAAO3pC,OAASmqC,EAAanqC,OACpChI,OAAOsT,OAAOtL,EAAO2pC,OAAO3pC,OAAOgmB,eAAgB,CACjD7V,qBAAqB,EACrByF,qBAAqB,IAEvB5d,OAAOsT,OAAOtL,EAAO2pC,OAAO3pC,OAAOQ,OAAQ,CACzC2P,qBAAqB,EACrByF,qBAAqB,IAEvB5V,EAAO2pC,OAAO3pC,OAAO8K,cAChB,GAAI5M,EAAWisC,EAAanqC,QAAS,CAC1C,MAAMqqC,EAAqBryC,OAAOsT,OAAO,CAAC,EAAG6+B,EAAanqC,QAC1DhI,OAAOsT,OAAO++B,EAAoB,CAChCl6B,qBAAqB,EACrByF,qBAAqB,IAEvB5V,EAAO2pC,OAAO3pC,OAAS,IAAIoqC,EAAYC,GACvCL,GAAgB,CAClB,CAGA,OAFAhqC,EAAO2pC,OAAO3pC,OAAOrD,GAAG8F,UAAUC,IAAI1C,EAAOQ,OAAOmpC,OAAOI,sBAC3D/pC,EAAO2pC,OAAO3pC,OAAOoH,GAAG,MAAO6iC,IACxB,CACT,CACA,SAASn/B,EAAOqM,GACd,MAAM+yB,EAAelqC,EAAO2pC,OAAO3pC,OACnC,IAAKkqC,GAAgBA,EAAaxiC,UAAW,OAC7C,MAAMqC,EAAsD,SAAtCmgC,EAAa1pC,OAAOuJ,cAA2BmgC,EAAalgC,uBAAyBkgC,EAAa1pC,OAAOuJ,cAG/H,IAAIugC,EAAmB,EACvB,MAAMC,EAAmBvqC,EAAOQ,OAAOmpC,OAAOG,sBAS9C,GARI9pC,EAAOQ,OAAOuJ,cAAgB,IAAM/J,EAAOQ,OAAO8M,iBACpDg9B,EAAmBtqC,EAAOQ,OAAOuJ,eAE9B/J,EAAOQ,OAAOmpC,OAAOC,uBACxBU,EAAmB,GAErBA,EAAmBnpC,KAAKoN,MAAM+7B,GAC9BJ,EAAaxgC,OAAOrR,SAAQwJ,GAAWA,EAAQY,UAAU+G,OAAO+gC,KAC5DL,EAAa1pC,OAAOoK,MAAQs/B,EAAa1pC,OAAOyL,SAAWi+B,EAAa1pC,OAAOyL,QAAQC,QACzF,IAAK,IAAItN,EAAI,EAAGA,EAAI0rC,EAAkB1rC,GAAK,EACzCmD,EAAgBmoC,EAAav+B,SAAU,6BAA6B3L,EAAO6K,UAAYjM,OAAOvG,SAAQwJ,IACpGA,EAAQY,UAAUC,IAAI6nC,EAAiB,SAI3C,IAAK,IAAI3rC,EAAI,EAAGA,EAAI0rC,EAAkB1rC,GAAK,EACrCsrC,EAAaxgC,OAAO1J,EAAO6K,UAAYjM,IACzCsrC,EAAaxgC,OAAO1J,EAAO6K,UAAYjM,GAAG6D,UAAUC,IAAI6nC,GAI9D,MAAMV,EAAmB7pC,EAAOQ,OAAOmpC,OAAOE,iBACxCW,EAAYX,IAAqBK,EAAa1pC,OAAOoK,KAC3D,GAAI5K,EAAO6K,YAAcq/B,EAAar/B,WAAa2/B,EAAW,CAC5D,MAAMC,EAAqBP,EAAahgC,YACxC,IAAIwgC,EACA1zB,EACJ,GAAIkzB,EAAa1pC,OAAOoK,KAAM,CAC5B,MAAM+/B,EAAiBT,EAAaxgC,OAAOrN,QAAOwF,GAAWA,EAAQsT,aAAa,6BAA+B,GAAGnV,EAAO6K,cAAa,GACxI6/B,EAAiBR,EAAaxgC,OAAOxK,QAAQyrC,GAC7C3zB,EAAYhX,EAAOkK,YAAclK,EAAOyU,cAAgB,OAAS,MACnE,MACEi2B,EAAiB1qC,EAAO6K,UACxBmM,EAAY0zB,EAAiB1qC,EAAOyU,cAAgB,OAAS,OAE3D+1B,IACFE,GAAgC,SAAd1zB,EAAuB6yB,GAAoB,EAAIA,GAE/DK,EAAav4B,sBAAwBu4B,EAAav4B,qBAAqBzS,QAAQwrC,GAAkB,IAC/FR,EAAa1pC,OAAO8M,eAEpBo9B,EADEA,EAAiBD,EACFC,EAAiBvpC,KAAKoN,MAAMxE,EAAgB,GAAK,EAEjD2gC,EAAiBvpC,KAAKoN,MAAMxE,EAAgB,GAAK,EAE3D2gC,EAAiBD,GAAsBP,EAAa1pC,OAAOkO,eACtEw7B,EAAahzB,QAAQwzB,EAAgBvzB,EAAU,OAAIzY,GAEvD,CACF,CA9GAsB,EAAO2pC,OAAS,CACd3pC,OAAQ,MA8GVoH,EAAG,cAAc,KACf,MAAMuiC,OACJA,GACE3pC,EAAOQ,OACX,GAAKmpC,GAAWA,EAAO3pC,OACvB,GAA6B,iBAAlB2pC,EAAO3pC,QAAuB2pC,EAAO3pC,kBAAkBjB,YAAa,CAC7E,MAAMxE,EAAWF,IACXuwC,EAA0B,KAC9B,MAAMC,EAAyC,iBAAlBlB,EAAO3pC,OAAsBzF,EAASxB,cAAc4wC,EAAO3pC,QAAU2pC,EAAO3pC,OACzG,GAAI6qC,GAAiBA,EAAc7qC,OACjC2pC,EAAO3pC,OAAS6qC,EAAc7qC,OAC9BkkB,IACApZ,GAAO,QACF,GAAI+/B,EAAe,CACxB,MAAMC,EAAiB1mC,IACrBulC,EAAO3pC,OAASoE,EAAE2wB,OAAO,GACzB8V,EAAclyC,oBAAoB,OAAQmyC,GAC1C5mB,IACApZ,GAAO,GACP6+B,EAAO3pC,OAAO8K,SACd9K,EAAO8K,QAAQ,EAEjB+/B,EAAcnyC,iBAAiB,OAAQoyC,EACzC,CACA,OAAOD,CAAa,EAEhBE,EAAyB,KAC7B,GAAI/qC,EAAO0H,UAAW,OACAkjC,KAEpBlvC,sBAAsBqvC,EACxB,EAEFrvC,sBAAsBqvC,EACxB,MACE7mB,IACApZ,GAAO,EACT,IAEF1D,EAAG,4CAA4C,KAC7C0D,GAAQ,IAEV1D,EAAG,iBAAiB,CAACimB,EAAI9sB,KACvB,MAAM2pC,EAAelqC,EAAO2pC,OAAO3pC,OAC9BkqC,IAAgBA,EAAaxiC,WAClCwiC,EAAar5B,cAActQ,EAAS,IAEtC6G,EAAG,iBAAiB,KAClB,MAAM8iC,EAAelqC,EAAO2pC,OAAO3pC,OAC9BkqC,IAAgBA,EAAaxiC,WAC9BsiC,GACFE,EAAalf,SACf,IAEFhzB,OAAOsT,OAAOtL,EAAO2pC,OAAQ,CAC3BzlB,OACApZ,UAEJ,EAEA,SAAkB/K,GAChB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYlgB,KACZA,EAAId,KACJA,GACE9H,EACJ8oB,EAAa,CACXxJ,SAAU,CACRnT,SAAS,EACT8+B,UAAU,EACVC,cAAe,EACfC,gBAAgB,EAChBC,oBAAqB,EACrBC,sBAAuB,EACvBrV,QAAQ,EACRsV,gBAAiB,OAiNrBrzC,OAAOsT,OAAOtL,EAAQ,CACpBqf,SAAU,CACRhD,aAhNJ,WACE,GAAIrc,EAAOQ,OAAO+M,QAAS,OAC3B,MAAMnN,EAAYJ,EAAOtD,eACzBsD,EAAO+V,aAAa3V,GACpBJ,EAAO6Q,cAAc,GACrB7Q,EAAOsb,gBAAgB8N,WAAW7wB,OAAS,EAC3CyH,EAAOqf,SAASmC,WAAW,CACzBK,WAAY7hB,EAAO8L,IAAM9L,EAAOI,WAAaJ,EAAOI,WAExD,EAwMIkf,YAvMJ,WACE,GAAItf,EAAOQ,OAAO+M,QAAS,OAC3B,MACE+N,gBAAiB1S,EAAIiU,QACrBA,GACE7c,EAE2B,IAA3B4I,EAAKwgB,WAAW7wB,QAClBqQ,EAAKwgB,WAAWnlB,KAAK,CACnB6xB,SAAUjZ,EAAQ7c,EAAOkL,eAAiB,SAAW,UACrD7K,KAAMuI,EAAKgW,iBAGfhW,EAAKwgB,WAAWnlB,KAAK,CACnB6xB,SAAUjZ,EAAQ7c,EAAOkL,eAAiB,WAAa,YACvD7K,KAAM5D,KAEV,EAuLI+kB,WAtLJ,SAAoBqN,GAClB,IAAIhN,WACFA,GACEgN,EACJ,GAAI7uB,EAAOQ,OAAO+M,QAAS,OAC3B,MAAM/M,OACJA,EAAME,UACNA,EACAmL,aAAcC,EAAGO,SACjBA,EACAiP,gBAAiB1S,GACf5I,EAGE0hB,EADejlB,IACWmM,EAAKgW,eACrC,GAAIiD,GAAc7hB,EAAO8R,eACvB9R,EAAOkX,QAAQlX,EAAOkK,kBAGxB,GAAI2X,GAAc7hB,EAAOuS,eACnBvS,EAAO0J,OAAOnR,OAAS8T,EAAS9T,OAClCyH,EAAOkX,QAAQ7K,EAAS9T,OAAS,GAEjCyH,EAAOkX,QAAQlX,EAAO0J,OAAOnR,OAAS,OAJ1C,CAQA,GAAIiI,EAAO6e,SAAS2rB,SAAU,CAC5B,GAAIpiC,EAAKwgB,WAAW7wB,OAAS,EAAG,CAC9B,MAAM+yC,EAAgB1iC,EAAKwgB,WAAWmiB,MAChCC,EAAgB5iC,EAAKwgB,WAAWmiB,MAChCE,EAAWH,EAAcxV,SAAW0V,EAAc1V,SAClDz1B,EAAOirC,EAAcjrC,KAAOmrC,EAAcnrC,KAChDL,EAAOipB,SAAWwiB,EAAWprC,EAC7BL,EAAOipB,UAAY,EACf9nB,KAAKsN,IAAIzO,EAAOipB,UAAYzoB,EAAO6e,SAASgsB,kBAC9CrrC,EAAOipB,SAAW,IAIhB5oB,EAAO,KAAO5D,IAAQ6uC,EAAcjrC,KAAO,OAC7CL,EAAOipB,SAAW,EAEtB,MACEjpB,EAAOipB,SAAW,EAEpBjpB,EAAOipB,UAAYzoB,EAAO6e,SAAS+rB,sBACnCxiC,EAAKwgB,WAAW7wB,OAAS,EACzB,IAAIupC,EAAmB,IAAOthC,EAAO6e,SAAS4rB,cAC9C,MAAMS,EAAmB1rC,EAAOipB,SAAW6Y,EAC3C,IAAI6J,EAAc3rC,EAAOI,UAAYsrC,EACjC5/B,IAAK6/B,GAAeA,GACxB,IACIC,EADAC,GAAW,EAEf,MAAMC,EAA2C,GAA5B3qC,KAAKsN,IAAIzO,EAAOipB,UAAiBzoB,EAAO6e,SAAS8rB,oBACtE,IAAIY,EACJ,GAAIJ,EAAc3rC,EAAOuS,eACnB/R,EAAO6e,SAAS6rB,gBACdS,EAAc3rC,EAAOuS,gBAAkBu5B,IACzCH,EAAc3rC,EAAOuS,eAAiBu5B,GAExCF,EAAsB5rC,EAAOuS,eAC7Bs5B,GAAW,EACXjjC,EAAKoY,qBAAsB,GAE3B2qB,EAAc3rC,EAAOuS,eAEnB/R,EAAOoK,MAAQpK,EAAO8M,iBAAgBy+B,GAAe,QACpD,GAAIJ,EAAc3rC,EAAO8R,eAC1BtR,EAAO6e,SAAS6rB,gBACdS,EAAc3rC,EAAO8R,eAAiBg6B,IACxCH,EAAc3rC,EAAO8R,eAAiBg6B,GAExCF,EAAsB5rC,EAAO8R,eAC7B+5B,GAAW,EACXjjC,EAAKoY,qBAAsB,GAE3B2qB,EAAc3rC,EAAO8R,eAEnBtR,EAAOoK,MAAQpK,EAAO8M,iBAAgBy+B,GAAe,QACpD,GAAIvrC,EAAO6e,SAAS0W,OAAQ,CACjC,IAAIriB,EACJ,IAAK,IAAIs4B,EAAI,EAAGA,EAAI3/B,EAAS9T,OAAQyzC,GAAK,EACxC,GAAI3/B,EAAS2/B,IAAML,EAAa,CAC9Bj4B,EAAYs4B,EACZ,KACF,CAGAL,EADExqC,KAAKsN,IAAIpC,EAASqH,GAAai4B,GAAexqC,KAAKsN,IAAIpC,EAASqH,EAAY,GAAKi4B,IAA0C,SAA1B3rC,EAAO6e,eAC5FxS,EAASqH,GAETrH,EAASqH,EAAY,GAErCi4B,GAAeA,CACjB,CAOA,GANII,GACFlkC,EAAK,iBAAiB,KACpB7H,EAAOqY,SAAS,IAII,IAApBrY,EAAOipB,UAMT,GAJE6Y,EADEh2B,EACiB3K,KAAKsN,MAAMk9B,EAAc3rC,EAAOI,WAAaJ,EAAOipB,UAEpD9nB,KAAKsN,KAAKk9B,EAAc3rC,EAAOI,WAAaJ,EAAOipB,UAEpEzoB,EAAO6e,SAAS0W,OAAQ,CAQ1B,MAAMkW,EAAe9qC,KAAKsN,KAAK3C,GAAO6/B,EAAcA,GAAe3rC,EAAOI,WACpE8rC,EAAmBlsC,EAAOuM,gBAAgBvM,EAAOkK,aAErD43B,EADEmK,EAAeC,EACE1rC,EAAOC,MACjBwrC,EAAe,EAAIC,EACM,IAAf1rC,EAAOC,MAEQ,IAAfD,EAAOC,KAE9B,OACK,GAAID,EAAO6e,SAAS0W,OAEzB,YADA/1B,EAAOsZ,iBAGL9Y,EAAO6e,SAAS6rB,gBAAkBW,GACpC7rC,EAAOoS,eAAew5B,GACtB5rC,EAAO6Q,cAAcixB,GACrB9hC,EAAO+V,aAAa41B,GACpB3rC,EAAOyX,iBAAgB,EAAMzX,EAAO6e,gBACpC7e,EAAOyW,WAAY,EACnBvS,EAAqBxD,GAAW,KACzBV,IAAUA,EAAO0H,WAAckB,EAAKoY,sBACzCrY,EAAK,kBACL3I,EAAO6Q,cAAcrQ,EAAOC,OAC5BlF,YAAW,KACTyE,EAAO+V,aAAa61B,GACpB1nC,EAAqBxD,GAAW,KACzBV,IAAUA,EAAO0H,WACtB1H,EAAO0X,eAAe,GACtB,GACD,GAAE,KAEE1X,EAAOipB,UAChBtgB,EAAK,8BACL3I,EAAOoS,eAAeu5B,GACtB3rC,EAAO6Q,cAAcixB,GACrB9hC,EAAO+V,aAAa41B,GACpB3rC,EAAOyX,iBAAgB,EAAMzX,EAAO6e,gBAC/B7e,EAAOyW,YACVzW,EAAOyW,WAAY,EACnBvS,EAAqBxD,GAAW,KACzBV,IAAUA,EAAO0H,WACtB1H,EAAO0X,eAAe,MAI1B1X,EAAOoS,eAAeu5B,GAExB3rC,EAAOuU,oBACPvU,EAAOsT,qBACT,KAAO,IAAI9S,EAAO6e,SAAS0W,OAEzB,YADA/1B,EAAOsZ,iBAEE9Y,EAAO6e,UAChB1W,EAAK,6BACP,GACKnI,EAAO6e,SAAS2rB,UAAYtpB,GAAYlhB,EAAO2hB,gBAClDxZ,EAAK,0BACL3I,EAAOoS,iBACPpS,EAAOuU,oBACPvU,EAAOsT,sBArJT,CAuJF,IAQF,EAEA,SAAcvT,GACZ,IAWIosC,EACAC,EACAC,EACApmB,GAdAjmB,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACX1e,KAAM,CACJC,KAAM,EACNoQ,KAAM,YAOV,MAAM8xB,EAAkB,KACtB,IAAIx/B,EAAe9M,EAAOQ,OAAOsM,aAMjC,MAL4B,iBAAjBA,GAA6BA,EAAa5N,QAAQ,MAAQ,EACnE4N,EAAe9O,WAAW8O,EAAatP,QAAQ,IAAK,KAAO,IAAMwC,EAAOsE,KACvC,iBAAjBwI,IAChBA,EAAe9O,WAAW8O,IAErBA,CAAY,EAyHrB1F,EAAG,QAtBY,KACb6e,EAAcjmB,EAAOQ,OAAO2J,MAAQnK,EAAOQ,OAAO2J,KAAKC,KAAO,CAAC,IAsBjEhD,EAAG,UApBc,KACf,MAAM5G,OACJA,EAAM7D,GACNA,GACEqD,EACEkmB,EAAa1lB,EAAO2J,MAAQ3J,EAAO2J,KAAKC,KAAO,EACjD6b,IAAgBC,GAClBvpB,EAAG8F,UAAU+G,OAAO,GAAGhJ,EAAO8P,6BAA8B,GAAG9P,EAAO8P,qCACtE+7B,EAAiB,EACjBrsC,EAAOomB,yBACGH,GAAeC,IACzBvpB,EAAG8F,UAAUC,IAAI,GAAGlC,EAAO8P,8BACF,WAArB9P,EAAO2J,KAAKqQ,MACd7d,EAAG8F,UAAUC,IAAI,GAAGlC,EAAO8P,qCAE7BtQ,EAAOomB,wBAETH,EAAcC,CAAU,IAI1BlmB,EAAOmK,KAAO,CACZuD,WA1HiBhE,IACjB,MAAMK,cACJA,GACE/J,EAAOQ,QACL4J,KACJA,EAAIoQ,KACJA,GACExa,EAAOQ,OAAO2J,KACZiC,EAAepM,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAAUlM,EAAOiM,QAAQvC,OAAOnR,OAASmR,EAAOnR,OAC7G8zC,EAAiBlrC,KAAKoN,MAAMnC,EAAehC,GAEzC+hC,EADEhrC,KAAKoN,MAAMnC,EAAehC,KAAUgC,EAAehC,EAC5BgC,EAEAjL,KAAK8I,KAAKmC,EAAehC,GAAQA,EAEtC,SAAlBL,GAAqC,QAATyQ,IAC9B2xB,EAAyBhrC,KAAKC,IAAI+qC,EAAwBpiC,EAAgBK,IAE5EgiC,EAAeD,EAAyB/hC,CAAI,EAyG5CuD,YAvGkB,KACd3N,EAAO0J,QACT1J,EAAO0J,OAAOrR,SAAQyV,IAChBA,EAAMy+B,qBACRz+B,EAAMvU,MAAMsM,OAAS,GACrBiI,EAAMvU,MAAMyG,EAAO0L,kBAAkB,eAAiB,GACxD,GAEJ,EAgGAqC,YA9FkB,CAACnP,EAAGkP,EAAOpE,KAC7B,MAAMgF,eACJA,GACE1O,EAAOQ,OACLsM,EAAew/B,KACfliC,KACJA,EAAIoQ,KACJA,GACExa,EAAOQ,OAAO2J,KACZiC,EAAepM,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAAUlM,EAAOiM,QAAQvC,OAAOnR,OAASmR,EAAOnR,OAE7G,IAAIi0C,EACA/hC,EACAgiC,EACJ,GAAa,QAATjyB,GAAkB9L,EAAiB,EAAG,CACxC,MAAMg+B,EAAavrC,KAAKoN,MAAM3P,GAAK8P,EAAiBtE,IAC9CuiC,EAAoB/tC,EAAIwL,EAAOsE,EAAiBg+B,EAChDE,EAAgC,IAAfF,EAAmBh+B,EAAiBvN,KAAKE,IAAIF,KAAK8I,MAAMmC,EAAesgC,EAAatiC,EAAOsE,GAAkBtE,GAAOsE,GAC3I+9B,EAAMtrC,KAAKoN,MAAMo+B,EAAoBC,GACrCniC,EAASkiC,EAAoBF,EAAMG,EAAiBF,EAAah+B,EACjE89B,EAAqB/hC,EAASgiC,EAAMN,EAAyB/hC,EAC7D0D,EAAMvU,MAAMszC,MAAQL,CACtB,KAAoB,WAAThyB,GACT/P,EAAStJ,KAAKoN,MAAM3P,EAAIwL,GACxBqiC,EAAM7tC,EAAI6L,EAASL,GACfK,EAAS4hC,GAAkB5hC,IAAW4hC,GAAkBI,IAAQriC,EAAO,KACzEqiC,GAAO,EACHA,GAAOriC,IACTqiC,EAAM,EACNhiC,GAAU,MAIdgiC,EAAMtrC,KAAKoN,MAAM3P,EAAIwtC,GACrB3hC,EAAS7L,EAAI6tC,EAAML,GAErBt+B,EAAM2+B,IAAMA,EACZ3+B,EAAMrD,OAASA,EACfqD,EAAMvU,MAAMsM,OAAS,iBAAiBuE,EAAO,GAAK0C,UAAqB1C,KACvE0D,EAAMvU,MAAMyG,EAAO0L,kBAAkB,eAAyB,IAAR+gC,EAAY3/B,GAAgB,GAAGA,MAAmB,GACxGgB,EAAMy+B,oBAAqB,CAAI,EAuD/Bz9B,kBArDwB,CAACrB,EAAWpB,KACpC,MAAMiB,eACJA,EAAca,aACdA,GACEnO,EAAOQ,OACLsM,EAAew/B,KACfliC,KACJA,GACEpK,EAAOQ,OAAO2J,KAMlB,GALAnK,EAAOiN,aAAeQ,EAAYX,GAAgBq/B,EAClDnsC,EAAOiN,YAAc9L,KAAK8I,KAAKjK,EAAOiN,YAAc7C,GAAQ0C,EACvD9M,EAAOQ,OAAO+M,UACjBvN,EAAOU,UAAUnH,MAAMyG,EAAO0L,kBAAkB,UAAY,GAAG1L,EAAOiN,YAAcH,OAElFQ,EAAgB,CAClB,MAAMyB,EAAgB,GACtB,IAAK,IAAInQ,EAAI,EAAGA,EAAIyN,EAAS9T,OAAQqG,GAAK,EAAG,CAC3C,IAAIoQ,EAAiB3C,EAASzN,GAC1BuP,IAAca,EAAiB7N,KAAKoN,MAAMS,IAC1C3C,EAASzN,GAAKoB,EAAOiN,YAAcZ,EAAS,IAAI0C,EAAc9K,KAAK+K,EACzE,CACA3C,EAAS5D,OAAO,EAAG4D,EAAS9T,QAC5B8T,EAASpI,QAAQ8K,EACnB,GAgCJ,EAmLA,SAAsBhP,GACpB,IAAIC,OACFA,GACED,EACJ/H,OAAOsT,OAAOtL,EAAQ,CACpB8rB,YAAaA,GAAYpG,KAAK1lB,GAC9BmsB,aAAcA,GAAazG,KAAK1lB,GAChCqsB,SAAUA,GAAS3G,KAAK1lB,GACxB0sB,YAAaA,GAAYhH,KAAK1lB,GAC9B6sB,gBAAiBA,GAAgBnH,KAAK1lB,IAE1C,EAiHA,SAAoBD,GAClB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACXikB,WAAY,CACVC,WAAW,KAoCfjgB,GAAW,CACTle,OAAQ,OACR5O,SACAoH,KACA2O,aArCmB,KACnB,MAAMrM,OACJA,GACE1J,EACWA,EAAOQ,OAAOssC,WAC7B,IAAK,IAAIluC,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAAG,CACzC,MAAMiD,EAAU7B,EAAO0J,OAAO9K,GAE9B,IAAIouC,GADWnrC,EAAQwP,kBAElBrR,EAAOQ,OAAOqV,mBAAkBm3B,GAAMhtC,EAAOI,WAClD,IAAI6sC,EAAK,EACJjtC,EAAOkL,iBACV+hC,EAAKD,EACLA,EAAK,GAEP,MAAME,EAAeltC,EAAOQ,OAAOssC,WAAWC,UAAY5rC,KAAKC,IAAI,EAAID,KAAKsN,IAAI5M,EAAQX,UAAW,GAAK,EAAIC,KAAKE,IAAIF,KAAKC,IAAIS,EAAQX,UAAW,GAAI,GAC/I8b,EAAWwQ,GAAahtB,EAAQqB,GACtCmb,EAASzjB,MAAMmiC,QAAUwR,EACzBlwB,EAASzjB,MAAM6D,UAAY,eAAe4vC,QAASC,WACrD,GAmBAp8B,cAjBoBtQ,IACpB,MAAMstB,EAAoB7tB,EAAO0J,OAAOpM,KAAIuE,GAAWD,EAAoBC,KAC3EgsB,EAAkBx1B,SAAQsE,IACxBA,EAAGpD,MAAM4rB,mBAAqB,GAAG5kB,KAAY,IAE/CqtB,GAA2B,CACzB5tB,SACAO,WACAstB,oBACAC,WAAW,GACX,EAQFf,gBAAiB,KAAM,CACrBhjB,cAAe,EACf2E,eAAgB,EAChByB,qBAAqB,EACrBrD,aAAc,EACd+I,kBAAmB7V,EAAOQ,OAAO+M,WAGvC,EAEA,SAAoBxN,GAClB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACXskB,WAAY,CACV7f,cAAc,EACd8f,QAAQ,EACRC,aAAc,GACdC,YAAa,OAGjB,MAAMC,EAAqB,CAAC1rC,EAASX,EAAUgK,KAC7C,IAAIsiC,EAAetiC,EAAerJ,EAAQ9I,cAAc,6BAA+B8I,EAAQ9I,cAAc,4BACzG00C,EAAcviC,EAAerJ,EAAQ9I,cAAc,8BAAgC8I,EAAQ9I,cAAc,+BACxGy0C,IACHA,EAAep0C,EAAc,OAAO,iDAAgD8R,EAAe,OAAS,QAAQ9O,MAAM,MAC1HyF,EAAQsY,OAAOqzB,IAEZC,IACHA,EAAcr0C,EAAc,OAAO,iDAAgD8R,EAAe,QAAU,WAAW9O,MAAM,MAC7HyF,EAAQsY,OAAOszB,IAEbD,IAAcA,EAAaj0C,MAAMmiC,QAAUv6B,KAAKC,KAAKF,EAAU,IAC/DusC,IAAaA,EAAYl0C,MAAMmiC,QAAUv6B,KAAKC,IAAIF,EAAU,GAAE,EA6HpE4rB,GAAW,CACTle,OAAQ,OACR5O,SACAoH,KACA2O,aAvHmB,KACnB,MAAMpZ,GACJA,EAAE+D,UACFA,EAASgJ,OACTA,EACA/D,MAAOmtB,EACPjtB,OAAQktB,EACRlnB,aAAcC,EACdxH,KAAMsH,EAAUjH,QAChBA,GACE3E,EACEQ,EAASR,EAAOQ,OAAO2sC,WACvBjiC,EAAelL,EAAOkL,eACtBc,EAAYhM,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAC1D,IACIwhC,EADAC,EAAgB,EAEhBntC,EAAO4sC,SACLliC,GACFwiC,EAAe1tC,EAAOU,UAAU3H,cAAc,uBACzC20C,IACHA,EAAet0C,EAAc,MAAO,sBACpC4G,EAAOU,UAAUyZ,OAAOuzB,IAE1BA,EAAan0C,MAAMsM,OAAS,GAAGitB,QAE/B4a,EAAe/wC,EAAG5D,cAAc,uBAC3B20C,IACHA,EAAet0C,EAAc,MAAO,sBACpCuD,EAAGwd,OAAOuzB,MAIhB,IAAK,IAAI9uC,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAAG,CACzC,MAAMiD,EAAU6H,EAAO9K,GACvB,IAAIyQ,EAAazQ,EACboN,IACFqD,EAAajE,SAASvJ,EAAQsT,aAAa,2BAA4B,KAEzE,IAAIy4B,EAA0B,GAAbv+B,EACb42B,EAAQ9kC,KAAKoN,MAAMq/B,EAAa,KAChC9hC,IACF8hC,GAAcA,EACd3H,EAAQ9kC,KAAKoN,OAAOq/B,EAAa,MAEnC,MAAM1sC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,GAC1D,IAAI8rC,EAAK,EACLC,EAAK,EACLY,EAAK,EACLx+B,EAAa,GAAM,GACrB29B,EAAc,GAAR/G,EAAYr6B,EAClBiiC,EAAK,IACKx+B,EAAa,GAAK,GAAM,GAClC29B,EAAK,EACLa,EAAc,GAAR5H,EAAYr6B,IACRyD,EAAa,GAAK,GAAM,GAClC29B,EAAKphC,EAAqB,EAARq6B,EAAYr6B,EAC9BiiC,EAAKjiC,IACKyD,EAAa,GAAK,GAAM,IAClC29B,GAAMphC,EACNiiC,EAAK,EAAIjiC,EAA0B,EAAbA,EAAiBq6B,GAErCn6B,IACFkhC,GAAMA,GAEH9hC,IACH+hC,EAAKD,EACLA,EAAK,GAEP,MAAM5vC,EAAY,WAAW8N,EAAe,GAAK0iC,iBAA0B1iC,EAAe0iC,EAAa,qBAAqBZ,QAASC,QAASY,OAC1I3sC,GAAY,GAAKA,GAAY,IAC/BysC,EAA6B,GAAbt+B,EAA6B,GAAXnO,EAC9B4K,IAAK6hC,EAA8B,IAAbt+B,EAA6B,GAAXnO,GACxClB,EAAO2E,SAAW3E,EAAO2E,QAAQ6B,UAAYrF,KAAKsN,IAAIk/B,GAAiB,GAAK,GAAM,IACpFA,GAAiB,OAGrB9rC,EAAQtI,MAAM6D,UAAYA,EACtBoD,EAAO8sB,cACTigB,EAAmB1rC,EAASX,EAAUgK,EAE1C,CAGA,GAFAxK,EAAUnH,MAAMu0C,gBAAkB,YAAYliC,EAAa,MAC3DlL,EAAUnH,MAAM,4BAA8B,YAAYqS,EAAa,MACnEpL,EAAO4sC,OACT,GAAIliC,EACFwiC,EAAan0C,MAAM6D,UAAY,oBAAoB01B,EAAc,EAAItyB,EAAO6sC,oBAAoBva,EAAc,8CAA8CtyB,EAAO8sC,mBAC9J,CACL,MAAMS,EAAc5sC,KAAKsN,IAAIk/B,GAA4D,GAA3CxsC,KAAKoN,MAAMpN,KAAKsN,IAAIk/B,GAAiB,IAC7Et7B,EAAa,KAAOlR,KAAK6sC,IAAkB,EAAdD,EAAkB5sC,KAAKK,GAAK,KAAO,EAAIL,KAAKI,IAAkB,EAAdwsC,EAAkB5sC,KAAKK,GAAK,KAAO,GAChHysC,EAASztC,EAAO8sC,YAChBY,EAAS1tC,EAAO8sC,YAAcj7B,EAC9Boe,EAASjwB,EAAO6sC,aACtBK,EAAan0C,MAAM6D,UAAY,WAAW6wC,SAAcC,uBAA4Bnb,EAAe,EAAItC,SAAcsC,EAAe,EAAImb,yBAC1I,CAEF,MAAMC,GAAWxpC,EAAQ6B,UAAY7B,EAAQqC,YAAcrC,EAAQ4B,oBAAsBqF,EAAa,EAAI,EAC1GlL,EAAUnH,MAAM6D,UAAY,qBAAqB+wC,gBAAsBnuC,EAAOkL,eAAiB,EAAIyiC,iBAA6B3tC,EAAOkL,gBAAkByiC,EAAgB,QACzKjtC,EAAUnH,MAAMsG,YAAY,4BAA6B,GAAGsuC,MAAY,EAuBxEt9B,cArBoBtQ,IACpB,MAAM5D,GACJA,EAAE+M,OACFA,GACE1J,EAOJ,GANA0J,EAAOrR,SAAQwJ,IACbA,EAAQtI,MAAM4rB,mBAAqB,GAAG5kB,MACtCsB,EAAQ7I,iBAAiB,gHAAgHX,SAAQ2+B,IAC/IA,EAAMz9B,MAAM4rB,mBAAqB,GAAG5kB,KAAY,GAChD,IAEAP,EAAOQ,OAAO2sC,WAAWC,SAAWptC,EAAOkL,eAAgB,CAC7D,MAAMqiB,EAAW5wB,EAAG5D,cAAc,uBAC9Bw0B,IAAUA,EAASh0B,MAAM4rB,mBAAqB,GAAG5kB,MACvD,GAQA0sB,gBAjIsB,KAEtB,MAAM/hB,EAAelL,EAAOkL,eAC5BlL,EAAO0J,OAAOrR,SAAQwJ,IACpB,MAAMX,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,GAC1DqsC,EAAmB1rC,EAASX,EAAUgK,EAAa,GACnD,EA4HFgiB,gBAAiB,IAAMltB,EAAOQ,OAAO2sC,WACrCngB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBhjB,cAAe,EACf2E,eAAgB,EAChByB,qBAAqB,EACrBkR,gBAAiB,EACjBvU,aAAc,EACdQ,gBAAgB,EAChBuI,kBAAkB,KAGxB,EAaA,SAAoB9V,GAClB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACXulB,WAAY,CACV9gB,cAAc,EACd+gB,eAAe,KAGnB,MAAMd,EAAqB,CAAC1rC,EAASX,KACnC,IAAIssC,EAAextC,EAAOkL,eAAiBrJ,EAAQ9I,cAAc,6BAA+B8I,EAAQ9I,cAAc,4BAClH00C,EAAcztC,EAAOkL,eAAiBrJ,EAAQ9I,cAAc,8BAAgC8I,EAAQ9I,cAAc,+BACjHy0C,IACHA,EAAetf,GAAa,OAAQrsB,EAAS7B,EAAOkL,eAAiB,OAAS,QAE3EuiC,IACHA,EAAcvf,GAAa,OAAQrsB,EAAS7B,EAAOkL,eAAiB,QAAU,WAE5EsiC,IAAcA,EAAaj0C,MAAMmiC,QAAUv6B,KAAKC,KAAKF,EAAU,IAC/DusC,IAAaA,EAAYl0C,MAAMmiC,QAAUv6B,KAAKC,IAAIF,EAAU,GAAE,EAsEpE4rB,GAAW,CACTle,OAAQ,OACR5O,SACAoH,KACA2O,aA7DmB,KACnB,MAAMrM,OACJA,EACAmC,aAAcC,GACZ9L,EACEQ,EAASR,EAAOQ,OAAO4tC,WAC7B,IAAK,IAAIxvC,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAAG,CACzC,MAAMiD,EAAU6H,EAAO9K,GACvB,IAAIsC,EAAWW,EAAQX,SACnBlB,EAAOQ,OAAO4tC,WAAWC,gBAC3BntC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,IAEtD,MAAMuvB,EAAS5uB,EAAQwP,kBAEvB,IAAIi9B,GADY,IAAMptC,EAElBqtC,EAAU,EACVvB,EAAKhtC,EAAOQ,OAAO+M,SAAWkjB,EAASzwB,EAAOI,WAAaqwB,EAC3Dwc,EAAK,EACJjtC,EAAOkL,eAKDY,IACTwiC,GAAWA,IALXrB,EAAKD,EACLA,EAAK,EACLuB,GAAWD,EACXA,EAAU,GAIRtuC,EAAO2E,SAAW3E,EAAO2E,QAAQ6B,WAC/BrF,KAAKsN,IAAI6/B,GAAW,GAAK,GAAM,IACjCA,GAAW,MAETntC,KAAKsN,IAAI8/B,GAAW,GAAK,GAAM,IACjCA,GAAW,OAGf1sC,EAAQtI,MAAMi1C,QAAUrtC,KAAKsN,IAAItN,KAAK8kC,MAAM/kC,IAAawI,EAAOnR,OAC5DiI,EAAO8sB,cACTigB,EAAmB1rC,EAASX,GAE9B,MAAM9D,EAAY,eAAe4vC,QAASC,qBAAsBsB,iBAAuBD,QACtE9gB,GAAahtB,EAAQqB,GAC7BtI,MAAM6D,UAAYA,CAC7B,GAqBAyT,cAnBoBtQ,IACpB,MAAMstB,EAAoB7tB,EAAO0J,OAAOpM,KAAIuE,GAAWD,EAAoBC,KAC3EgsB,EAAkBx1B,SAAQsE,IACxBA,EAAGpD,MAAM4rB,mBAAqB,GAAG5kB,MACjC5D,EAAG3D,iBAAiB,gHAAgHX,SAAQk1B,IAC1IA,EAASh0B,MAAM4rB,mBAAqB,GAAG5kB,KAAY,GACnD,IAEJqtB,GAA2B,CACzB5tB,SACAO,WACAstB,qBACA,EAQFZ,gBA1EsB,KAEtBjtB,EAAOQ,OAAO4tC,WACdpuC,EAAO0J,OAAOrR,SAAQwJ,IACpB,IAAIX,EAAWW,EAAQX,SACnBlB,EAAOQ,OAAO4tC,WAAWC,gBAC3BntC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,IAEtDqsC,EAAmB1rC,EAASX,EAAS,GACrC,EAkEFgsB,gBAAiB,IAAMltB,EAAOQ,OAAO4tC,WACrCphB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBhjB,cAAe,EACf2E,eAAgB,EAChByB,qBAAqB,EACrBrD,aAAc,EACd+I,kBAAmB7V,EAAOQ,OAAO+M,WAGvC,EAEA,SAAyBxN,GACvB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACX4lB,gBAAiB,CACfzR,OAAQ,GACR0R,QAAS,EACTC,MAAO,IACPlU,MAAO,EACPmU,SAAU,EACVthB,cAAc,KA+ElBR,GAAW,CACTle,OAAQ,YACR5O,SACAoH,KACA2O,aAhFmB,KACnB,MACEpQ,MAAOmtB,EACPjtB,OAAQktB,EAAYrpB,OACpBA,EAAM6C,gBACNA,GACEvM,EACEQ,EAASR,EAAOQ,OAAOiuC,gBACvBvjC,EAAelL,EAAOkL,eACtB9N,EAAY4C,EAAOI,UACnByuC,EAAS3jC,EAA4B4nB,EAAc,EAA1B11B,EAA2C21B,EAAe,EAA3B31B,EACxD4/B,EAAS9xB,EAAe1K,EAAOw8B,QAAUx8B,EAAOw8B,OAChD58B,EAAYI,EAAOmuC,MAEzB,IAAK,IAAI/vC,EAAI,EAAGrG,EAASmR,EAAOnR,OAAQqG,EAAIrG,EAAQqG,GAAK,EAAG,CAC1D,MAAMiD,EAAU6H,EAAO9K,GACjB6O,EAAYlB,EAAgB3N,GAE5BkwC,GAAgBD,EADFhtC,EAAQwP,kBACiB5D,EAAY,GAAKA,EACxDshC,EAA8C,mBAApBvuC,EAAOouC,SAA0BpuC,EAAOouC,SAASE,GAAgBA,EAAetuC,EAAOouC,SACvH,IAAIN,EAAUpjC,EAAe8xB,EAAS+R,EAAmB,EACrDR,EAAUrjC,EAAe,EAAI8xB,EAAS+R,EAEtCC,GAAc5uC,EAAYe,KAAKsN,IAAIsgC,GACnCL,EAAUluC,EAAOkuC,QAEE,iBAAZA,IAAkD,IAA1BA,EAAQxvC,QAAQ,OACjDwvC,EAAU1wC,WAAWwC,EAAOkuC,SAAW,IAAMjhC,GAE/C,IAAIgzB,EAAav1B,EAAe,EAAIwjC,EAAUK,EAC1CvO,EAAat1B,EAAewjC,EAAUK,EAAmB,EACzDtU,EAAQ,GAAK,EAAIj6B,EAAOi6B,OAASt5B,KAAKsN,IAAIsgC,GAG1C5tC,KAAKsN,IAAI+xB,GAAc,OAAOA,EAAa,GAC3Cr/B,KAAKsN,IAAIgyB,GAAc,OAAOA,EAAa,GAC3Ct/B,KAAKsN,IAAIugC,GAAc,OAAOA,EAAa,GAC3C7tC,KAAKsN,IAAI6/B,GAAW,OAAOA,EAAU,GACrCntC,KAAKsN,IAAI8/B,GAAW,OAAOA,EAAU,GACrCptC,KAAKsN,IAAIgsB,GAAS,OAAOA,EAAQ,GACjCz6B,EAAO2E,SAAW3E,EAAO2E,QAAQ6B,WAC/BrF,KAAKsN,IAAI6/B,GAAW,GAAK,GAAM,IACjCA,GAAW,MAETntC,KAAKsN,IAAI8/B,GAAW,GAAK,GAAM,IACjCA,GAAW,OAGf,MAAMU,EAAiB,eAAezO,OAAgBC,OAAgBuO,iBAA0BT,iBAAuBD,eAAqB7T,KAI5I,GAHiBjN,GAAahtB,EAAQqB,GAC7BtI,MAAM6D,UAAY6xC,EAC3BptC,EAAQtI,MAAMi1C,OAAmD,EAAzCrtC,KAAKsN,IAAItN,KAAK8kC,MAAM8I,IACxCvuC,EAAO8sB,aAAc,CAEvB,IAAI4hB,EAAiBhkC,EAAerJ,EAAQ9I,cAAc,6BAA+B8I,EAAQ9I,cAAc,4BAC3Go2C,EAAgBjkC,EAAerJ,EAAQ9I,cAAc,8BAAgC8I,EAAQ9I,cAAc,+BAC1Gm2C,IACHA,EAAiBhhB,GAAa,YAAarsB,EAASqJ,EAAe,OAAS,QAEzEikC,IACHA,EAAgBjhB,GAAa,YAAarsB,EAASqJ,EAAe,QAAU,WAE1EgkC,IAAgBA,EAAe31C,MAAMmiC,QAAUqT,EAAmB,EAAIA,EAAmB,GACzFI,IAAeA,EAAc51C,MAAMmiC,SAAWqT,EAAmB,GAAKA,EAAmB,EAC/F,CACF,GAgBAl+B,cAdoBtQ,IACMP,EAAO0J,OAAOpM,KAAIuE,GAAWD,EAAoBC,KACzDxJ,SAAQsE,IACxBA,EAAGpD,MAAM4rB,mBAAqB,GAAG5kB,MACjC5D,EAAG3D,iBAAiB,gHAAgHX,SAAQk1B,IAC1IA,EAASh0B,MAAM4rB,mBAAqB,GAAG5kB,KAAY,GACnD,GACF,EAQFysB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrB5c,qBAAqB,KAG3B,EAEA,SAAwBpQ,GACtB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACXumB,eAAgB,CACdC,cAAe,EACfC,mBAAmB,EACnBC,mBAAoB,EACpBviB,aAAa,EACb5Y,KAAM,CACJhU,UAAW,CAAC,EAAG,EAAG,GAClB48B,OAAQ,CAAC,EAAG,EAAG,GACftB,QAAS,EACTjB,MAAO,GAETzmB,KAAM,CACJ5T,UAAW,CAAC,EAAG,EAAG,GAClB48B,OAAQ,CAAC,EAAG,EAAG,GACftB,QAAS,EACTjB,MAAO,MAIb,MAAM+U,EAAoBloB,GACH,iBAAVA,EAA2BA,EAC/B,GAAGA,MAmGZwF,GAAW,CACTle,OAAQ,WACR5O,SACAoH,KACA2O,aArGmB,KACnB,MAAMrM,OACJA,EAAMhJ,UACNA,EAAS6L,gBACTA,GACEvM,EACEQ,EAASR,EAAOQ,OAAO4uC,gBAE3BG,mBAAoBl9B,GAClB7R,EACEivC,EAAmBzvC,EAAOQ,OAAO8M,eACvC,GAAImiC,EAAkB,CACpB,MAAMC,EAASnjC,EAAgB,GAAK,EAAIvM,EAAOQ,OAAOiM,oBAAsB,EAC5E/L,EAAUnH,MAAM6D,UAAY,yBAAyBsyC,OACvD,CACA,IAAK,IAAI9wC,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAAG,CACzC,MAAMiD,EAAU6H,EAAO9K,GACjBiT,EAAgBhQ,EAAQX,SACxBA,EAAWC,KAAKE,IAAIF,KAAKC,IAAIS,EAAQX,UAAWV,EAAO6uC,eAAgB7uC,EAAO6uC,eACpF,IAAIl9B,EAAmBjR,EAClBuuC,IACHt9B,EAAmBhR,KAAKE,IAAIF,KAAKC,IAAIS,EAAQsQ,kBAAmB3R,EAAO6uC,eAAgB7uC,EAAO6uC,gBAEhG,MAAM5e,EAAS5uB,EAAQwP,kBACjBsG,EAAI,CAAC3X,EAAOQ,OAAO+M,SAAWkjB,EAASzwB,EAAOI,WAAaqwB,EAAQ,EAAG,GACtEkf,EAAI,CAAC,EAAG,EAAG,GACjB,IAAIC,GAAS,EACR5vC,EAAOkL,iBACVyM,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAK,GAET,IAAI/O,EAAO,CACTxI,UAAW,CAAC,EAAG,EAAG,GAClB48B,OAAQ,CAAC,EAAG,EAAG,GACfvC,MAAO,EACPiB,QAAS,GAEPx6B,EAAW,GACb0H,EAAOpI,EAAOwT,KACd47B,GAAS,GACA1uC,EAAW,IACpB0H,EAAOpI,EAAO4T,KACdw7B,GAAS,GAGXj4B,EAAEtf,SAAQ,CAACivB,EAAO9e,KAChBmP,EAAEnP,GAAS,QAAQ8e,UAAckoB,EAAkB5mC,EAAKxI,UAAUoI,SAAarH,KAAKsN,IAAIvN,EAAWmR,MAAe,IAGpHs9B,EAAEt3C,SAAQ,CAACivB,EAAO9e,KAChB,IAAIuQ,EAAMnQ,EAAKo0B,OAAOx0B,GAASrH,KAAKsN,IAAIvN,EAAWmR,GAC/CrS,EAAO2E,SAAW3E,EAAO2E,QAAQ6B,UAAYrF,KAAKsN,IAAIsK,GAAO,GAAK,GAAM,IAC1EA,GAAO,MAET42B,EAAEnnC,GAASuQ,CAAG,IAEhBlX,EAAQtI,MAAMi1C,QAAUrtC,KAAKsN,IAAItN,KAAK8kC,MAAMp0B,IAAkBnI,EAAOnR,OACrE,MAAMs3C,EAAkBl4B,EAAEla,KAAK,MACzBqyC,EAAe,WAAWH,EAAE,kBAAkBA,EAAE,kBAAkBA,EAAE,SACpEI,EAAc59B,EAAmB,EAAI,SAAS,GAAK,EAAIvJ,EAAK6xB,OAAStoB,EAAmBE,KAAgB,SAAS,GAAK,EAAIzJ,EAAK6xB,OAAStoB,EAAmBE,KAC3J29B,EAAgB79B,EAAmB,EAAI,GAAK,EAAIvJ,EAAK8yB,SAAWvpB,EAAmBE,EAAa,GAAK,EAAIzJ,EAAK8yB,SAAWvpB,EAAmBE,EAC5IjV,EAAY,eAAeyyC,MAAoBC,KAAgBC,IAGrE,GAAIH,GAAUhnC,EAAKwkC,SAAWwC,EAAQ,CACpC,IAAIriB,EAAW1rB,EAAQ9I,cAAc,wBAIrC,IAHKw0B,GAAY3kB,EAAKwkC,SACpB7f,EAAWW,GAAa,WAAYrsB,IAElC0rB,EAAU,CACZ,MAAM0iB,EAAgBzvC,EAAO8uC,kBAAoBpuC,GAAY,EAAIV,EAAO6uC,eAAiBnuC,EACzFqsB,EAASh0B,MAAMmiC,QAAUv6B,KAAKE,IAAIF,KAAKC,IAAID,KAAKsN,IAAIwhC,GAAgB,GAAI,EAC1E,CACF,CACA,MAAMjzB,EAAWwQ,GAAahtB,EAAQqB,GACtCmb,EAASzjB,MAAM6D,UAAYA,EAC3B4f,EAASzjB,MAAMmiC,QAAUsU,EACrBpnC,EAAK3O,SACP+iB,EAASzjB,MAAMu0C,gBAAkBllC,EAAK3O,OAE1C,GAsBA4W,cApBoBtQ,IACpB,MAAMstB,EAAoB7tB,EAAO0J,OAAOpM,KAAIuE,GAAWD,EAAoBC,KAC3EgsB,EAAkBx1B,SAAQsE,IACxBA,EAAGpD,MAAM4rB,mBAAqB,GAAG5kB,MACjC5D,EAAG3D,iBAAiB,wBAAwBX,SAAQk1B,IAClDA,EAASh0B,MAAM4rB,mBAAqB,GAAG5kB,KAAY,GACnD,IAEJqtB,GAA2B,CACzB5tB,SACAO,WACAstB,oBACAC,WAAW,GACX,EAQFd,YAAa,IAAMhtB,EAAOQ,OAAO4uC,eAAepiB,YAChDD,gBAAiB,KAAM,CACrB5c,qBAAqB,EACrB0F,kBAAmB7V,EAAOQ,OAAO+M,WAGvC,EAEA,SAAqBxN,GACnB,IAAIC,OACFA,EAAM6oB,aACNA,EAAYzhB,GACZA,GACErH,EACJ8oB,EAAa,CACXqnB,YAAa,CACX5iB,cAAc,EACd0P,QAAQ,EACRmT,eAAgB,EAChBC,eAAgB,KA6FpBtjB,GAAW,CACTle,OAAQ,QACR5O,SACAoH,KACA2O,aA9FmB,KACnB,MAAMrM,OACJA,EAAMQ,YACNA,EACA2B,aAAcC,GACZ9L,EACEQ,EAASR,EAAOQ,OAAO0vC,aACvB30B,eACJA,EAAc6B,UACdA,GACEpd,EAAOsb,gBACLxF,EAAmBhK,GAAO9L,EAAOI,UAAYJ,EAAOI,UAC1D,IAAK,IAAIxB,EAAI,EAAGA,EAAI8K,EAAOnR,OAAQqG,GAAK,EAAG,CACzC,MAAMiD,EAAU6H,EAAO9K,GACjBiT,EAAgBhQ,EAAQX,SACxBA,EAAWC,KAAKE,IAAIF,KAAKC,IAAIyQ,GAAgB,GAAI,GACvD,IAAI4e,EAAS5uB,EAAQwP,kBACjBrR,EAAOQ,OAAO8M,iBAAmBtN,EAAOQ,OAAO+M,UACjDvN,EAAOU,UAAUnH,MAAM6D,UAAY,cAAc4C,EAAO8R,qBAEtD9R,EAAOQ,OAAO8M,gBAAkBtN,EAAOQ,OAAO+M,UAChDkjB,GAAU/mB,EAAO,GAAG2H,mBAEtB,IAAIg/B,EAAKrwC,EAAOQ,OAAO+M,SAAWkjB,EAASzwB,EAAOI,WAAaqwB,EAC3D6f,EAAK,EACT,MAAMC,GAAM,IAAMpvC,KAAKsN,IAAIvN,GAC3B,IAAIu5B,EAAQ,EACRuC,GAAUx8B,EAAO2vC,eAAiBjvC,EAClCsvC,EAAQhwC,EAAO4vC,eAAsC,IAArBjvC,KAAKsN,IAAIvN,GAC7C,MAAMmO,EAAarP,EAAOiM,SAAWjM,EAAOQ,OAAOyL,QAAQC,QAAUlM,EAAOiM,QAAQ1B,KAAO3L,EAAIA,EACzF6xC,GAAiBphC,IAAenF,GAAemF,IAAenF,EAAc,IAAMhJ,EAAW,GAAKA,EAAW,IAAMkc,GAAapd,EAAOQ,OAAO+M,UAAYuI,EAAmByF,EAC7Km1B,GAAiBrhC,IAAenF,GAAemF,IAAenF,EAAc,IAAMhJ,EAAW,GAAKA,GAAY,IAAMkc,GAAapd,EAAOQ,OAAO+M,UAAYuI,EAAmByF,EACpL,GAAIk1B,GAAiBC,EAAe,CAClC,MAAMC,GAAe,EAAIxvC,KAAKsN,KAAKtN,KAAKsN,IAAIvN,GAAY,IAAO,MAAS,GACxE87B,IAAW,GAAK97B,EAAWyvC,EAC3BlW,IAAU,GAAMkW,EAChBH,GAAS,GAAKG,EACdL,GAAS,GAAKK,EAAcxvC,KAAKsN,IAAIvN,GAAhC,GACP,CAUA,GAPEmvC,EAFEnvC,EAAW,EAER,QAAQmvC,OAAQvkC,EAAM,IAAM,QAAQ0kC,EAAQrvC,KAAKsN,IAAIvN,QACjDA,EAAW,EAEf,QAAQmvC,OAAQvkC,EAAM,IAAM,SAAS0kC,EAAQrvC,KAAKsN,IAAIvN,QAEtD,GAAGmvC,OAELrwC,EAAOkL,eAAgB,CAC1B,MAAM0lC,EAAQN,EACdA,EAAKD,EACLA,EAAKO,CACP,CACA,MAAMb,EAAc7uC,EAAW,EAAI,IAAG,GAAK,EAAIu5B,GAASv5B,GAAa,IAAG,GAAK,EAAIu5B,GAASv5B,GAGpF9D,EAAY,yBACJizC,MAAOC,MAAOC,yBAClB/vC,EAAOw8B,OAASlxB,GAAOkxB,EAASA,EAAS,wBAC3C+S,aAIR,GAAIvvC,EAAO8sB,aAAc,CAEvB,IAAIC,EAAW1rB,EAAQ9I,cAAc,wBAChCw0B,IACHA,EAAWW,GAAa,QAASrsB,IAE/B0rB,IAAUA,EAASh0B,MAAMmiC,QAAUv6B,KAAKE,IAAIF,KAAKC,KAAKD,KAAKsN,IAAIvN,GAAY,IAAO,GAAK,GAAI,GACjG,CACAW,EAAQtI,MAAMi1C,QAAUrtC,KAAKsN,IAAItN,KAAK8kC,MAAMp0B,IAAkBnI,EAAOnR,OACpDi1B,GAAahtB,EAAQqB,GAC7BtI,MAAM6D,UAAYA,CAC7B,GAqBAyT,cAnBoBtQ,IACpB,MAAMstB,EAAoB7tB,EAAO0J,OAAOpM,KAAIuE,GAAWD,EAAoBC,KAC3EgsB,EAAkBx1B,SAAQsE,IACxBA,EAAGpD,MAAM4rB,mBAAqB,GAAG5kB,MACjC5D,EAAG3D,iBAAiB,wBAAwBX,SAAQk1B,IAClDA,EAASh0B,MAAM4rB,mBAAqB,GAAG5kB,KAAY,GACnD,IAEJqtB,GAA2B,CACzB5tB,SACAO,WACAstB,qBACA,EAQFb,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrB5c,qBAAqB,EACrB0F,kBAAmB7V,EAAOQ,OAAO+M,WAGvC,GAiBAgb,GAAOiD,IAAI9C,IAGX,MAAMmoB,GAAa,CAAC,eAAgB,eAAgB,mBAAoB,UAAW,OAAQ,aAAc,iBAAkB,oBAAqB,eAAgB,SAAU,UAAW,uBAAwB,iBAAkB,SAAU,oBAAqB,WAAY,SAAU,UAAW,iCAAkC,YAAa,MAAO,sBAAuB,sBAAuB,YAAa,cAAe,iBAAkB,mBAAoB,UAAW,cAAe,kBAAmB,gBAAiB,iBAAkB,0BAA2B,QAAS,kBAAmB,sBAAuB,sBAAuB,kBAAmB,wBAAyB,sBAAuB,qBAAsB,sBAAuB,4BAA6B,iBAAkB,eAAgB,aAAc,aAAc,gBAAiB,eAAgB,cAAe,kBAAmB,eAAgB,gBAAiB,iBAAkB,aAAc,2BAA4B,2BAA4B,gCAAiC,sBAAuB,oBAAqB,cAAe,mBAAoB,uBAAwB,cAAe,gBAAiB,2BAA4B,uBAAwB,QAAS,uBAAwB,qBAAsB,sBAAuB,UAAW,kBAAmB,kBAAmB,gBAAiB,aAAc,iBAAkB,oBAAqB,mBAAoB,yBAA0B,aAAc,mBAAoB,oBAAqB,yBAA0B,iBAAkB,iBAAkB,kBAAmB,eAAgB,qBAAsB,sBAAuB,qBAAsB,WAAY,iBAAkB,uBAEzsD,OAAQ,YAAa,cAAe,kBAAmB,aAAc,aAAc,aAAc,iBAAkB,cAAe,iBAAkB,UAAW,WAAY,aAAc,cAAe,cAAe,WAAY,aAAc,UAAW,UAAW,OAAQ,WAE/Q,SAASC,GAAS3yC,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEpG,aAAkE,WAAnDC,OAAOoG,UAAUN,SAASO,KAAKF,GAAGG,MAAM,GAAI,KAAoBH,EAAEsB,UACnI,CACA,SAASsxC,GAAO74C,EAAQC,GACtB,MAAMwG,EAAW,CAAC,YAAa,cAAe,aAC9C3G,OAAOI,KAAKD,GAAKkE,QAAO/D,GAAOqG,EAASO,QAAQ5G,GAAO,IAAGD,SAAQC,SACrC,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcw4C,GAAS34C,EAAIG,KAASw4C,GAAS54C,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,EAChJJ,EAAIG,GAAKmH,WAAYvH,EAAOI,GAAOH,EAAIG,GAAUy4C,GAAO74C,EAAOI,GAAMH,EAAIG,IAE7EJ,EAAOI,GAAOH,EAAIG,EACpB,GAEJ,CAmBA,SAAS04C,GAAWC,GAIlB,YAHiB,IAAbA,IACFA,EAAW,IAENA,EAASzzC,QAAQ,WAAW0zC,GAAKA,EAAEC,cAAc3zC,QAAQ,IAAK,KACvE,CA+KA,MAAM4zC,GAAcr4B,IAClB,GAAI/a,WAAW+a,KAAShS,OAAOgS,GAAM,OAAOhS,OAAOgS,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,iBAARA,GAAoBA,EAAIpS,SAAS,MAAQoS,EAAIpS,SAAS,MAAQoS,EAAIpS,SAAS,KAAM,CAC1F,IAAIqJ,EACJ,IACEA,EAAIqhC,KAAKC,MAAMv4B,EACjB,CAAE,MAAOxW,GACPyN,EAAI+I,CACN,CACA,OAAO/I,CACT,CACA,OAAO+I,CAVkC,CAU/B,EAENw4B,GAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,GAAUxvC,EAASyvC,EAAUC,GACpC,MAAMlxC,EAAS,CAAC,EACVuoB,EAAe,CAAC,EACtBgoB,GAAOvwC,EAAQyjB,GACf,MAAM0tB,EAAkB,IAAId,GAAY,MAClCe,EAAgBD,EAAgBr0C,KAAIhF,GAAOA,EAAIkF,QAAQ,IAAK,MAGlEm0C,EAAgBt5C,SAAQw5C,IACtBA,EAAYA,EAAUr0C,QAAQ,IAAK,SACD,IAAvBwE,EAAQ6vC,KACjB9oB,EAAa8oB,GAAa7vC,EAAQ6vC,GACpC,IAIF,MAAMC,EAAY,IAAI9vC,EAAQ2tB,YA6D9B,MA5DwB,iBAAb8hB,QAA8C,IAAdC,GACzCI,EAAU7tC,KAAK,CACb8tC,KAAMN,EACNnqB,MAAOwpB,GAASY,GAAa,IACxBA,GACDA,IAGRI,EAAUz5C,SAAQ25C,IAChB,MAAMC,EAAcV,GAAkBl1C,QAAO61C,GAA8C,IAApCF,EAAKD,KAAK7yC,QAAQ,GAAGgzC,QAAkB,GAC9F,GAAID,EAAa,CACf,MAAME,EAAgBnB,GAAWiB,GAC3BG,EAAapB,GAAWgB,EAAKD,KAAK31C,MAAM,GAAG61C,MAAgB,SACtB,IAAhClpB,EAAaopB,KAAgCppB,EAAaopB,GAAiB,CAAC,IACnD,IAAhCppB,EAAaopB,KACfppB,EAAaopB,GAAiB,CAC5BjmC,SAAS,IAGb6c,EAAaopB,GAAeC,GAAchB,GAAYY,EAAK1qB,MAC7D,KAAO,CACL,MAAMyqB,EAAOf,GAAWgB,EAAKD,MAC7B,IAAKH,EAAcjrC,SAASorC,GAAO,OACnC,MAAMzqB,EAAQ8pB,GAAYY,EAAK1qB,OAC3ByB,EAAagpB,IAASR,GAAkB5qC,SAASqrC,EAAKD,QAAUjB,GAASxpB,IACvEyB,EAAagpB,GAAMh6C,cAAgBC,SACrC+wB,EAAagpB,GAAQ,CAAC,GAExBhpB,EAAagpB,GAAM7lC,UAAYob,GAE/ByB,EAAagpB,GAAQzqB,CAEzB,KAEFypB,GAAOvwC,EAAQuoB,GACXvoB,EAAO+hB,WACT/hB,EAAO+hB,WAAa,CAClBE,OAAQ,sBACRD,OAAQ,0BACkB,IAAtBhiB,EAAO+hB,WAAsB/hB,EAAO+hB,WAAa,CAAC,IAEzB,IAAtB/hB,EAAO+hB,mBACT/hB,EAAO+hB,WAEZ/hB,EAAO66B,UACT76B,EAAO66B,UAAY,CACjB1+B,GAAI,wBACqB,IAArB6D,EAAO66B,UAAqB76B,EAAO66B,UAAY,CAAC,IAExB,IAArB76B,EAAO66B,kBACT76B,EAAO66B,UAEZ76B,EAAO82B,WACT92B,EAAO82B,WAAa,CAClB36B,GAAI,yBACsB,IAAtB6D,EAAO82B,WAAsB92B,EAAO82B,WAAa,CAAC,IAEzB,IAAtB92B,EAAO82B,mBACT92B,EAAO82B,WAET,CACL92B,SACAuoB,eAEJ,CAiBA,MAAMspB,GAAY,+maAIlB,MAAMC,GAAkC,oBAAXt2C,QAAiD,oBAAhB+C,YAD9D,QAC+GA,YACzGwzC,GAAW,udAEXC,GAAW,CAAC1wC,EAAY2wC,KAC5B,GAA6B,oBAAlBC,eAAiC5wC,EAAW6wC,mBAAoB,CACzE,MAAMC,EAAa,IAAIF,cACvBE,EAAWC,YAAYJ,GACvB3wC,EAAW6wC,mBAAqB,CAACC,EACnC,KAAO,CACL,MAAMr5C,EAAQgB,SAASnB,cAAc,SACrCG,EAAMu5C,IAAM,aACZv5C,EAAM+gC,YAAcmY,EACpB3wC,EAAWixC,YAAYx5C,EACzB,GAEF,MAAMy5C,WAAwBV,GAC5B,WAAAv6C,GACEk7C,QACAh4C,KAAKi4C,aAAa,CAChBC,KAAM,QAEV,CACA,wBAAWC,GACT,OAAOb,EACT,CACA,wBAAWc,GACT,OAAOd,GAAS/0C,QAAQ,WAAY,6DACtC,CACA,SAAA81C,GACE,MAAO,CAACjB,MAEJp3C,KAAKs4C,cAAgB5wC,MAAMC,QAAQ3H,KAAKs4C,cAAgBt4C,KAAKs4C,aAAe,IAAK91C,KAAK,KAC5F,CACA,QAAA+1C,GACE,OAAOv4C,KAAKw4C,kBAAoB,EAClC,CACA,cAAAC,GACE,MAAMC,EAAmB14C,KAAK4vB,YAAc,EAEtC+oB,EAAoB,IAAI34C,KAAKjC,iBAAiB,mBAAmBsE,KAAIqG,GAClEyH,SAASzH,EAAMwR,aAAa,QAAQ/Y,MAAM,UAAU,GAAI,MAGjE,GADAnB,KAAK4vB,WAAa+oB,EAAkBr7C,OAAS4I,KAAKC,OAAOwyC,GAAqB,EAAI,EAC7E34C,KAAK44C,SACV,GAAI54C,KAAK4vB,WAAa8oB,EACpB,IAAK,IAAI/0C,EAAI+0C,EAAkB/0C,EAAI3D,KAAK4vB,WAAYjsB,GAAK,EAAG,CAC1D,MAAMiD,EAAUtH,SAASnB,cAAc,gBACvCyI,EAAQrI,aAAa,OAAQ,eAAeoF,EAAI,KAChD,MAAMk1C,EAASv5C,SAASnB,cAAc,QACtC06C,EAAOt6C,aAAa,OAAQ,SAASoF,EAAI,KACzCiD,EAAQkxC,YAAYe,GACpB74C,KAAK6G,WAAW/I,cAAc,mBAAmBg6C,YAAYlxC,EAC/D,MACK,GAAI5G,KAAK4vB,WAAa8oB,EAAkB,CAC7C,MAAMjqC,EAASzO,KAAK+E,OAAO0J,OAC3B,IAAK,IAAI9K,EAAI8K,EAAOnR,OAAS,EAAGqG,GAAK,EAAGA,GAAK,EACvCA,EAAI3D,KAAK4vB,YACXnhB,EAAO9K,GAAG4K,QAGhB,CACF,CACA,MAAAqxB,GACE,GAAI5/B,KAAK44C,SAAU,OACnB54C,KAAKy4C,iBAGL,IAAIK,EAAc94C,KAAKq4C,YACnBr4C,KAAK4vB,WAAa,IACpBkpB,EAAcA,EAAYv2C,QAAQ,8BAA+B,OAE/Du2C,EAAYx7C,QACdi6C,GAASv3C,KAAK6G,WAAYiyC,GAE5B94C,KAAKu4C,WAAWn7C,SAAQisB,IAEtB,GADmBrpB,KAAK6G,WAAW/I,cAAc,cAAcurB,OAC/C,OAChB,MAAM0vB,EAASz5C,SAASnB,cAAc,QACtC46C,EAAOlB,IAAM,aACbkB,EAAOh6C,KAAOsqB,EACdrpB,KAAK6G,WAAWixC,YAAYiB,EAAO,IAGrC,MAAMr3C,EAAKpC,SAASnB,cAAc,OAlZtC,IAAyBoH,EAmZrB7D,EAAG8F,UAAUC,IAAI,UACjB/F,EAAGoqC,KAAO,YAGVpqC,EAAGsvB,UAAY,mIAIXtpB,MAAM4H,KAAK,CACfhS,OAAQ0C,KAAK4vB,aACZvtB,KAAI,CAACkN,EAAGhC,IAAU,6CACiBA,oCACZA,kDAEnB/K,KAAK,sEAjaW+C,EAoaHvF,KAAK8tB,kBAnaV,IAAXvoB,IACFA,EAAS,CAAC,GAELA,EAAO+hB,iBAAkD,IAA7B/hB,EAAO+hB,WAAWC,aAA8D,IAA7BhiB,EAAO+hB,WAAWE,OAga/D,gEACgBxnB,KAAKlD,YAAYs7C,mFACjBp4C,KAAKlD,YAAYq7C,8BACpE,aAjaR,SAAyB5yC,GAIvB,YAHe,IAAXA,IACFA,EAAS,CAAC,GAELA,EAAO82B,iBAA8C,IAAzB92B,EAAO82B,WAAW36B,EACvD,CA6ZMs3C,CAAgBh5C,KAAK8tB,cAAgB,4EAEnC,aA9ZR,SAAwBvoB,GAItB,YAHe,IAAXA,IACFA,EAAS,CAAC,GAELA,EAAO66B,gBAA4C,IAAxB76B,EAAO66B,UAAU1+B,EACrD,CA0ZMu3C,CAAej5C,KAAK8tB,cAAgB,0EAElC,WAEJ9tB,KAAK6G,WAAWixC,YAAYp2C,GAC5B1B,KAAK44C,UAAW,CAClB,CACA,UAAAM,GACE,IAAIC,EAAQn5C,KACZ,GAAIA,KAAKma,YAAa,OACtBna,KAAKma,aAAc,EACnB,MACE5U,OAAQsoB,EAAYC,aACpBA,GACEyoB,GAAUv2C,MACdA,KAAK6tB,aAAeA,EACpB7tB,KAAK8tB,aAAeA,SACb9tB,KAAK6tB,aAAa5E,KACzBjpB,KAAK4/B,SAGL5/B,KAAK+E,OAAS,IAAIuoB,GAAOttB,KAAK6G,WAAW/I,cAAc,WAAY,IAC7D+vB,EAAa7c,QAAU,CAAC,EAAI,CAC9BigB,UAAU,EACV6D,qBAAsB90B,KAAK4vB,WAAa,MAEvC/B,EACH7L,kBAAmB,YACnB5U,MAAO,SAAU0pC,GACF,mBAATA,GACFqC,EAAMV,iBAER,MAAM1qB,EAAYF,EAAazE,aAAe,GAAGyE,EAAazE,eAAe0tB,EAAKtrC,gBAAkBsrC,EAAKtrC,cACzG,IAAK,IAAIwB,EAAOxJ,UAAUlG,OAAQ2P,EAAO,IAAIvF,MAAMsF,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGD,EAAKC,EAAO,GAAK1J,UAAU0J,GAE7B,MAAMP,EAAQ,IAAI5M,YAAYguB,EAAW,CACvC+L,OAAQ7sB,EACR4Y,QAAkB,eAATixB,EACT7xB,YAAY,IAEdk0B,EAAMrzB,cAAcnZ,EACtB,GAEJ,CACA,iBAAAysC,GACMp5C,KAAKma,aAAena,KAAKmlB,QAAUnlB,KAAKkO,QAAQ,iBAAmBlO,KAAKkO,QAAQ,gBAAgB+R,oBAGlF,IAAdjgB,KAAKipB,MAAgD,UAA9BjpB,KAAKka,aAAa,SAG7Cla,KAAKk5C,YACP,CACA,oBAAAG,GACMr5C,KAAKmlB,QAAUnlB,KAAKkO,QAAQ,iBAAmBlO,KAAKkO,QAAQ,gBAAgB+R,oBAG5EjgB,KAAK+E,QAAU/E,KAAK+E,OAAOgrB,SAC7B/vB,KAAK+E,OAAOgrB,UAEd/vB,KAAKma,aAAc,EACrB,CACA,wBAAAm/B,CAAyB9C,EAAUC,GACjC,MACElxC,OAAQsoB,EAAYC,aACpBA,GACEyoB,GAAUv2C,KAAMw2C,EAAUC,GAC9Bz2C,KAAK8tB,aAAeA,EACpB9tB,KAAK6tB,aAAeA,EAChB7tB,KAAK+E,QAAU/E,KAAK+E,OAAOQ,OAAOixC,KAAcC,GAxdxD,SAAsB3xC,GACpB,IAAIC,OACFA,EAAM0J,OACNA,EAAMqf,aACNA,EAAYyrB,cACZA,EAAahyB,OACbA,EAAMC,OACNA,EAAMgyB,YACNA,EAAWC,aACXA,GACE30C,EACJ,MAAM40C,EAAeH,EAAcn4C,QAAO/D,GAAe,aAARA,GAA8B,cAARA,GAA+B,iBAARA,KAE5FkI,OAAQo0C,EAAatd,WACrBA,EAAU/U,WACVA,EAAU8Y,UACVA,EAASpvB,QACTA,EAAO09B,OACPA,GACE3pC,EACJ,IAAI60C,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAZ,EAAc7tC,SAAS,WAAaoiB,EAAa4gB,QAAU5gB,EAAa4gB,OAAO3pC,QAAU40C,EAAcjL,SAAWiL,EAAcjL,OAAO3pC,SACzI60C,GAAiB,GAEfL,EAAc7tC,SAAS,eAAiBoiB,EAAatN,YAAcsN,EAAatN,WAAWC,SAAWk5B,EAAcn5B,aAAem5B,EAAcn5B,WAAWC,UAC9Jo5B,GAAqB,GAEnBN,EAAc7tC,SAAS,eAAiBoiB,EAAauO,aAAevO,EAAauO,WAAW36B,IAAM+3C,KAAkBE,EAActd,aAA2C,IAA7Bsd,EAActd,aAAyBA,IAAeA,EAAW36B,KACnNo4C,GAAqB,GAEnBP,EAAc7tC,SAAS,cAAgBoiB,EAAasS,YAActS,EAAasS,UAAU1+B,IAAM83C,KAAiBG,EAAcvZ,YAAyC,IAA5BuZ,EAAcvZ,YAAwBA,IAAcA,EAAU1+B,KAC3Mq4C,GAAoB,GAElBR,EAAc7tC,SAAS,eAAiBoiB,EAAaxG,aAAewG,EAAaxG,WAAWE,QAAUA,KAAYsG,EAAaxG,WAAWC,QAAUA,KAAYoyB,EAAcryB,aAA2C,IAA7BqyB,EAAcryB,aAAyBA,IAAeA,EAAWE,SAAWF,EAAWC,SACrRyyB,GAAqB,GAEvB,MAAMI,EAAgBzsB,IACf5oB,EAAO4oB,KACZ5oB,EAAO4oB,GAAKoC,UACA,eAARpC,GACE5oB,EAAOoJ,YACTpJ,EAAO4oB,GAAKnG,OAAOjZ,SACnBxJ,EAAO4oB,GAAKpG,OAAOhZ,UAErBorC,EAAchsB,GAAKnG,YAAS/jB,EAC5Bk2C,EAAchsB,GAAKpG,YAAS9jB,EAC5BsB,EAAO4oB,GAAKnG,YAAS/jB,EACrBsB,EAAO4oB,GAAKpG,YAAS9jB,IAEjBsB,EAAOoJ,WACTpJ,EAAO4oB,GAAKjsB,GAAG6M,SAEjBorC,EAAchsB,GAAKjsB,QAAK+B,EACxBsB,EAAO4oB,GAAKjsB,QAAK+B,GACnB,EAEE81C,EAAc7tC,SAAS,SAAW3G,EAAOoJ,YACvCwrC,EAAchqC,OAASme,EAAane,KACtCsqC,GAAkB,GACRN,EAAchqC,MAAQme,EAAane,KAC7CuqC,GAAiB,EAEjBC,GAAiB,GAGrBT,EAAat8C,SAAQC,IACnB,GAAIw4C,GAAS8D,EAAct8C,KAASw4C,GAAS/nB,EAAazwB,IACxDN,OAAOsT,OAAOspC,EAAct8C,GAAMywB,EAAazwB,IAClC,eAARA,GAAgC,eAARA,GAAgC,cAARA,KAAwB,YAAaywB,EAAazwB,KAASywB,EAAazwB,GAAK4T,SAChImpC,EAAc/8C,OAEX,CACL,MAAMg9C,EAAWvsB,EAAazwB,IACZ,IAAbg9C,IAAkC,IAAbA,GAAgC,eAARh9C,GAAgC,eAARA,GAAgC,cAARA,EAKhGs8C,EAAct8C,GAAOywB,EAAazwB,IAJjB,IAAbg9C,GACFD,EAAc/8C,EAKpB,KAEEq8C,EAAahuC,SAAS,gBAAkBmuC,GAAsB90C,EAAOyb,YAAczb,EAAOyb,WAAWC,SAAWk5B,EAAcn5B,YAAcm5B,EAAcn5B,WAAWC,UACvK1b,EAAOyb,WAAWC,QAAUk5B,EAAcn5B,WAAWC,SAEnD84B,EAAc7tC,SAAS,aAAe+C,GAAUuC,GAAW2oC,EAAc3oC,QAAQC,SACnFD,EAAQvC,OAASA,EACjBuC,EAAQnB,QAAO,IACN0pC,EAAc7tC,SAAS,YAAcsF,GAAW2oC,EAAc3oC,QAAQC,UAC3ExC,IAAQuC,EAAQvC,OAASA,GAC7BuC,EAAQnB,QAAO,IAEb0pC,EAAc7tC,SAAS,aAAe+C,GAAUkrC,EAAchqC,OAChEwqC,GAAiB,GAEfP,GACkBlL,EAAOzlB,QACVylB,EAAO7+B,QAAO,GAE7BgqC,IACF90C,EAAOyb,WAAWC,QAAUk5B,EAAcn5B,WAAWC,SAEnDq5B,KACE/0C,EAAOoJ,WAAesrC,GAAwC,iBAAjBA,IAC/CA,EAAen6C,SAASnB,cAAc,OACtCs7C,EAAajyC,UAAUC,IAAI,qBAC3BgyC,EAAa3N,KAAKrkC,IAAI,cACtB1C,EAAOrD,GAAGo2C,YAAY2B,IAEpBA,IAAcE,EAActd,WAAW36B,GAAK+3C,GAChDpd,EAAWpT,OACXoT,EAAWuD,SACXvD,EAAWxsB,UAETkqC,KACEh1C,EAAOoJ,WAAeqrC,GAAsC,iBAAhBA,IAC9CA,EAAcl6C,SAASnB,cAAc,OACrCq7C,EAAYhyC,UAAUC,IAAI,oBAC1B+xC,EAAY1N,KAAKrkC,IAAI,aACrB1C,EAAOrD,GAAGo2C,YAAY0B,IAEpBA,IAAaG,EAAcvZ,UAAU1+B,GAAK83C,GAC9CpZ,EAAUnX,OACVmX,EAAUtwB,aACVswB,EAAUtlB,gBAERk/B,IACEj1C,EAAOoJ,YACJoZ,GAA4B,iBAAXA,IACpBA,EAASjoB,SAASnB,cAAc,OAChCopB,EAAO/f,UAAUC,IAAI,sBACrB8f,EAAOyJ,UAAYjsB,EAAO8qB,OAAO/yB,YAAYq7C,cAC7C5wB,EAAOukB,KAAKrkC,IAAI,eAChB1C,EAAOrD,GAAGo2C,YAAYvwB,IAEnBC,GAA4B,iBAAXA,IACpBA,EAASloB,SAASnB,cAAc,OAChCqpB,EAAOhgB,UAAUC,IAAI,sBACrB+f,EAAOwJ,UAAYjsB,EAAO8qB,OAAO/yB,YAAYs7C,cAC7C5wB,EAAOskB,KAAKrkC,IAAI,eAChB1C,EAAOrD,GAAGo2C,YAAYtwB,KAGtBD,IAAQoyB,EAAcryB,WAAWC,OAASA,GAC1CC,IAAQmyB,EAAcryB,WAAWE,OAASA,GAC9CF,EAAW2B,OACX3B,EAAWzX,UAET0pC,EAAc7tC,SAAS,oBACzB3G,EAAOuX,eAAiBwR,EAAaxR,gBAEnCi9B,EAAc7tC,SAAS,oBACzB3G,EAAOwX,eAAiBuR,EAAavR,gBAEnCg9B,EAAc7tC,SAAS,cACzB3G,EAAO4mB,gBAAgBmC,EAAa/R,WAAW,IAE7Ck+B,GAAmBE,IACrBp1C,EAAO4b,eAELu5B,GAAkBC,IACpBp1C,EAAO6Z,aAET7Z,EAAO8K,QACT,CAgTIyqC,CAAa,CACXv1C,OAAQ/E,KAAK+E,OACb+oB,aAAc9tB,KAAK8tB,aACnByrB,cAAe,CAACxD,GAAWS,OACV,eAAbA,GAA6B1oB,EAAa0oB,GAAY,CACxDhvB,OAAQ,sBACRD,OAAQ,uBACN,CAAC,KACY,eAAbivB,GAA6B1oB,EAAa0oB,GAAY,CACxDiD,aAAc,sBACZ,CAAC,KACY,cAAbjD,GAA4B1oB,EAAa0oB,GAAY,CACvDgD,YAAa,qBACX,CAAC,GAET,CACA,wBAAAe,CAAyBxD,EAAMyD,EAAWH,GACnCr6C,KAAKma,cACQ,SAAdqgC,GAAqC,OAAbH,IAC1BA,GAAW,GAEbr6C,KAAKs5C,yBAAyBvC,EAAMsD,GACtC,CACA,6BAAWI,GAET,OADc7E,GAAWx0C,QAAOs5C,GAASA,EAAMhvC,SAAS,OAAMrJ,KAAIq4C,GAASA,EAAMn4C,QAAQ,UAAUwS,GAAK,IAAIA,MAAKxS,QAAQ,IAAK,IAAIiJ,eAEpI,EAEFoqC,GAAWx4C,SAAQw5C,IACC,SAAdA,IACJA,EAAYA,EAAUr0C,QAAQ,IAAK,IACnCxF,OAAOqpC,eAAe2R,GAAgB50C,UAAWyzC,EAAW,CAC1D+D,cAAc,EACd,GAAAtU,GACE,OAAQrmC,KAAK8tB,cAAgB,CAAC,GAAG8oB,EACnC,EACA,GAAAtQ,CAAIja,GACGrsB,KAAK8tB,eAAc9tB,KAAK8tB,aAAe,CAAC,GAC7C9tB,KAAK8tB,aAAa8oB,GAAavqB,EAC1BrsB,KAAKma,aACVna,KAAKs5C,yBAAyB1C,EAAWvqB,EAC3C,IACA,IAEJ,MAAMuuB,WAAoBvD,GACxB,WAAAv6C,GACEk7C,QACAh4C,KAAKi4C,aAAa,CAChBC,KAAM,QAEV,CACA,MAAAtY,GACE,MAAMib,EAAO76C,KAAK66C,MAAsC,KAA9B76C,KAAKka,aAAa,SAAgD,SAA9Bla,KAAKka,aAAa,QAGhF,GAFAq9B,GAASv3C,KAAK6G,WA7OK,0lEA8OnB7G,KAAK6G,WAAWixC,YAAYx4C,SAASnB,cAAc,SAC/C08C,EAAM,CACR,MAAMC,EAAUx7C,SAASnB,cAAc,OACvC28C,EAAQtzC,UAAUC,IAAI,yBACtBqzC,EAAQhP,KAAKrkC,IAAI,aACjBzH,KAAK6G,WAAWixC,YAAYgD,EAC9B,CACF,CACA,UAAA5B,GACEl5C,KAAK4/B,QACP,CACA,iBAAAwZ,GACEp5C,KAAKk5C,YACP,EASoB,oBAAXn4C,SACTA,OAAOg6C,4BAA8Bx1C,IACnCqwC,GAAW5sC,QAAQzD,EAAO,GANN,oBAAXxE,SACNA,OAAOi6C,eAAe3U,IAAI,qBAAqBtlC,OAAOi6C,eAAeC,OAAO,mBAAoBlD,IAChGh3C,OAAOi6C,eAAe3U,IAAI,iBAAiBtlC,OAAOi6C,eAAeC,OAAO,eAAgBL,IAUhG,CA74TD"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-element-bundle.min.mjs b/build/assets/js/vendor/swiper/swiper-element-bundle.min.mjs new file mode 100644 index 0000000..cec9f91 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import"./swiper-bundle.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";import{S as Swiper}from"./shared/swiper-core.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,i)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(i),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=i,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,i=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=i.length?Math.max(...i)+1:0,this.rendered)if(this.slideSlots>e)for(let i=e;i=0;i-=1)i>this.slideSlots&&e[i].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const i=document.createElement("link");i.rel="stylesheet",i.href=e,this.shadowRoot.appendChild(i)}));const i=document.createElement("div");i.classList.add("swiper"),i.part="container",i.innerHTML=`\n \n
    \n \n ${Array.from({length:this.slideSlots}).map(((e,i)=>`\n \n \n \n `)).join("")}\n
    \n \n ${needsNavigation(this.passedParams)?`\n
    ${this.constructor.prevButtonSvg}
    \n
    ${this.constructor.nextButtonSvg}
    \n `:""}\n ${needsPagination(this.passedParams)?'\n
    \n ':""}\n ${needsScrollbar(this.passedParams)?'\n
    \n ':""}\n `,this.shadowRoot.appendChild(i),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:i,passedParams:t}=getParams(this);this.swiperParams=i,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...i.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...i,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const s=i.eventsPrefix?`${i.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(i){this.passedParams||(this.passedParams={}),this.passedParams[e]=i,this.initialized&&this.updateSwiperOnPropChange(e,i)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element-bundle.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-element-bundle.min.mjs.map b/build/assets/js/vendor/swiper/swiper-element-bundle.min.mjs.map new file mode 100644 index 0000000..04551bb --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.mjs.mjs","names":["paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","Swiper","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","observeSlideChildren","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-element-bundle.mjs b/build/assets/js/vendor/swiper/swiper-element-bundle.mjs new file mode 100644 index 0000000..5ec4dbf --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element-bundle.mjs @@ -0,0 +1,287 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import './swiper-bundle.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; +import { S as Swiper } from './shared/swiper-core.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
    + + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
    + + ${needsNavigation(this.passedParams) ? ` +
    ${this.constructor.prevButtonSvg}
    +
    ${this.constructor.nextButtonSvg}
    + ` : ''} + ${needsPagination(this.passedParams) ? ` +
    + ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
    + ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/build/assets/js/vendor/swiper/swiper-element.d.ts b/build/assets/js/vendor/swiper/swiper-element.d.ts new file mode 100644 index 0000000..4100356 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element.d.ts @@ -0,0 +1,444 @@ +// @ts-ignore +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const register: () => void; + +// prettier-ignore +interface SwiperContainerEventMap extends Omit { + /** + * Event will be fired in when autoplay started + */ + autoplaystart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when autoplay stopped + */ + autoplaystop: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay pause + */ + autoplaypause: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay resume + */ + autoplayresume: CustomEvent<[swiper: Swiper]>; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplaytimeleft: CustomEvent<[swiper: Swiper, timeLeft: number, percentage: number]>; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on window hash change + */ + hashchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper updates the hash + */ + hashset: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on key press + */ + keypress: CustomEvent<[swiper: Swiper, keyCode: string]>;/** + * Event will be fired on mousewheel scroll + */ + scroll: CustomEvent<[swiper: Swiper, event: WheelEvent]>;/** + * Event will be fired on navigation hide + */ + navigationhide: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation show + */ + navigationshow: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation prev button click + */ + navigationprev: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation next button click + */ + navigationnext: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired after pagination rendered + */ + paginationrender: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired when pagination updated + */ + paginationupdate: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired on pagination hide + */ + paginationhide: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on pagination show + */ + paginationshow: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbardragstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbardragmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbardragend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>;/** + * Event will be fired on zoom change + */ + zoomchange: CustomEvent<[swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>; + + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: CustomEvent<[false, + * // other parameters + * }]>; + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: CustomEvent<[{ + * init: function { + * // do something + * }, + * } + * })]>; + * ``` + */ + init: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before Swiper destroyed + */ + beforedestroy: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesupdated: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when currently active slide is changed + */ + slidechange: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slidechangetransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slidechangetransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slidenexttransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slidenexttransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slideprevtransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slideprevtransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of transition. + */ + transitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after transition. + */ + transitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchmoveopposite: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + slidermove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubletap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: CustomEvent<[swiper: Swiper, progress: number]>; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachbeginning: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper reach last slide + */ + reachend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + settranslate: CustomEvent<[swiper: Swiper, translate: number]>; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + settransition: CustomEvent<[swiper: Swiper, transition: number]>; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerupdate: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before "loop fix" + */ + beforeloopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after "loop fix" + */ + loopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: CustomEvent<[swiper: Swiper, breakpointParams: SwiperOptions]>; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + + + /** + * Event will fired on active index change + */ + activeindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on snap index change + */ + snapindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on real index change + */ + realindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right after initialization + */ + afterinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right before initialization + */ + beforeinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before resize handler + */ + beforeresize: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before slide change transition start + */ + beforeslidechangestart: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before transition start + */ + beforetransitionstart: CustomEvent<[swiper: Swiper, speed: number, internal: any]>; // what is internal? + /** + * Event will fired on direction change + */ + changedirection: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleclick: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + /** + * Event will be fired on swiper destroy + */ + destroy: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on momentum bounce + */ + momentumbounce: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideresettransitionstart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideresettransitionend: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired with first touch/drag move + */ + sliderfirstmove: CustomEvent<[swiper: Swiper, event: TouchEvent]>; + /** + * Event will be fired when number of slides has changed + */ + slideslengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when slides grid has changed + */ + slidesgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when snap grid has changed + */ + snapgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired after swiper.update() call + */ + update: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: CustomEvent<[swiper: Swiper]>; + +} + +interface SwiperContainer extends HTMLElement {} +interface SwiperContainer extends SwiperOptions { + swiper: Swiper; + initialize: () => void; + injectStyles: string[]; + injectStylesUrls: string[]; + eventsPrefix: string; + addEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +interface SwiperSlide extends HTMLElement { + lazy: string | boolean; +} + +declare global { + interface HTMLElementTagNameMap { + 'swiper-container': SwiperContainer; + 'swiper-slide': SwiperSlide; + } +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/build/assets/js/vendor/swiper/swiper-element.js b/build/assets/js/vendor/swiper/swiper-element.js new file mode 100644 index 0000000..2f60842 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element.js @@ -0,0 +1,4897 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + return { + isSafari: needPerspectiveFix || isSafari(), + needPerspectiveFix, + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + slidesPrepended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
    + + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
    + + ${needsNavigation(this.passedParams) ? ` +
    ${this.constructor.prevButtonSvg}
    +
    ${this.constructor.nextButtonSvg}
    + ` : ''} + ${needsPagination(this.passedParams) ? ` +
    + ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
    + ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/build/assets/js/vendor/swiper/swiper-element.min.js b/build/assets/js/vendor/swiper/swiper-element.min.js new file mode 100644 index 0000000..6e94f56 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function h(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function f(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let b,S,T;function y(){return b||(b=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),b}function x(e){return void 0===e&&(e={}),S||(S=function(e){let{userAgent:t}=void 0===e?{}:e;const s=y(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!f&&(o.os="android",o.android=!0),(p||h||u)&&(o.os="ios",o.ios=!0),o}(e)),S}function E(){return T||(T=function(){const e=n();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,i]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&i<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),T}var C={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const P=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},M=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},k=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&M(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&M(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?x=parseFloat(x.replace("%",""))/100*n:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const M=s.grid&&s.grid.rows>1&&e.grid;let k;M?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-n;f=f.map((e=>e<=0?-b:e>t?t+S:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(x||0)})),e-=x,e{f[s]=e-t})),m.forEach(((e,s)=>{m[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:f,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),f.length!==T&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==y&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let o=s.spaceBetween;"string"==typeof o&&o.indexOf("%")>=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&h<=t.size||u<=0&&h>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),f&&i[e].classList.add(s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(l.classList.add(s.slideActiveClass),a?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&k(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(h?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let b;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),b=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=s}))):f[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,b),0===t?n.transitionEnd(s,b):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,b))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this,n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let i=r.params.slidesPerView;"auto"===i?i=r.slidesPerViewDynamic():(i=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r)return i;let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l)return i;const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map((e=>p(e)));let f=n[h.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var _={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{h(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):y=n;const x="next"===i||!i,E="prev"===i||!i;let C=0,P=0;const M=b?Math.ceil(d.length/h.grid.rows):d.length,k=(b?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(k=0;t-=1)d[t].column===e&&S.push(t)}else S.push(M-t-1)}}else if(k+v>M-w){P=Math.max(k-(M-2*w),g);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():b&&(S.length>0&&E||T.length>0&&x)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),h.watchSlidesProgress&&l.updateSlidesOffset(),s)if(S.length>0&&E){if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y+C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y+C,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=b?S.length/h.grid.rows:S.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(T.length>0&&x)if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y-P]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y-P,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=b?T.length/h.grid.rows:T.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function A(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function G(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void A(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(p))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!A(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function D(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const b=s.params.loop&&!n.cssMode,S="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(b&&S&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&b&&S&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let T=!0,y=n.resistanceRatio;if(n.touchReleaseOnEdges&&(y=0),v>0?(b&&S&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(T=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**y))):v<0&&(b&&S&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,b=null;n.rewind&&(t.isBeginning?b=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const S=(f-c[v])/g,T=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(S>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+T):t.slideTo(v)),"prev"===t.swipeDirection&&(S>1-n.longSwipesRatio?t.slideTo(v+T):null!==b&&S<0&&Math.abs(S)>n.longSwipesRatio?t.slideTo(b):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+T):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+T),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:v))}}function N(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function B(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function $(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function F(e){const t=this;P(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function j(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const R=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",N,!0):e[c]("observerUpdate",N,!0),n[d]("load",e.onLoad,{capture:!0})};const H=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var W={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function q(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const Y={eventsEmitter:C,update:L,translate:z,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),I({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),I({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:O,loop:_,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=G.bind(e),e.onTouchMove=D.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=j.bind(e),t.cssMode&&(e.onScroll=$.bind(e)),e.onClick=B.bind(e),e.onLoad=F.bind(e),R(e,"on")},detachEvents:function(){R(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=H(e,i),d=H(e,o),p=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u),f=i.loop;u&&s&&e.changeDirection(),c(e.params,o);const m=e.params.enabled,v=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(h?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!f&&v?(e.loopCreate(t),e.updateSlides()):f&&!v&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},X={};class U{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new U(i))})),e}const o=this;o.__swiper__=!0,o.support=y(),o.device=x({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:q(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},W,l);return o.params=c({},d,X,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(h(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?i[o].swiperSlideSize:0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&P(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?P(t,e):e.addEventListener("load",(e=>{P(t,e.target)}))})),k(t),t.initialized=!0,k(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttribute("style"),n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(X,e)}static get extendedDefaults(){return X}static get defaults(){return W}static installModule(e){U.prototype.__modules__||(U.prototype.__modules__=[]);const t=U.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>U.installModule(e))),U):(U.installModule(e),U)}}Object.keys(Y).forEach((e=>{Object.keys(Y[e]).forEach((t=>{U.prototype[t]=Y[e][t]}))})),U.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]);const K=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function Z(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function J(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:Z(t[s])&&Z(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:J(e[s],t[s]):e[s]=t[s]}))}function Q(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const ee=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},te=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function se(e,t,s){const i={},r={};J(i,W);const n=[...K,"on"],a=n.map((e=>e.replace(/_/,"")));n.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(r[t]=e[t])}));const o=[...e.attributes];return"string"==typeof t&&void 0!==s&&o.push({name:t,value:Z(s)?{...s}:s}),o.forEach((e=>{const t=te.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=Q(t),i=Q(e.name.split(`${t}-`)[1]);void 0===r[s]&&(r[s]={}),!0===r[s]&&(r[s]={enabled:!0}),r[s][i]=ee(e.value)}else{const t=Q(e.name);if(!a.includes(t))return;const s=ee(e.value);r[t]&&te.includes(e.name)&&!Z(s)?(r[t].constructor!==Object&&(r[t]={}),r[t].enabled=!!s):r[t]=s}})),J(i,r),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:r}}const ie=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}";const re="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,ne='\n ',ae=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class oe extends re{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return ne}static get prevButtonSvg(){return ne.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[ie,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&ae(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
    \n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
    \n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
    ${this.constructor.prevButtonSvg}
    \n
    ${this.constructor.nextButtonSvg}
    \n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
    \n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
    \n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=se(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new U(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var r=arguments.length,n=new Array(r>1?r-1:0),a=1;a"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:h,virtual:f,thumbs:m}=t;let v,g,w,b,S,T,y,x;r.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(v=!0),r.includes("controller")&&i.controller&&i.controller.control&&c.controller&&!c.controller.control&&(g=!0),r.includes("pagination")&&i.pagination&&(i.pagination.el||l)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),r.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||o)&&(c.scrollbar||!1===c.scrollbar)&&h&&!h.el&&(b=!0),r.includes("navigation")&&i.navigation&&(i.navigation.prevEl||a)&&(i.navigation.nextEl||n)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const E=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};r.includes("loop")&&t.isElement&&(c.loop&&!i.loop?T=!0:!c.loop&&i.loop?y=!0:x=!0),d.forEach((e=>{if(Z(c[e])&&Z(i[e]))Object.assign(c[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||E(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=i[e]:!1===t&&E(e)}})),d.includes("controller")&&!g&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),r.includes("children")&&s&&f&&c.virtual.enabled?(f.slides=s,f.update(!0)):r.includes("virtual")&&f&&c.virtual.enabled&&(s&&(f.slides=s),f.update(!0)),r.includes("children")&&s&&c.loop&&(x=!0),v&&m.init()&&m.update(!0);g&&(t.controller.control=c.controller.control),w&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-pagination"),l.part.add("pagination"),t.el.appendChild(l)),l&&(c.pagination.el=l),p.init(),p.render(),p.update()),b&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-scrollbar"),o.part.add("scrollbar"),t.el.appendChild(o)),o&&(c.scrollbar.el=o),h.init(),h.updateSize(),h.setTranslate()),S&&(t.isElement&&(n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-next"),n.innerHTML=t.hostEl.constructor.nextButtonSvg,n.part.add("button-next"),t.el.appendChild(n)),a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-button-prev"),a.innerHTML=t.hostEl.constructor.prevButtonSvg,a.part.add("button-prev"),t.el.appendChild(a))),n&&(c.navigation.nextEl=n),a&&(c.navigation.prevEl=a),u.init(),u.update()),r.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),r.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),r.includes("direction")&&t.changeDirection(i.direction,!1),(T||x)&&t.loopDestroy(),(y||x)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[Q(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return K.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}K.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(oe.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class le extends re{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(ae(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{K.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",oe),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",le))}(); +//# sourceMappingURL=swiper-element.min.js.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-element.min.js.map b/build/assets/js/vendor/swiper/swiper-element.min.js.map new file mode 100644 index 0000000..74b7cda --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","slideEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","push","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","parentElement","elementParents","disconnect","paramsList","isObject","extend","attrToProp","attrName","l","toUpperCase","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","scrollbar","pagination","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","textContent","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","render","localStyles","linkEl","part","innerHTML","needsPagination","needsScrollbar","initialize","_this","detail","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","defineProperty","configurable","get","set","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-element.min.mjs b/build/assets/js/vendor/swiper/swiper-element.min.mjs new file mode 100644 index 0000000..45d547a --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,s)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(s),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=s,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,s=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=s.length?Math.max(...s)+1:0,this.rendered)if(this.slideSlots>e)for(let s=e;s=0;s-=1)s>this.slideSlots&&e[s].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const s=document.createElement("link");s.rel="stylesheet",s.href=e,this.shadowRoot.appendChild(s)}));const s=document.createElement("div");s.classList.add("swiper"),s.part="container",s.innerHTML=`\n \n
    \n \n ${Array.from({length:this.slideSlots}).map(((e,s)=>`\n \n \n \n `)).join("")}\n
    \n \n ${needsNavigation(this.passedParams)?`\n
    ${this.constructor.prevButtonSvg}
    \n
    ${this.constructor.nextButtonSvg}
    \n `:""}\n ${needsPagination(this.passedParams)?'\n
    \n ':""}\n ${needsScrollbar(this.passedParams)?'\n
    \n ':""}\n `,this.shadowRoot.appendChild(s),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:s,passedParams:t}=getParams(this);this.swiperParams=s,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...s.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...s,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const i=s.eventsPrefix?`${s.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(s){this.passedParams||(this.passedParams={}),this.passedParams[e]=s,this.initialized&&this.updateSwiperOnPropChange(e,s)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-element.min.mjs.map b/build/assets/js/vendor/swiper/swiper-element.min.mjs.map new file mode 100644 index 0000000..b4913bc --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.mjs.mjs","names":["Swiper","paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","observeSlideChildren","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper-element.mjs b/build/assets/js/vendor/swiper/swiper-element.mjs new file mode 100644 index 0000000..caa3d8f --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-element.mjs @@ -0,0 +1,286 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
    + + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
    + + ${needsNavigation(this.passedParams) ? ` +
    ${this.constructor.prevButtonSvg}
    +
    ${this.constructor.nextButtonSvg}
    + ` : ''} + ${needsPagination(this.passedParams) ? ` +
    + ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
    + ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/build/assets/js/vendor/swiper/swiper-react.d.ts b/build/assets/js/vendor/swiper/swiper-react.d.ts new file mode 100644 index 0000000..002d8de --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-react.d.ts @@ -0,0 +1,501 @@ +import * as React from 'react'; + +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +type SwiperProps = Omit< + React.HTMLAttributes, + | 'onProgress' + | 'onClick' + | 'onTouchEnd' + | 'onTouchMove' + | 'onTouchStart' + | 'onTransitionEnd' + | 'onKeyPress' + | 'onDoubleClick' + | 'onScroll' + | 'onResize' +> & + SwiperOptions & { + /** + * Swiper container tag + * + * @default 'div' + */ + tag?: string; + + /** + * Swiper wrapper tag + * + * @default 'div' + */ + wrapperTag?: string; + + /** + * Get Swiper instance + */ + onSwiper?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in when autoplay started + */ + onAutoplayStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + onAutoplayStop?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + onAutoplayPause?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + onAutoplayResume?: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + onAutoplayTimeLeft?: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + onAutoplay?: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + onHashChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + onHashSet?: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + onKeyPress?: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired on navigation hide + */ + onNavigationHide?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + onNavigationShow?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + onNavigationPrev?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + onNavigationNext?: (swiper: SwiperClass) => void;/** + * Event will be fired after pagination rendered + */ + onPaginationRender?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + onPaginationUpdate?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + onPaginationHide?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + onPaginationShow?: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + onScrollbarDragStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + onScrollbarDragMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + onScrollbarDragEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + onInit?: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + onBeforeDestroy?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + onSlidesUpdated?: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + onSlideChange?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + onSlideChangeTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + onSlideChangeTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + onSlideNextTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + onSlideNextTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + onSlidePrevTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + onSlidePrevTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + onTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + onTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + onTouchStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + onTouchMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + onTouchMoveOpposite?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + onProgress?: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + onReachBeginning?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + onReachEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + onToEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + onFromEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + onSetTranslate?: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + onSetTransition?: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + onResize?: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + onObserverUpdate?: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + onBeforeLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + onLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + onBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + onActiveIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + onSnapIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + onRealIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + onAfterInit?: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + onBeforeInit?: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + onBeforeResize?: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + onBeforeSlideChangeStart?: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + onBeforeTransitionStart?: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + onChangeDirection?: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + onDoubleClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + onDestroy?: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + onMomentumBounce?: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + onOrientationchange?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + onSlideResetTransitionStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + onSlideResetTransitionEnd?: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + onSliderFirstMove?: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + onSlidesLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + onSlidesGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + onSnapGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + onUpdate?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + onLock?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + onUnlock?: (swiper: SwiperClass) => void; + + }; + +interface SlideData { + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +} + +type SwiperSlideProps = Omit, 'children'> & { + /** + * Slide tag + * + * @default 'div' + */ + tag?: string; + + /** + * Enables additional wrapper required for zoom mode + * + * @default false + */ + zoom?: boolean; + + /** + * Adds lazy preloader to the slide + * + * @default false + */ + lazy?: boolean; + + /** + * Slide's index in slides array/collection + * + * @default false + */ + virtualIndex?: number; + + /** + * Slide's child element or render function + * + * @default undefined + */ + children?: React.ReactNode | ((slideData: SlideData) => React.ReactNode); +}; + +interface SwiperRef extends React.HTMLAttributes { + swiper: SwiperClass; +} + +declare const Swiper: React.FunctionComponent< + React.RefAttributes & React.PropsWithChildren +>; +declare const SwiperSlide: React.FunctionComponent; + +declare const useSwiper: () => SwiperClass; +declare const useSwiperSlide: () => SlideData; + +export { + Swiper, + SwiperSlide, + SwiperProps, + SwiperSlideProps, + SwiperRef, + useSwiper, + useSwiperSlide, + SwiperClass, +}; diff --git a/build/assets/js/vendor/swiper/swiper-react.mjs b/build/assets/js/vendor/swiper/swiper-react.mjs new file mode 100644 index 0000000..5f5e395 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-react.mjs @@ -0,0 +1,394 @@ +/** + * Swiper React 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs'; +import { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs'; + +function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} + +function isChildSwiperSlide(child) { + return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide'); +} +function processChildren(c) { + const slides = []; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.children) { + processChildren(child.props.children).forEach(slide => slides.push(slide)); + } + }); + return slides; +} +function getChildren(c) { + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.slot && slots[child.props.slot]) { + slots[child.props.slot].push(child); + } else if (child.props && child.props.children) { + const foundSlides = processChildren(child.props.children); + if (foundSlides.length > 0) { + foundSlides.forEach(slide => slides.push(slide)); + } else { + slots['container-end'].push(child); + } + } else { + slots['container-end'].push(child); + } + }); + return { + slides, + slots + }; +} + +function renderVirtual(swiper, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiper.isHorizontal() ? { + [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiper.params.loop ? -slides.length : 0; + const loopTo = swiper.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper, + style, + key: `slide-${index}` + }); + }); +} + +function useIsomorphicLayoutEffect(callback, deps) { + // eslint-disable-next-line + if (typeof window === 'undefined') return useEffect(callback, deps); + return useLayoutEffect(callback, deps); +} + +const SwiperSlideContext = /*#__PURE__*/createContext(null); +const useSwiperSlide = () => { + return useContext(SwiperSlideContext); +}; +const SwiperContext = /*#__PURE__*/createContext(null); +const useSwiper = () => { + return useContext(SwiperContext); +}; + +const Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) { + let { + className, + tag: Tag = 'div', + wrapperTag: WrapperTag = 'div', + children, + onSwiper, + ...rest + } = _temp === void 0 ? {} : _temp; + let eventsAssigned = false; + const [containerClasses, setContainerClasses] = useState('swiper'); + const [virtualData, setVirtualData] = useState(null); + const [breakpointChanged, setBreakpointChanged] = useState(false); + const initializedRef = useRef(false); + const swiperElRef = useRef(null); + const swiperRef = useRef(null); + const oldPassedParamsRef = useRef(null); + const oldSlides = useRef(null); + const nextElRef = useRef(null); + const prevElRef = useRef(null); + const paginationElRef = useRef(null); + const scrollbarElRef = useRef(null); + const { + params: swiperParams, + passedParams, + rest: restProps, + events + } = getParams(rest); + const { + slides, + slots + } = getChildren(children); + const onBeforeBreakpoint = () => { + setBreakpointChanged(!breakpointChanged); + }; + Object.assign(swiperParams.on, { + _containerClasses(swiper, classes) { + setContainerClasses(classes); + } + }); + const initSwiper = () => { + // init swiper + Object.assign(swiperParams.on, events); + eventsAssigned = true; + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.current = new Swiper$1(passParams); + if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) { + swiperRef.current.virtual.slides = slides; + const extendWith = { + cache: false, + slides, + renderExternal: setVirtualData, + renderExternalUpdate: false + }; + extend(swiperRef.current.params.virtual, extendWith); + extend(swiperRef.current.originalParams.virtual, extendWith); + } + }; + if (!swiperElRef.current) { + initSwiper(); + } + + // Listen for breakpoints change + if (swiperRef.current) { + swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint); + } + const attachEvents = () => { + if (eventsAssigned || !events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.on(eventName, events[eventName]); + }); + }; + const detachEvents = () => { + if (!events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.off(eventName, events[eventName]); + }); + }; + useEffect(() => { + return () => { + if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint); + }; + }); + + // set initialized flag + useEffect(() => { + if (!initializedRef.current && swiperRef.current) { + swiperRef.current.emitSlidesClasses(); + initializedRef.current = true; + } + }); + + // mount swiper + useIsomorphicLayoutEffect(() => { + if (externalElRef) { + externalElRef.current = swiperElRef.current; + } + if (!swiperElRef.current) return; + if (swiperRef.current.destroyed) { + initSwiper(); + } + mountSwiper({ + el: swiperElRef.current, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + paginationEl: paginationElRef.current, + scrollbarEl: scrollbarElRef.current, + swiper: swiperRef.current + }, swiperParams); + if (onSwiper) onSwiper(swiperRef.current); + // eslint-disable-next-line + return () => { + if (swiperRef.current && !swiperRef.current.destroyed) { + swiperRef.current.destroy(true, false); + } + }; + }, []); + + // watch for params change + useIsomorphicLayoutEffect(() => { + attachEvents(); + const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key); + oldPassedParamsRef.current = passedParams; + oldSlides.current = slides; + if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) { + updateSwiper({ + swiper: swiperRef.current, + slides, + passedParams, + changedParams, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + scrollbarEl: scrollbarElRef.current, + paginationEl: paginationElRef.current + }); + } + return () => { + detachEvents(); + }; + }); + + // update on virtual update + useIsomorphicLayoutEffect(() => { + updateOnVirtualData(swiperRef.current); + }, [virtualData]); + + // bypass swiper instance to slides + function renderSlides() { + if (swiperParams.virtual) { + return renderVirtual(swiperRef.current, slides, virtualData); + } + return slides.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper: swiperRef.current, + swiperSlideIndex: index + }); + }); + } + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: swiperElRef, + className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`) + }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, { + value: swiperRef.current + }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, { + className: wrapperClass(swiperParams.wrapperClass) + }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + ref: prevElRef, + className: "swiper-button-prev" + }), /*#__PURE__*/React.createElement("div", { + ref: nextElRef, + className: "swiper-button-next" + })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: scrollbarElRef, + className: "swiper-scrollbar" + }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: paginationElRef, + className: "swiper-pagination" + }), slots['container-end'])); +}); +Swiper.displayName = 'Swiper'; + +const SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) { + let { + tag: Tag = 'div', + children, + className = '', + swiper, + zoom, + lazy, + virtualIndex, + swiperSlideIndex, + ...rest + } = _temp === void 0 ? {} : _temp; + const slideElRef = useRef(null); + const [slideClasses, setSlideClasses] = useState('swiper-slide'); + const [lazyLoaded, setLazyLoaded] = useState(false); + function updateClasses(_s, el, classNames) { + if (el === slideElRef.current) { + setSlideClasses(classNames); + } + } + useIsomorphicLayoutEffect(() => { + if (typeof swiperSlideIndex !== 'undefined') { + slideElRef.current.swiperSlideIndex = swiperSlideIndex; + } + if (externalRef) { + externalRef.current = slideElRef.current; + } + if (!slideElRef.current || !swiper) { + return; + } + if (swiper.destroyed) { + if (slideClasses !== 'swiper-slide') { + setSlideClasses('swiper-slide'); + } + return; + } + swiper.on('_slideClass', updateClasses); + // eslint-disable-next-line + return () => { + if (!swiper) return; + swiper.off('_slideClass', updateClasses); + }; + }); + useIsomorphicLayoutEffect(() => { + if (swiper && slideElRef.current && !swiper.destroyed) { + setSlideClasses(swiper.getSlideClasses(slideElRef.current)); + } + }, [swiper]); + const slideData = { + isActive: slideClasses.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.indexOf('swiper-slide-next') >= 0 + }; + const renderChildren = () => { + return typeof children === 'function' ? children(slideData) : children; + }; + const onLoad = () => { + setLazyLoaded(true); + }; + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: slideElRef, + className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`), + "data-swiper-slide-index": virtualIndex, + onLoad: onLoad + }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, /*#__PURE__*/React.createElement("div", { + className: "swiper-zoom-container", + "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))); +}); +SwiperSlide.displayName = 'SwiperSlide'; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/build/assets/js/vendor/swiper/swiper-vars.less b/build/assets/js/vendor/swiper/swiper-vars.less new file mode 100644 index 0000000..a068f6d --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-vars.less @@ -0,0 +1 @@ +@themeColor: #007aff; diff --git a/build/assets/js/vendor/swiper/swiper-vars.scss b/build/assets/js/vendor/swiper/swiper-vars.scss new file mode 100644 index 0000000..819dec4 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-vars.scss @@ -0,0 +1 @@ +$themeColor: #007aff !default; diff --git a/build/assets/js/vendor/swiper/swiper-vue.d.ts b/build/assets/js/vendor/swiper/swiper-vue.d.ts new file mode 100644 index 0000000..a55dcbd --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-vue.d.ts @@ -0,0 +1,862 @@ +import type { + A11yOptions, + AutoplayOptions, + ControllerOptions, + CoverflowEffectOptions, + CubeEffectOptions, + FadeEffectOptions, + FlipEffectOptions, + CreativeEffectOptions, + CardsEffectOptions, + HashNavigationOptions, + HistoryOptions, + KeyboardOptions, + MousewheelOptions, + NavigationOptions, + PaginationOptions, + ParallaxOptions, + ScrollbarOptions, + ThumbsOptions, + VirtualOptions, + ZoomOptions, + FreeModeOptions, + GridOptions, +} from './types/index.d.ts'; +import { ComponentOptionsMixin, DefineComponent, PropType, Ref } from 'vue'; +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +declare const Swiper: DefineComponent< + { + tag: { + type: StringConstructor; + default: string; + }; + wrapperTag: { + type: StringConstructor; + default: string; + }; + modules: { + type: ArrayConstructor; + default: undefined; + }; + init: { + type: BooleanConstructor; + default: undefined; + }; + direction: { + type: PropType; + default: SwiperOptions['direction']; + }; + oneWayMovement: { + type: PropType; + default: SwiperOptions['oneWayMovement']; + }; + touchEventsTarget: { + type: PropType; + default: undefined; + }; + initialSlide: { + type: NumberConstructor; + default: undefined; + }; + speed: { type: NumberConstructor; default: undefined }; + cssMode: { type: BooleanConstructor; default: undefined }; + updateOnWindowResize: { + type: BooleanConstructor; + default: undefined; + }; + resizeObserver: { + type: BooleanConstructor; + default: undefined; + }; + nested: { type: BooleanConstructor; default: undefined }; + focusableElements: { + type: StringConstructor; + default: undefined; + }; + width: { type: NumberConstructor; default: undefined }; + height: { type: NumberConstructor; default: undefined }; + preventInteractionOnTransition: { + type: BooleanConstructor; + default: undefined; + }; + userAgent: { type: StringConstructor; default: undefined }; + url: { type: StringConstructor; default: undefined }; + edgeSwipeDetection: { + type: BooleanConstructor | StringConstructor; + default: undefined; + }; + edgeSwipeThreshold: { + type: NumberConstructor; + default: undefined; + }; + autoHeight: { + type: BooleanConstructor; + default: undefined; + }; + setWrapperSize: { + type: BooleanConstructor; + default: undefined; + }; + virtualTranslate: { + type: BooleanConstructor; + default: undefined; + }; + effect: { + type: PropType; + default: undefined; + }; + breakpoints: { + type: PropType; + default: undefined; + }; + spaceBetween: { + type: PropType; + default: undefined; + }; + slidesPerView: { + type: PropType; + default: undefined; + }; + maxBackfaceHiddenSlides: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroup: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupSkip: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupAuto: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlides: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlidesBounds: { + type: BooleanConstructor; + default: undefined; + }; + slidesOffsetBefore: { + type: NumberConstructor; + default: undefined; + }; + slidesOffsetAfter: { + type: NumberConstructor; + default: undefined; + }; + normalizeSlideIndex: { + type: BooleanConstructor; + default: undefined; + }; + centerInsufficientSlides: { + type: BooleanConstructor; + default: undefined; + }; + watchOverflow: { + type: BooleanConstructor; + default: undefined; + }; + roundLengths: { + type: BooleanConstructor; + default: undefined; + }; + touchRatio: { + type: NumberConstructor; + default: undefined; + }; + touchAngle: { + type: NumberConstructor; + default: undefined; + }; + simulateTouch: { + type: BooleanConstructor; + default: undefined; + }; + shortSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipesRatio: { + type: NumberConstructor; + default: undefined; + }; + longSwipesMs: { + type: NumberConstructor; + default: undefined; + }; + followFinger: { + type: BooleanConstructor; + default: undefined; + }; + allowTouchMove: { + type: BooleanConstructor; + default: undefined; + }; + threshold: { type: NumberConstructor; default: undefined }; + touchMoveStopPropagation: { + type: BooleanConstructor; + default: undefined; + }; + touchStartPreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchStartForcePreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchReleaseOnEdges: { + type: BooleanConstructor; + default: undefined; + }; + uniqueNavElements: { + type: BooleanConstructor; + default: undefined; + }; + resistance: { + type: BooleanConstructor; + default: undefined; + }; + resistanceRatio: { + type: NumberConstructor; + default: undefined; + }; + watchSlidesProgress: { + type: BooleanConstructor; + default: undefined; + }; + grabCursor: { + type: BooleanConstructor; + default: undefined; + }; + preventClicks: { + type: BooleanConstructor; + default: undefined; + }; + preventClicksPropagation: { + type: BooleanConstructor; + default: undefined; + }; + slideToClickedSlide: { + type: BooleanConstructor; + default: undefined; + }; + loop: { type: BooleanConstructor; default: undefined }; + loopAddBlankSlides: { type: BooleanConstructor; default: undefined }; + loopAdditionalSlides: { + type: NumberConstructor; + default: undefined; + }; + loopPreventsSliding: { type: BooleanConstructor; default: undefined }; + rewind: { type: BooleanConstructor; default: undefined }; + allowSlidePrev: { + type: BooleanConstructor; + default: undefined; + }; + allowSlideNext: { + type: BooleanConstructor; + default: undefined; + }; + swipeHandler: { + type: BooleanConstructor; + default: undefined; + }; + noSwiping: { + type: BooleanConstructor; + default: undefined; + }; + noSwipingClass: { + type: StringConstructor; + default: undefined; + }; + noSwipingSelector: { + type: StringConstructor; + default: undefined; + }; + passiveListeners: { + type: BooleanConstructor; + default: undefined; + }; + containerModifierClass: { + type: StringConstructor; + default: undefined; + }; + slideClass: { + type: StringConstructor; + default: undefined; + }; + slideActiveClass: { + type: StringConstructor; + default: undefined; + }; + slideVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideFullyVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideBlankClass: { + type: StringConstructor; + default: undefined; + }; + slideNextClass: { + type: StringConstructor; + default: undefined; + }; + slidePrevClass: { + type: StringConstructor; + default: undefined; + }; + wrapperClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloaderClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloadPrevNext: { + type: NumberConstructor; + default: undefined; + }; + runCallbacksOnInit: { + type: BooleanConstructor; + default: undefined; + }; + observer: { type: BooleanConstructor; default: undefined }; + observeParents: { + type: BooleanConstructor; + default: undefined; + }; + observeSlideChildren: { + type: BooleanConstructor; + default: undefined; + }; + a11y: { + type: PropType; + default: undefined; + }; + autoplay: { + type: PropType; + default: undefined; + }; + controller: { + type: PropType; + default: undefined; + }; + coverflowEffect: { + type: PropType; + default: undefined; + }; + cubeEffect: { + type: PropType; + default: undefined; + }; + fadeEffect: { + type: PropType; + default: undefined; + }; + flipEffect: { + type: PropType; + default: undefined; + }; + creativeEffect: { + type: PropType; + default: undefined; + }; + cardsEffect: { + type: PropType; + default: undefined; + }; + hashNavigation: { + type: PropType; + default: undefined; + }; + history: { + type: PropType; + default: undefined; + }; + keyboard: { + type: PropType; + default: undefined; + }; + mousewheel: { + type: PropType; + default: undefined; + }; + navigation: { + type: PropType; + default: undefined; + }; + pagination: { + type: PropType; + default: undefined; + }; + parallax: { + type: PropType; + default: undefined; + }; + scrollbar: { + type: PropType; + default: undefined; + }; + thumbs: { type: PropType; default: undefined }; + virtual: { + type: PropType; + default: undefined; + }; + zoom: { + type: PropType; + default: undefined; + }; + freeMode: { + type: PropType; + default: undefined; + }; + grid: { + type: PropType; + default: undefined; + }; + }, + () => JSX.Element, + unknown, + {}, + {}, + ComponentOptionsMixin, + ComponentOptionsMixin, + { + swiper: (swiper: SwiperClass) => void; + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + hashChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + keyPress: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: SwiperClass) => void;/** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + zoomChange: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: SwiperClass) => void; + + } +>; + +declare const SwiperSlide: DefineComponent<{ + tag: { + type: StringConstructor; + default: string; + }; + swiperRef: { type: PropType; required: false }; + lazy: { type: BooleanConstructor; default: false }; + zoom: { type: BooleanConstructor; default: undefined }; + virtualIndex: { + type: StringConstructor | NumberConstructor; + default: undefined; + }; +}>; + +declare const useSwiper: () => Ref; +declare const useSwiperSlide: () => Ref<{ + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +}>; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/build/assets/js/vendor/swiper/swiper-vue.mjs b/build/assets/js/vendor/swiper/swiper-vue.mjs new file mode 100644 index 0000000..3a95b34 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper-vue.mjs @@ -0,0 +1,816 @@ +/** + * Swiper Vue 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import { h, ref, onUpdated, provide, watch, nextTick, onMounted, onBeforeUnmount, onBeforeUpdate, computed, inject } from 'vue'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, a as getChangedParams, u as updateOnVirtualData, m as mountSwiper } from './shared/update-on-virtual-data.mjs'; +import { e as extend, u as updateSwiper, d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination } from './shared/update-swiper.mjs'; + +function getChildren(originalSlots, slidesRef, oldSlidesRef) { + if (originalSlots === void 0) { + originalSlots = {}; + } + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + const getSlidesFromElements = (els, slotName) => { + if (!Array.isArray(els)) { + return; + } + els.forEach(vnode => { + const isFragment = typeof vnode.type === 'symbol'; + if (slotName === 'default') slotName = 'container-end'; + if (isFragment && vnode.children) { + getSlidesFromElements(vnode.children, slotName); + } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper')) { + slides.push(vnode); + } else if (slots[slotName]) { + slots[slotName].push(vnode); + } + }); + }; + Object.keys(originalSlots).forEach(slotName => { + if (typeof originalSlots[slotName] !== 'function') return; + const els = originalSlots[slotName](); + getSlidesFromElements(els, slotName); + }); + oldSlidesRef.value = slidesRef.value; + slidesRef.value = slides; + return { + slides, + slots + }; +} + +function renderVirtual(swiperRef, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiperRef.value.isHorizontal() ? { + [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiperRef.value.params.loop ? -slides.length : 0; + const loopTo = swiperRef.value.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map(slide => { + if (!slide.props) slide.props = {}; + if (!slide.props.style) slide.props.style = {}; + slide.props.swiperRef = swiperRef; + slide.props.style = style; + return h(slide.type, { + ...slide.props + }, slide.children); + }); +} + +const Swiper = { + name: 'Swiper', + props: { + tag: { + type: String, + default: 'div' + }, + wrapperTag: { + type: String, + default: 'div' + }, + modules: { + type: Array, + default: undefined + }, + init: { + type: Boolean, + default: undefined + }, + direction: { + type: String, + default: undefined + }, + oneWayMovement: { + type: Boolean, + default: undefined + }, + touchEventsTarget: { + type: String, + default: undefined + }, + initialSlide: { + type: Number, + default: undefined + }, + speed: { + type: Number, + default: undefined + }, + cssMode: { + type: Boolean, + default: undefined + }, + updateOnWindowResize: { + type: Boolean, + default: undefined + }, + resizeObserver: { + type: Boolean, + default: undefined + }, + nested: { + type: Boolean, + default: undefined + }, + focusableElements: { + type: String, + default: undefined + }, + width: { + type: Number, + default: undefined + }, + height: { + type: Number, + default: undefined + }, + preventInteractionOnTransition: { + type: Boolean, + default: undefined + }, + userAgent: { + type: String, + default: undefined + }, + url: { + type: String, + default: undefined + }, + edgeSwipeDetection: { + type: [Boolean, String], + default: undefined + }, + edgeSwipeThreshold: { + type: Number, + default: undefined + }, + autoHeight: { + type: Boolean, + default: undefined + }, + setWrapperSize: { + type: Boolean, + default: undefined + }, + virtualTranslate: { + type: Boolean, + default: undefined + }, + effect: { + type: String, + default: undefined + }, + breakpoints: { + type: Object, + default: undefined + }, + spaceBetween: { + type: [Number, String], + default: undefined + }, + slidesPerView: { + type: [Number, String], + default: undefined + }, + maxBackfaceHiddenSlides: { + type: Number, + default: undefined + }, + slidesPerGroup: { + type: Number, + default: undefined + }, + slidesPerGroupSkip: { + type: Number, + default: undefined + }, + slidesPerGroupAuto: { + type: Boolean, + default: undefined + }, + centeredSlides: { + type: Boolean, + default: undefined + }, + centeredSlidesBounds: { + type: Boolean, + default: undefined + }, + slidesOffsetBefore: { + type: Number, + default: undefined + }, + slidesOffsetAfter: { + type: Number, + default: undefined + }, + normalizeSlideIndex: { + type: Boolean, + default: undefined + }, + centerInsufficientSlides: { + type: Boolean, + default: undefined + }, + watchOverflow: { + type: Boolean, + default: undefined + }, + roundLengths: { + type: Boolean, + default: undefined + }, + touchRatio: { + type: Number, + default: undefined + }, + touchAngle: { + type: Number, + default: undefined + }, + simulateTouch: { + type: Boolean, + default: undefined + }, + shortSwipes: { + type: Boolean, + default: undefined + }, + longSwipes: { + type: Boolean, + default: undefined + }, + longSwipesRatio: { + type: Number, + default: undefined + }, + longSwipesMs: { + type: Number, + default: undefined + }, + followFinger: { + type: Boolean, + default: undefined + }, + allowTouchMove: { + type: Boolean, + default: undefined + }, + threshold: { + type: Number, + default: undefined + }, + touchMoveStopPropagation: { + type: Boolean, + default: undefined + }, + touchStartPreventDefault: { + type: Boolean, + default: undefined + }, + touchStartForcePreventDefault: { + type: Boolean, + default: undefined + }, + touchReleaseOnEdges: { + type: Boolean, + default: undefined + }, + uniqueNavElements: { + type: Boolean, + default: undefined + }, + resistance: { + type: Boolean, + default: undefined + }, + resistanceRatio: { + type: Number, + default: undefined + }, + watchSlidesProgress: { + type: Boolean, + default: undefined + }, + grabCursor: { + type: Boolean, + default: undefined + }, + preventClicks: { + type: Boolean, + default: undefined + }, + preventClicksPropagation: { + type: Boolean, + default: undefined + }, + slideToClickedSlide: { + type: Boolean, + default: undefined + }, + loop: { + type: Boolean, + default: undefined + }, + loopedSlides: { + type: Number, + default: undefined + }, + loopPreventsSliding: { + type: Boolean, + default: undefined + }, + rewind: { + type: Boolean, + default: undefined + }, + allowSlidePrev: { + type: Boolean, + default: undefined + }, + allowSlideNext: { + type: Boolean, + default: undefined + }, + swipeHandler: { + type: Boolean, + default: undefined + }, + noSwiping: { + type: Boolean, + default: undefined + }, + noSwipingClass: { + type: String, + default: undefined + }, + noSwipingSelector: { + type: String, + default: undefined + }, + passiveListeners: { + type: Boolean, + default: undefined + }, + containerModifierClass: { + type: String, + default: undefined + }, + slideClass: { + type: String, + default: undefined + }, + slideActiveClass: { + type: String, + default: undefined + }, + slideVisibleClass: { + type: String, + default: undefined + }, + slideFullyVisibleClass: { + type: String, + default: undefined + }, + slideBlankClass: { + type: String, + default: undefined + }, + slideNextClass: { + type: String, + default: undefined + }, + slidePrevClass: { + type: String, + default: undefined + }, + wrapperClass: { + type: String, + default: undefined + }, + lazyPreloaderClass: { + type: String, + default: undefined + }, + lazyPreloadPrevNext: { + type: Number, + default: undefined + }, + runCallbacksOnInit: { + type: Boolean, + default: undefined + }, + observer: { + type: Boolean, + default: undefined + }, + observeParents: { + type: Boolean, + default: undefined + }, + observeSlideChildren: { + type: Boolean, + default: undefined + }, + a11y: { + type: [Boolean, Object], + default: undefined + }, + autoplay: { + type: [Boolean, Object], + default: undefined + }, + controller: { + type: Object, + default: undefined + }, + coverflowEffect: { + type: Object, + default: undefined + }, + cubeEffect: { + type: Object, + default: undefined + }, + fadeEffect: { + type: Object, + default: undefined + }, + flipEffect: { + type: Object, + default: undefined + }, + creativeEffect: { + type: Object, + default: undefined + }, + cardsEffect: { + type: Object, + default: undefined + }, + hashNavigation: { + type: [Boolean, Object], + default: undefined + }, + history: { + type: [Boolean, Object], + default: undefined + }, + keyboard: { + type: [Boolean, Object], + default: undefined + }, + mousewheel: { + type: [Boolean, Object], + default: undefined + }, + navigation: { + type: [Boolean, Object], + default: undefined + }, + pagination: { + type: [Boolean, Object], + default: undefined + }, + parallax: { + type: [Boolean, Object], + default: undefined + }, + scrollbar: { + type: [Boolean, Object], + default: undefined + }, + thumbs: { + type: Object, + default: undefined + }, + virtual: { + type: [Boolean, Object], + default: undefined + }, + zoom: { + type: [Boolean, Object], + default: undefined + }, + grid: { + type: [Object], + default: undefined + }, + freeMode: { + type: [Boolean, Object], + default: undefined + }, + enabled: { + type: Boolean, + default: undefined + } + }, + emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', '_freeModeNoMomentumRelease', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'autoplayPause', 'autoplayResume', 'autoplayTimeLeft', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'breakpointsBase', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick', 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'init', 'keyPress', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'navigationPrev', 'navigationNext', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slidesUpdated', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'unlock', 'update', 'virtualUpdate', 'zoomChange'], + setup(props, _ref) { + let { + slots: originalSlots, + emit + } = _ref; + const { + tag: Tag, + wrapperTag: WrapperTag + } = props; + const containerClasses = ref('swiper'); + const virtualData = ref(null); + const breakpointChanged = ref(false); + const initializedRef = ref(false); + const swiperElRef = ref(null); + const swiperRef = ref(null); + const oldPassedParamsRef = ref(null); + const slidesRef = { + value: [] + }; + const oldSlidesRef = { + value: [] + }; + const nextElRef = ref(null); + const prevElRef = ref(null); + const paginationElRef = ref(null); + const scrollbarElRef = ref(null); + const { + params: swiperParams, + passedParams + } = getParams(props, false); + getChildren(originalSlots, slidesRef, oldSlidesRef); + oldPassedParamsRef.value = passedParams; + oldSlidesRef.value = slidesRef.value; + const onBeforeBreakpoint = () => { + getChildren(originalSlots, slidesRef, oldSlidesRef); + breakpointChanged.value = true; + }; + swiperParams.onAny = function (event) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + emit(event, ...args); + }; + Object.assign(swiperParams.on, { + _beforeBreakpoint: onBeforeBreakpoint, + _containerClasses(swiper, classes) { + containerClasses.value = classes; + } + }); + + // init Swiper + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.value = new Swiper$1(passParams); + if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) { + swiperRef.value.virtual.slides = slidesRef.value; + const extendWith = { + cache: false, + slides: slidesRef.value, + renderExternal: data => { + virtualData.value = data; + }, + renderExternalUpdate: false + }; + extend(swiperRef.value.params.virtual, extendWith); + extend(swiperRef.value.originalParams.virtual, extendWith); + } + onUpdated(() => { + // set initialized flag + if (!initializedRef.value && swiperRef.value) { + swiperRef.value.emitSlidesClasses(); + initializedRef.value = true; + } + // watch for params change + const { + passedParams: newPassedParams + } = getParams(props, false); + const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value, c => c.props && c.props.key); + oldPassedParamsRef.value = newPassedParams; + if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) { + updateSwiper({ + swiper: swiperRef.value, + slides: slidesRef.value, + passedParams: newPassedParams, + changedParams, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + scrollbarEl: scrollbarElRef.value, + paginationEl: paginationElRef.value + }); + } + breakpointChanged.value = false; + }); + provide('swiper', swiperRef); + + // update on virtual update + watch(virtualData, () => { + nextTick(() => { + updateOnVirtualData(swiperRef.value); + }); + }); + + // mount swiper + onMounted(() => { + if (!swiperElRef.value) return; + mountSwiper({ + el: swiperElRef.value, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + paginationEl: paginationElRef.value, + scrollbarEl: scrollbarElRef.value, + swiper: swiperRef.value + }, swiperParams); + emit('swiper', swiperRef.value); + }); + onBeforeUnmount(() => { + if (swiperRef.value && !swiperRef.value.destroyed) { + swiperRef.value.destroy(true, false); + } + }); + + // bypass swiper instance to slides + function renderSlides(slides) { + if (swiperParams.virtual) { + return renderVirtual(swiperRef, slides, virtualData.value); + } + slides.forEach((slide, index) => { + if (!slide.props) slide.props = {}; + slide.props.swiperRef = swiperRef; + slide.props.swiperSlideIndex = index; + }); + return slides; + } + return () => { + const { + slides, + slots + } = getChildren(originalSlots, slidesRef, oldSlidesRef); + return h(Tag, { + ref: swiperElRef, + class: uniqueClasses(containerClasses.value) + }, [slots['container-start'], h(WrapperTag, { + class: wrapperClass(swiperParams.wrapperClass) + }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), needsNavigation(props) && [h('div', { + ref: prevElRef, + class: 'swiper-button-prev' + }), h('div', { + ref: nextElRef, + class: 'swiper-button-next' + })], needsScrollbar(props) && h('div', { + ref: scrollbarElRef, + class: 'swiper-scrollbar' + }), needsPagination(props) && h('div', { + ref: paginationElRef, + class: 'swiper-pagination' + }), slots['container-end']]); + }; + } +}; + +const SwiperSlide = { + name: 'SwiperSlide', + props: { + tag: { + type: String, + default: 'div' + }, + swiperRef: { + type: Object, + required: false + }, + swiperSlideIndex: { + type: Number, + default: undefined, + required: false + }, + zoom: { + type: Boolean, + default: undefined, + required: false + }, + lazy: { + type: Boolean, + default: false, + required: false + }, + virtualIndex: { + type: [String, Number], + default: undefined + } + }, + setup(props, _ref) { + let { + slots + } = _ref; + let eventAttached = false; + const { + swiperRef + } = props; + const slideElRef = ref(null); + const slideClasses = ref('swiper-slide'); + const lazyLoaded = ref(false); + function updateClasses(swiper, el, classNames) { + if (el === slideElRef.value) { + slideClasses.value = classNames; + } + } + onMounted(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onBeforeUpdate(() => { + if (eventAttached || !swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onUpdated(() => { + if (!slideElRef.value || !swiperRef || !swiperRef.value) return; + if (typeof props.swiperSlideIndex !== 'undefined') { + slideElRef.value.swiperSlideIndex = props.swiperSlideIndex; + } + if (swiperRef.value.destroyed) { + if (slideClasses.value !== 'swiper-slide') { + slideClasses.value = 'swiper-slide'; + } + } + }); + onBeforeUnmount(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.off('_slideClass', updateClasses); + }); + const slideData = computed(() => ({ + isActive: slideClasses.value.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 + })); + provide('swiperSlide', slideData); + const onLoad = () => { + lazyLoaded.value = true; + }; + return () => { + return h(props.tag, { + class: uniqueClasses(`${slideClasses.value}`), + ref: slideElRef, + 'data-swiper-slide-index': typeof props.virtualIndex === 'undefined' && swiperRef && swiperRef.value && swiperRef.value.params.loop ? props.swiperSlideIndex : props.virtualIndex, + onLoadCapture: onLoad + }, props.zoom ? h('div', { + class: 'swiper-zoom-container', + 'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined + }, [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]) : [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]); + }; + } +}; + +const useSwiperSlide = () => { + return inject('swiperSlide'); +}; +const useSwiper = () => { + return inject('swiper'); +}; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/build/assets/js/vendor/swiper/swiper.css b/build/assets/js/vendor/swiper/swiper.css new file mode 100644 index 0000000..3f74534 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.css @@ -0,0 +1,228 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ diff --git a/build/assets/js/vendor/swiper/swiper.d.ts b/build/assets/js/vendor/swiper/swiper.d.ts new file mode 100644 index 0000000..07e4e50 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.d.ts @@ -0,0 +1,5 @@ +// @ts-ignore +import Swiper from './types/swiper-class.d.ts'; + +export default Swiper; +export { Swiper }; diff --git a/build/assets/js/vendor/swiper/swiper.js b/build/assets/js/vendor/swiper/swiper.js new file mode 100644 index 0000000..faaec5a --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.js @@ -0,0 +1,4297 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + return { + isSafari: needPerspectiveFix || isSafari(), + needPerspectiveFix, + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + slidesPrepended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + return Swiper; + +})(); diff --git a/build/assets/js/vendor/swiper/swiper.less b/build/assets/js/vendor/swiper/swiper.less new file mode 100644 index 0000000..72068ac --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.less @@ -0,0 +1,251 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +@themeColor: #007aff; + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ + +:root { + --swiper-theme-color: @themeColor; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/build/assets/js/vendor/swiper/swiper.min.css b/build/assets/js/vendor/swiper/swiper.min.css new file mode 100644 index 0000000..5fd6a93 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper.min.js b/build/assets/js/vendor/swiper/swiper.min.js new file mode 100644 index 0000000..0981f95 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function h(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function f(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let S,T,b;function x(){return S||(S=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),S}function y(e){return void 0===e&&(e={}),T||(T=function(e){let{userAgent:t}=void 0===e?{}:e;const s=x(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!f&&(o.os="android",o.android=!0),(p||h||u)&&(o.os="ios",o.ios=!0),o}(e)),T}function E(){return b||(b=function(){const e=n();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,i]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&i<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),b}var M={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const C=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},P=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},I=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&P(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&P(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?y=parseFloat(y.replace("%",""))/100*n:"string"==typeof y&&(y=parseFloat(y)),e.virtualSize=-y,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let I;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+y;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${y}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(y||0)})),e-=y;const t=e-n;f=f.map((e=>e<=0?-S:e>t?t+T:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(y||0)})),e-=y,e{f[s]=e-t})),m.forEach(((e,s)=>{m[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:f,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),f.length!==b&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==x&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let o=s.spaceBetween;"string"==typeof o&&o.indexOf("%")>=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&h<=t.size||u<=0&&h>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),f&&i[e].classList.add(s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(l.classList.add(s.slideActiveClass),a?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&I(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(h?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let S;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),S=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=s}))):f[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,S),0===t?n.transitionEnd(s,S):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,S))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this,n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let i=r.params.slidesPerView;"auto"===i?i=r.slidesPerViewDynamic():(i=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r)return i;let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l)return i;const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map((e=>p(e)));let f=n[h.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var z={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{h(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):x=n;const y="next"===i||!i,E="prev"===i||!i;let M=0,C=0;const P=S?Math.ceil(d.length/h.grid.rows):d.length,I=(S?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(I=0;t-=1)d[t].column===e&&T.push(t)}else T.push(P-t-1)}}else if(I+v>P-w){C=Math.max(I-(P-2*w),g);for(let e=0;e{e.column===t&&b.push(s)})):b.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),y&&b.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():S&&(T.length>0&&E||b.length>0&&y)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),h.watchSlidesProgress&&l.updateSlidesOffset(),s)if(T.length>0&&E){if(void 0===t){const e=l.slidesGrid[x],t=l.slidesGrid[x+M]-e;o?l.setTranslate(l.translate-t):(l.slideTo(x+M,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=S?T.length/h.grid.rows:T.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(b.length>0&&y)if(void 0===t){const e=l.slidesGrid[x],t=l.slidesGrid[x-C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(x-C,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=S?b.length/h.grid.rows:b.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function G(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function D(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void G(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(p))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!G(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const S=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!S||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function _(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const S=s.params.loop&&!n.cssMode,T="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(S&&T&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&S&&T&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let b=!0,x=n.resistanceRatio;if(n.touchReleaseOnEdges&&(x=0),v>0?(S&&T&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(b=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**x))):v<0&&(S&&T&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,S=null;n.rewind&&(t.isBeginning?S=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const T=(f-c[v])/g,b=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(T>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+b):t.slideTo(v)),"prev"===t.swipeDirection&&(T>1-n.longSwipesRatio?t.slideTo(v+b):null!==S&&T<0&&Math.abs(T)>n.longSwipesRatio?t.slideTo(S):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+b):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+b),"prev"===t.swipeDirection&&t.slideTo(null!==S?S:v))}}function N(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function F(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function B(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function $(e){const t=this;C(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function H(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const R=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",N,!0):e[c]("observerUpdate",N,!0),n[d]("load",e.onLoad,{capture:!0})};const j=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var W={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Y(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const q={eventsEmitter:M,update:L,translate:k,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),O({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),O({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:A,loop:z,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=D.bind(e),e.onTouchMove=_.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=H.bind(e),t.cssMode&&(e.onScroll=B.bind(e)),e.onClick=F.bind(e),e.onLoad=$.bind(e),R(e,"on")},detachEvents:function(){R(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=j(e,i),d=j(e,o),p=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u),f=i.loop;u&&s&&e.changeDirection(),c(e.params,o);const m=e.params.enabled,v=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(h?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!f&&v?(e.loopCreate(t),e.updateSlides()):f&&!v&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},X={};class U{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new U(i))})),e}const o=this;o.__swiper__=!0,o.support=x(),o.device=y({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:Y(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},W,l);return o.params=c({},d,X,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(h(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?i[o].swiperSlideSize:0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&C(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?C(t,e):e.addEventListener("load",(e=>{C(t,e.target)}))})),I(t),t.initialized=!0,I(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttribute("style"),n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(X,e)}static get extendedDefaults(){return X}static get defaults(){return W}static installModule(e){U.prototype.__modules__||(U.prototype.__modules__=[]);const t=U.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>U.installModule(e))),U):(U.installModule(e),U)}}return Object.keys(q).forEach((e=>{Object.keys(q[e]).forEach((t=>{U.prototype[t]=q[e][t]}))})),U.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]),U}(); +//# sourceMappingURL=swiper.min.js.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper.min.js.map b/build/assets/js/vendor/swiper/swiper.min.js.map new file mode 100644 index 0000000..c9feb51 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","slideEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","push","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","parentElement","elementParents","disconnect"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper.min.mjs b/build/assets/js/vendor/swiper/swiper.min.mjs new file mode 100644 index 0000000..9bbeaa6 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +export{S as Swiper,S as default}from"./shared/swiper-core.min.mjs"; +//# sourceMappingURL=swiper.min.mjs.map \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper.min.mjs.map b/build/assets/js/vendor/swiper/swiper.min.mjs.map new file mode 100644 index 0000000..6938270 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.mjs.mjs","names":["S"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,YAAaA,iBAAoB"} \ No newline at end of file diff --git a/build/assets/js/vendor/swiper/swiper.mjs b/build/assets/js/vendor/swiper/swiper.mjs new file mode 100644 index 0000000..39b5bc2 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.mjs @@ -0,0 +1,13 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +export { S as Swiper, S as default } from './shared/swiper-core.mjs'; diff --git a/build/assets/js/vendor/swiper/swiper.scss b/build/assets/js/vendor/swiper/swiper.scss new file mode 100644 index 0000000..1fd2163 --- /dev/null +++ b/build/assets/js/vendor/swiper/swiper.scss @@ -0,0 +1,252 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +@import 'swiper-vars.scss'; +@at-root { + @font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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') + format('woff'); + font-weight: 400; + font-style: normal; + } +} +@at-root { + :root { + --swiper-theme-color: #{$themeColor}; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ + } +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/build/assets/js/vendor/swiper/types/index.d.ts b/build/assets/js/vendor/swiper/types/index.d.ts new file mode 100644 index 0000000..e6e0dc4 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/index.d.ts @@ -0,0 +1,6 @@ +// @ts-nocheck +export * from './shared.d.ts'; +export { default as Swiper } from './swiper-class.d.ts'; +export * from './swiper-events.d.ts'; +export * from './swiper-options.d.ts'; +export * from './modules/public-api.d.ts'; diff --git a/build/assets/js/vendor/swiper/types/modules/a11y.d.ts b/build/assets/js/vendor/swiper/types/modules/a11y.d.ts new file mode 100644 index 0000000..134f158 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/a11y.d.ts @@ -0,0 +1,96 @@ +export interface A11yMethods {} + +export interface A11yEvents {} + +export interface A11yOptions { + /** + * Enables A11y + * + * @default true + */ + enabled?: boolean; + + /** + * Message for screen readers for previous button + * + * @default 'Previous slide' + */ + prevSlideMessage?: string; + + /** + * Message for screen readers for next button + * + * @default 'Next slide' + */ + nextSlideMessage?: string; + + /** + * Message for screen readers for previous button when swiper is on first slide + * + * @default 'This is the first slide' + */ + firstSlideMessage?: string; + + /** + * Message for screen readers for next button when swiper is on last slide + * + * @default 'This is the last slide' + */ + lastSlideMessage?: string; + + /** + * Message for screen readers for single pagination bullet + * + * @default 'Go to slide {{index}}' + */ + paginationBulletMessage?: string; + + /** + * CSS class name of A11y notification + * + * @default 'swiper-notification' + */ + notificationClass?: string; + + /** + * Message for screen readers for outer swiper container + * + * @default null + */ + containerMessage?: string | null; + + /** + * Message for screen readers describing the role of outer swiper container + * + * @default null + */ + containerRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the role of slide element + * + * @default null + */ + itemRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the label of slide element + * + * @default '{{index}} / {{slidesLength}}' + */ + slideLabelMessage?: string; + + /** + * Value of swiper slide `role` attribute + * + * @default 'group' + */ + slideRole?: string; + + /** + * Value of `id` attribute to be set on swiper-wrapper. If `null` will be generated automatically + * + * @default null + */ + id?: string | number | null; +} diff --git a/build/assets/js/vendor/swiper/types/modules/autoplay.d.ts b/build/assets/js/vendor/swiper/types/modules/autoplay.d.ts new file mode 100644 index 0000000..4c87488 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/autoplay.d.ts @@ -0,0 +1,133 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface AutoplayMethods { + /** + * Whether autoplay enabled and running + */ + running: boolean; + + /** + * Whether autoplay is paused + */ + paused: boolean; + + /** + * If autoplay is paused, it contains time left (in ms) before transition to next slide + */ + timeLeft: number; + + /** + * Pause autoplay + */ + pause(): void; + + /** + * Resume autoplay + */ + resume(): void; + + /** + * Start autoplay + */ + start(): boolean; + + /** + * Stop autoplay + */ + stop(): boolean; +} + +export interface AutoplayEvents { + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: Swiper) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: Swiper) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: Swiper, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: Swiper) => void; +} + +/** + * Object with autoplay parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + * }); + * ``` + */ +export interface AutoplayOptions { + /** + * Delay between transitions (in ms). If this parameter is not specified, auto play will be disabled + * + * If you need to specify different delay for specific slides you can do it by using + * `data-swiper-autoplay` (in ms) attribute on slide. + * + * @example + * ```html + * + *
    + * ``` + * + * @default 3000 + */ + delay?: number; + + /** + * Enable this parameter and autoplay will be stopped when it reaches last slide (has no effect in loop mode) + * + * @default false + */ + stopOnLastSlide?: boolean; + + /** + * Set to `false` and autoplay will not be disabled after user interactions (swipes), + * it will be restarted every time after interaction + * + * @default true + */ + disableOnInteraction?: boolean; + + /** + * Enables autoplay in reverse direction + * + * @default false + */ + reverseDirection?: boolean; + + /** + * When enabled autoplay will wait for wrapper transition to continue. + * Can be disabled in case of using Virtual Translate when your + * slider may not have transition + * + * @default true + */ + waitForTransition?: boolean; + + /** + * When enabled autoplay will be paused on pointer (mouse) enter over Swiper container. + * + * @default false + */ + pauseOnMouseEnter?: boolean; +} diff --git a/build/assets/js/vendor/swiper/types/modules/controller.d.ts b/build/assets/js/vendor/swiper/types/modules/controller.d.ts new file mode 100644 index 0000000..cf61aef --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/controller.d.ts @@ -0,0 +1,35 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ControllerMethods { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper + */ + control?: Swiper | Swiper[]; +} + +export interface ControllerEvents {} + +export interface ControllerOptions { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper. Also accepts string with CSS selector of Swiper element, or HTMLElement of Swiper element + */ + control?: Swiper | Swiper[] | string | HTMLElement | null; + + /** + * Set to `true` and controlling will be in inverse direction + * + * @default false + */ + inverse?: boolean; + + /** + * Defines a way how to control another slider: slide by slide + * (with respect to other slider's grid) or depending on all slides/container + * (depending on total slider percentage). + * + * @default 'slide' + */ + by?: 'slide' | 'container'; +} diff --git a/build/assets/js/vendor/swiper/types/modules/effect-cards.d.ts b/build/assets/js/vendor/swiper/types/modules/effect-cards.d.ts new file mode 100644 index 0000000..9f688a4 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/effect-cards.d.ts @@ -0,0 +1,33 @@ +export interface CardsEffectMethods {} + +export interface CardsEffectEvents {} + +export interface CardsEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + + /** + * Enables cards rotation + * + * @default true + */ + rotate?: boolean; + + /** + * Rotate angle per slide (in degrees) + * + * @default 2 + */ + perSlideRotate?: number; + + /** + * Offset distance per slide (in px) + * + * @default 8 + */ + perSlideOffset?: number; +} diff --git a/build/assets/js/vendor/swiper/types/modules/effect-coverflow.d.ts b/build/assets/js/vendor/swiper/types/modules/effect-coverflow.d.ts new file mode 100644 index 0000000..847201f --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/effect-coverflow.d.ts @@ -0,0 +1,42 @@ +export interface CoverflowEffectMethods {} + +export interface CoverflowEffectEvents {} + +export interface CoverflowEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Slide rotate in degrees + * + * @default 50 + */ + rotate?: number; + /** + * Stretch space between slides (in px) + * + * @default 0 + */ + stretch?: number; + /** + * Depth offset in px (slides translate in Z axis) + * + * @default 100 + */ + depth?: number; + /** + * Slide scale effect + * + * @default 1 + */ + scale?: number; + /** + * Effect multiplier + * + * @default 1 + */ + modifier?: number; +} diff --git a/build/assets/js/vendor/swiper/types/modules/effect-creative.d.ts b/build/assets/js/vendor/swiper/types/modules/effect-creative.d.ts new file mode 100644 index 0000000..eba8987 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/effect-creative.d.ts @@ -0,0 +1,86 @@ +interface CreativeEffectTransform { + translate?: (string | number)[]; + rotate?: number[]; + opacity?: number; + scale?: number; + shadow?: boolean; + origin?: string; +} + +export interface CreativeEffectMethods {} + +export interface CreativeEffectEvents {} + +export interface CreativeEffectOptions { + /** + * Previous slide transformations. Accepts object of the following type: + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + prev?: CreativeEffectTransform; + /** + * Next slide transformations. + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + next?: CreativeEffectTransform; + + /** + * Limit progress/offset to amount of side slides. If `1`, then slides all slides after prev/next will have same state. If `2`, then all slides after 2nd before/after active will have same state, etc. + * + * @default 1 + */ + limitProgress?: number; + /** + * Splits shadow "opacity" per slide based on `limitProgress` (only if transformation shadows enabled). E.g. setting `limitProgress: 2` and enabling `shadowPerProgress`, will set shadow opacity to `0.5` and `1` on two slides next to active. With this parameter disabled, all slides beside active will have shadow with `1` opacity + * + * @default false + */ + shadowPerProgress?: boolean; + /** + * Allows to multiply slides transformations and opacity. + * + * @default 1 + */ + progressMultiplier?: number; + /** + * Enable this parameter if your custom transforms require 3D transformations (`translateZ`, `rotateX`, `rotateY` ) + * + * @default true + */ + perspective?: boolean; +} diff --git a/build/assets/js/vendor/swiper/types/modules/effect-cube.d.ts b/build/assets/js/vendor/swiper/types/modules/effect-cube.d.ts new file mode 100644 index 0000000..c59535c --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/effect-cube.d.ts @@ -0,0 +1,30 @@ +export interface CubeEffectMethods {} + +export interface CubeEffectEvents {} + +export interface CubeEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Enables main slider shadow + * + * @default true + */ + shadow?: boolean; + /** + * Main shadow offset in px + * + * @default 20 + */ + shadowOffset?: number; + /** + * Main shadow scale ratio + * + * @default 0.94 + */ + shadowScale?: number; +} diff --git a/build/assets/js/vendor/swiper/types/modules/effect-fade.d.ts b/build/assets/js/vendor/swiper/types/modules/effect-fade.d.ts new file mode 100644 index 0000000..1d3123c --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/effect-fade.d.ts @@ -0,0 +1,12 @@ +export interface FadeEffectMethods {} + +export interface FadeEffectEvents {} + +export interface FadeEffectOptions { + /** + * Enables slides cross fade + * + * @default false + */ + crossFade?: boolean; +} diff --git a/build/assets/js/vendor/swiper/types/modules/effect-flip.d.ts b/build/assets/js/vendor/swiper/types/modules/effect-flip.d.ts new file mode 100644 index 0000000..aa672c3 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/effect-flip.d.ts @@ -0,0 +1,18 @@ +export interface FlipEffectMethods {} + +export interface FlipEffectEvents {} + +export interface FlipEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Limit edge slides rotation + * + * @default true + */ + limitRotation?: boolean; +} diff --git a/build/assets/js/vendor/swiper/types/modules/free-mode.d.ts b/build/assets/js/vendor/swiper/types/modules/free-mode.d.ts new file mode 100644 index 0000000..9488642 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/free-mode.d.ts @@ -0,0 +1,64 @@ +export interface FreeModeMethods { + onTouchMove(): void; + onTouchEnd(): void; +} + +export interface FreeModeEvents {} + +export interface FreeModeOptions { + /** + * Whether the free mode is enabled + * + * @default false + */ + enabled?: boolean; + + /** + * If enabled, then slide will keep moving for a while after you release it + * + * @default true + */ + momentum?: boolean; + + /** + * Higher value produces larger momentum distance after you release slider + * + * @default 1 + */ + momentumRatio?: number; + + /** + * Higher value produces larger momentum velocity after you release slider + * + * @default 1 + */ + momentumVelocityRatio?: number; + + /** + * Set to `false` if you want to disable momentum bounce in free mode + * + * @default true + */ + momentumBounce?: boolean; + + /** + * Higher value produces larger momentum bounce effect + * + * @default 1 + */ + momentumBounceRatio?: number; + + /** + * Minimum touchmove-velocity required to trigger free mode momentum + * + * @default 0.02 + */ + minimumVelocity?: number; + + /** + * Set to enabled to enable snap to slides positions in free mode + * + * @default false + */ + sticky?: boolean; +} diff --git a/build/assets/js/vendor/swiper/types/modules/grid.d.ts b/build/assets/js/vendor/swiper/types/modules/grid.d.ts new file mode 100644 index 0000000..070b14a --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/grid.d.ts @@ -0,0 +1,21 @@ +export interface GridMethods {} + +export interface GridEvents {} + +export interface GridOptions { + /** + * Number of slides rows, for multirow layout + * + * @default 1 + */ + rows?: number; + + /** + * Can be `'column'` or `'row'`. Defines how slides should fill rows, by column or by row + * + * @note if used with loop mode make sure number of slides is even specified in loop mode requirements, or enable `loopAddBlankSlides` parameter + * + * @default 'column' + */ + fill?: 'row' | 'column'; +} diff --git a/build/assets/js/vendor/swiper/types/modules/hash-navigation.d.ts b/build/assets/js/vendor/swiper/types/modules/hash-navigation.d.ts new file mode 100644 index 0000000..8b6edfe --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/hash-navigation.d.ts @@ -0,0 +1,38 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface HashNavigationMethods {} + +export interface HashNavigationEvents { + /** + * Event will be fired on window hash change + */ + hashChange: (swiper: Swiper) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: Swiper) => void; +} + +export interface HashNavigationOptions { + /** + * Set to `true` to enable also navigation through slides (when hashnav + * is enabled) by browser history or by setting directly hash on document location + * + * @default false + */ + watchState?: boolean; + + /** + * Works in addition to hashnav to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Designed to be used with Virtual slides when it is impossible to find slide in DOM by hash (e.g. not yet rendered) + * + */ + getSlideIndex?: (swiper: Swiper, hash: string) => number; +} diff --git a/build/assets/js/vendor/swiper/types/modules/history.d.ts b/build/assets/js/vendor/swiper/types/modules/history.d.ts new file mode 100644 index 0000000..a3cea81 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/history.d.ts @@ -0,0 +1,43 @@ +export interface HistoryMethods {} + +export interface HistoryEvents {} + +export interface HistoryOptions { + /** + * Enables History Plugin. + * + * @default false + */ + enabled?: boolean; + + /** + * Swiper page root, useful to specify when you use Swiper history mode not on root website page. + * For example can be `https://my-website.com/` or `https://my-website.com/subpage/` or `/subpage/` + * + * + * @default '' + */ + root?: string; + + /** + * Works in addition to hashnav or history to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Url key for slides + * + * @default 'slides' + */ + key?: string; + + /** + * Keep query parameters when changing browser url. + * + * @default false + */ + keepQuery?: boolean; +} diff --git a/build/assets/js/vendor/swiper/types/modules/index.d.ts b/build/assets/js/vendor/swiper/types/modules/index.d.ts new file mode 100644 index 0000000..d0a1b9b --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/index.d.ts @@ -0,0 +1,53 @@ +import type { SwiperModule } from '../shared.d.ts'; + +declare const A11y: SwiperModule; +declare const Autoplay: SwiperModule; +declare const Controller: SwiperModule; +declare const EffectCoverflow: SwiperModule; +declare const EffectCube: SwiperModule; +declare const EffectFade: SwiperModule; +declare const EffectFlip: SwiperModule; +declare const EffectCreative: SwiperModule; +declare const EffectCards: SwiperModule; +declare const HashNavigation: SwiperModule; +declare const History: SwiperModule; +declare const Keyboard: SwiperModule; +declare const Lazy: SwiperModule; +declare const Mousewheel: SwiperModule; +declare const Navigation: SwiperModule; +declare const Pagination: SwiperModule; +declare const Parallax: SwiperModule; +declare const Scrollbar: SwiperModule; +declare const Thumbs: SwiperModule; +declare const Virtual: SwiperModule; +declare const Zoom: SwiperModule; +declare const FreeMode: SwiperModule; +declare const Grid: SwiperModule; +declare const Manipulation: SwiperModule; + +export { + A11y, + Autoplay, + Controller, + EffectCoverflow, + EffectCube, + EffectFade, + EffectFlip, + EffectCreative, + EffectCards, + HashNavigation, + History, + Keyboard, + Lazy, + Mousewheel, + Navigation, + Pagination, + Parallax, + Scrollbar, + Thumbs, + Virtual, + Zoom, + FreeMode, + Grid, + Manipulation, +}; diff --git a/build/assets/js/vendor/swiper/types/modules/keyboard.d.ts b/build/assets/js/vendor/swiper/types/modules/keyboard.d.ts new file mode 100644 index 0000000..d38dd8d --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/keyboard.d.ts @@ -0,0 +1,46 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface KeyboardMethods { + /** + * Whether the keyboard control is enabled + */ + enabled: boolean; + + /** + * Enable keyboard control + */ + enable(): void; + + /** + * Disable keyboard control + */ + disable(): void; +} + +export interface KeyboardEvents { + /** + * Event will be fired on key press + */ + keyPress: (swiper: Swiper, keyCode: string) => void; +} + +export interface KeyboardOptions { + /** + * Set to `true` to enable keyboard control + * + * @default false + */ + enabled?: boolean; + /** + * When enabled it will control sliders that are currently in viewport + * + * @default true + */ + onlyInViewport?: boolean; + /** + * When enabled it will enable keyboard navigation by Page Up and Page Down keys + * + * @default true + */ + pageUpDown?: boolean; +} diff --git a/build/assets/js/vendor/swiper/types/modules/manipulation.d.ts b/build/assets/js/vendor/swiper/types/modules/manipulation.d.ts new file mode 100644 index 0000000..3366eaf --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/manipulation.d.ts @@ -0,0 +1,70 @@ +export interface ManipulationMethods { + /** + * Add new slides to the end. slides could be + * HTMLElement or HTML string with new slide or + * array with such slides, for example: + * + * @example + * ```js + * appendSlide('
    Slide 10"
    ') + * + * appendSlide([ + * '
    Slide 10"
    ', + * '
    Slide 11"
    ' + * ]); + * ``` + */ + appendSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the beginning. slides could be + * HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * prependSlide('
    Slide 0"
    ') + * + * prependSlide([ + * '
    Slide 1"
    ', + * '
    Slide 2"
    ' + * ]); + * ``` + */ + prependSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the required index. slides could be HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * addSlide(1, '
    Slide 10"
    ') + * + * addSlide(1, [ + * '
    Slide 10"
    ', + * '
    Slide 11"
    ' + * ]); + * ``` + */ + addSlide(index: number, slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Remove selected slides. slideIndex could be a number with slide index to remove or array with indexes. + * + * @example + * ```js + * removeSlide(0); // remove first slide + * removeSlide([0, 1]); // remove first and second slides + * removeAllSlides(); // Remove all slides + * ``` + */ + removeSlide(slideIndex: number | number[]): void; + + /** + * Remove all slides + */ + removeAllSlides(): void; +} + +export interface ManipulationEvents {} + +export interface ManipulationOptions {} diff --git a/build/assets/js/vendor/swiper/types/modules/mousewheel.d.ts b/build/assets/js/vendor/swiper/types/modules/mousewheel.d.ts new file mode 100644 index 0000000..bb220b1 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/mousewheel.d.ts @@ -0,0 +1,82 @@ +import type Swiper from '../swiper-class.d.ts'; +import type { CSSSelector } from '../shared.d.ts'; + +export interface MousewheelMethods { + /** + * Whether the mousewheel control is enabled + */ + enabled: boolean; + + /** + * Enable mousewheel control + */ + enable(): void; + + /** + * Disable mousewheel control + */ + disable(): void; +} + +export interface MousewheelEvents { + /** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: Swiper, event: WheelEvent) => void; +} + +export interface MousewheelOptions { + /** + * Set to `true` to force mousewheel swipes to axis. So in horizontal mode mousewheel will work only with horizontal mousewheel scrolling, and only with vertical scrolling in vertical mode. + + * + * @default false + */ + forceToAxis?: boolean; + /** + * Set to `true` and swiper will release mousewheel event and allow page scrolling when swiper is on edge positions (in the beginning or in the end) + + * + * @default false + */ + releaseOnEdges?: boolean; + /** + * Set to `true` to invert sliding direction + * + * @default false + */ + invert?: boolean; + /** + * Multiplier of mousewheel data, allows to tweak mouse wheel sensitivity + * + * @default 1 + */ + sensitivity?: number; + /** + * String with CSS selector or HTML element of the container accepting mousewheel events. By default it is swiper + * + * @default 'container' + */ + eventsTarget?: 'container' | 'wrapper' | CSSSelector | HTMLElement; + + /** + * Minimum mousewheel scroll delta to trigger swiper slide change + * + * @default null + */ + thresholdDelta?: number | null; + + /** + * Minimum mousewheel scroll time delta (in ms) to trigger swiper slide change + * + * @default null + */ + thresholdTime?: number | null; + + /** + * Scrolling on elements with this class will be ignored + * + * @default 'swiper-no-mousewheel' + */ + noMousewheelClass?: string; +} diff --git a/build/assets/js/vendor/swiper/types/modules/navigation.d.ts b/build/assets/js/vendor/swiper/types/modules/navigation.d.ts new file mode 100644 index 0000000..3d5c6e6 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/navigation.d.ts @@ -0,0 +1,105 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface NavigationMethods { + /** + * HTMLElement of "next" navigation button + */ + nextEl: HTMLElement; + + /** + * HTMLElement of "previous" navigation button + */ + prevEl: HTMLElement; + + /** + * Update navigation buttons state (enabled/disabled) + */ + update(): void; + + /** + * Initialize navigation + */ + init(): void; + + /** + * Destroy navigation + */ + destroy(): void; +} + +export interface NavigationEvents { + /** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: Swiper) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: Swiper) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: Swiper) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: Swiper) => void; +} + +export interface NavigationOptions { + /** + * Boolean property to use with breakpoints to enable/disable navigation on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the element that will work + * like "next" button after click on it + * + * @default null + */ + nextEl?: CSSSelector | HTMLElement | null; + + /** + * String with CSS selector or HTML element of the element that will work + * like "prev" button after click on it + * + * @default null + */ + prevEl?: CSSSelector | HTMLElement | null; + + /** + * Toggle navigation buttons visibility after click on Slider's container + * + * @default false + */ + hideOnClick?: boolean; + + /** + * CSS class name added to navigation button when it becomes disabled + * + * @default 'swiper-button-disabled' + */ + disabledClass?: string; + + /** + * CSS class name added to navigation button when it becomes hidden + * + * @default 'swiper-button-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name added to navigation button when it is disabled + * + * @default 'swiper-button-lock' + */ + lockClass?: string; + + /** + * CSS class name added on swiper container when navigation is disabled by breakpoint + * + * @default 'swiper-navigation-disabled' + */ + navigationDisabledClass?: string; +} diff --git a/build/assets/js/vendor/swiper/types/modules/pagination.d.ts b/build/assets/js/vendor/swiper/types/modules/pagination.d.ts new file mode 100644 index 0000000..5af6341 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/pagination.d.ts @@ -0,0 +1,295 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface PaginationMethods { + /** + * HTMLElement of pagination container element + */ + el: HTMLElement; + + /** + * Array of pagination bullets + * HTML elements. To get specific slide HTMLElement + * use `swiper.pagination.bullets[1]`. + */ + bullets: HTMLElement[]; + + /** + * Render pagination layout + */ + render(): void; + + /** + * Update pagination state (enabled/disabled/active) + */ + update(): void; + + /** + * Initialize pagination + */ + init(): void; + + /** + * Destroy pagination + */ + destroy(): void; +} + +export interface PaginationEvents { + /** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: Swiper) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: Swiper) => void; +} + +export interface PaginationOptions { + /** + * Boolean property to use with breakpoints to enable/disable pagination on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with pagination + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'` or `'custom'` + * + * @default 'bullets' + */ + type?: 'bullets' | 'fraction' | 'progressbar' | 'custom'; + + /** + * Defines which HTML tag will be used to represent single pagination bullet. Only for `'bullets'` pagination type. + * + * @default 'span' + */ + bulletElement?: string; + + /** + * Good to enable if you use bullets pagination with a lot of slides. So it will keep only few bullets visible at the same time. + * + * @default false + */ + dynamicBullets?: boolean; + + /** + * The number of main bullets visible when `dynamicBullets` enabled. + * + * @default 1 + */ + dynamicMainBullets?: number; + + /** + * Toggle (hide/show) pagination container visibility after click on Slider's container + * + * @default true + */ + hideOnClick?: boolean; + + /** + * If `true` then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type + * + * @default false + */ + clickable?: boolean; + + /** + * Makes pagination progressbar opposite to Swiper's `direction` parameter, means vertical progressbar for horizontal swiper + * direction and horizontal progressbar for vertical swiper direction + * + * @default false + */ + progressbarOpposite?: boolean; + + /** + * format fraction pagination current number. Function receives current number, + * and you need to return formatted value + */ + formatFractionCurrent?: (number: number) => number | string; + + /** + * format fraction pagination total number. Function receives total number, and you + * need to return formatted value + */ + formatFractionTotal?: (number: number) => number | string; + + /** + * This parameter allows totally customize pagination bullets, you need to pass here a function that accepts `index` number of + * pagination bullet and required element class name (`className`). Only for `'bullets'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderBullet: function (index, className) { + * return '' + (index + 1) + ''; + * } + * }); + * ``` + */ + renderBullet?: (index: number, className: string) => string; + + /** + * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderFraction: function (currentClass, totalClass) { + * return '' + + * ' of ' + + * ''; + * } + * }); + * ``` + */ + renderFraction?: (currentClass: string, totalClass: string) => string; + + /** + * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderProgressbar: function (progressbarFillClass) { + * return ''; + * } + * }); + * ``` + */ + renderProgressbar?: (progressbarFillClass: string) => string; + + /** + * This parameter is required for `'custom'` pagination type where you have to specify + * how it should be rendered. + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderCustom: function (swiper, current, total) { + * return current + ' of ' + total; + * } + * }); + * ``` + */ + renderCustom?: (swiper: Swiper, current: number, total: number) => string; + + /** + * CSS class name of single pagination bullet + * + * @default 'swiper-pagination-bullet' + */ + bulletClass?: string; + + /** + * CSS class name of currently active pagination bullet + * + * @default 'swiper-pagination-bullet-active' + */ + bulletActiveClass?: string; + + /** + * The beginning of the modifier CSS class name that will be added to pagination depending on parameters + * + * @default 'swiper-pagination-' + */ + modifierClass?: string; + + /** + * CSS class name of the element with currently active index in "fraction" pagination + * + * @default 'swiper-pagination-current' + */ + currentClass?: string; + + /** + * CSS class name of the element with total number of "snaps" in "fraction" pagination + * + * @default 'swiper-pagination-total' + */ + totalClass?: string; + + /** + * CSS class name of pagination when it becomes inactive + * + * @default 'swiper-pagination-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name of pagination progressbar fill element + * + * @default 'swiper-pagination-progressbar-fill' + */ + progressbarFillClass?: string; + + /** + * CSS class name of pagination progressbar opposite + * + * @default 'swiper-pagination-progressbar-opposite' + */ + progressbarOppositeClass?: string; + /** + * CSS class name set to pagination when it is clickable + * + * @default 'swiper-pagination-clickable' + */ + clickableClass?: string; + + /** + * CSS class name set to pagination when it is disabled + * + * @default 'swiper-pagination-lock' + */ + lockClass?: string; + + /** + * CSS class name set to pagination in horizontal Swiper + * + * @default 'swiper-pagination-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to pagination in vertical Swiper + * + * @default 'swiper-pagination-vertical' + */ + verticalClass?: string; + + /** + * CSS class name added on swiper container and pagination element when pagination is disabled by breakpoint + * + * @default 'swiper-pagination-disabled' + */ + paginationDisabledClass?: string; +} diff --git a/build/assets/js/vendor/swiper/types/modules/parallax.d.ts b/build/assets/js/vendor/swiper/types/modules/parallax.d.ts new file mode 100644 index 0000000..27e8e6f --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/parallax.d.ts @@ -0,0 +1,12 @@ +export interface ParallaxMethods {} + +export interface ParallaxEvents {} + +export interface ParallaxOptions { + /** + * Enable, if you want to use "parallaxed" elements inside of slider + * + * @default false + */ + enabled?: boolean; +} diff --git a/build/assets/js/vendor/swiper/types/modules/public-api.d.ts b/build/assets/js/vendor/swiper/types/modules/public-api.d.ts new file mode 100644 index 0000000..2553f46 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/public-api.d.ts @@ -0,0 +1,23 @@ +export type * from './a11y.d.ts'; +export type * from './autoplay.d.ts'; +export type * from './controller.d.ts'; +export type * from './effect-coverflow.d.ts'; +export type * from './effect-cube.d.ts'; +export type * from './effect-fade.d.ts'; +export type * from './effect-flip.d.ts'; +export type * from './effect-creative.d.ts'; +export type * from './effect-cards.d.ts'; +export type * from './hash-navigation.d.ts'; +export type * from './history.d.ts'; +export type * from './keyboard.d.ts'; +export type * from './mousewheel.d.ts'; +export type * from './navigation.d.ts'; +export type * from './pagination.d.ts'; +export type * from './parallax.d.ts'; +export type * from './scrollbar.d.ts'; +export type * from './thumbs.d.ts'; +export type * from './virtual.d.ts'; +export type * from './zoom.d.ts'; +export type * from './free-mode.d.ts'; +export type * from './grid.d.ts'; +export type * from './manipulation.d.ts'; diff --git a/build/assets/js/vendor/swiper/types/modules/scrollbar.d.ts b/build/assets/js/vendor/swiper/types/modules/scrollbar.d.ts new file mode 100644 index 0000000..4e04d95 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/scrollbar.d.ts @@ -0,0 +1,140 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface ScrollbarMethods { + /** + * HTMLElement of Scrollbar container element + */ + el: HTMLElement; + + /** + * HTMLElement of Scrollbar draggable handler element + */ + dragEl: HTMLElement; + + /** + * Updates scrollbar track and handler sizes + */ + updateSize(): void; + + /** + * Updates scrollbar translate + */ + setTranslate(): void; + + /** + * Initialize scrollbar + */ + init(): void; + + /** + * Destroy scrollbar + */ + destroy(): void; +} + +export interface ScrollbarEvents { + /** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; +} + +/** + * Object with scrollbar parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ +export interface ScrollbarOptions { + /** + * Boolean property to use with breakpoints to enable/disable scrollbar on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with scrollbar. + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * Hide scrollbar automatically after user interaction + * + * @default true + */ + hide?: boolean; + + /** + * Set to `true` to enable make scrollbar draggable that allows you to control slider position + * + * @default false + */ + draggable?: boolean; + + /** + * Set to `true` to snap slider position to slides when you release scrollbar + * + * @default false + */ + snapOnRelease?: boolean; + + /** + * Size of scrollbar draggable element in px + * + * @default 'auto' + */ + dragSize?: 'auto' | number; + + /** + * Scrollbar element additional CSS class when it is disabled + * + * @default 'swiper-scrollbar-lock' + */ + lockClass?: string; + + /** + * Scrollbar draggable element CSS class + * + * @default 'swiper-scrollbar-drag' + */ + dragClass?: string; + + /** + * CSS class name added on swiper container and scrollbar element when scrollbar is disabled by breakpoint + * + * @default 'swiper-scrollbar-disabled' + */ + scrollbarDisabledClass?: string; + + /** + * CSS class name set to scrollbar in horizontal Swiper + * + * @default 'swiper-scrollbar-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to scrollbar in vertical Swiper + * + * @default 'swiper-scrollbar-vertical' + */ + verticalClass?: string; +} diff --git a/build/assets/js/vendor/swiper/types/modules/thumbs.d.ts b/build/assets/js/vendor/swiper/types/modules/thumbs.d.ts new file mode 100644 index 0000000..19d5045 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/thumbs.d.ts @@ -0,0 +1,54 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ThumbsMethods { + /** + * Swiper instance of thumbs swiper + */ + swiper: Swiper; + + /** + * Update thumbs + */ + update(initial: boolean): void; + + /** + * Initialize thumbs + */ + init(): boolean; +} + +export interface ThumbsEvents {} + +export interface ThumbsOptions { + /** + * Swiper instance of swiper used as thumbs or object with Swiper parameters to initialize thumbs swiper + * + * @default null + */ + swiper?: Swiper | null; + /** + * Additional class that will be added to activated thumbs swiper slide + * + * @default 'swiper-slide-thumb-active' + */ + slideThumbActiveClass?: string; + /** + * Additional class that will be added to thumbs swiper + * + * @default 'swiper-thumbs' + */ + thumbsContainerClass?: string; + /** + * When enabled multiple thumbnail slides may get activated + * + * @default true + */ + multipleActiveThumbs?: boolean; + /** + * Allows to set on which thumbs active slide from edge it should automatically move scroll thumbs. For example, if set to 1 and last visible thumb will be activated (1 from edge) it will auto scroll thumbs + + * + * @default 0 + */ + autoScrollOffset?: number; +} diff --git a/build/assets/js/vendor/swiper/types/modules/virtual.d.ts b/build/assets/js/vendor/swiper/types/modules/virtual.d.ts new file mode 100644 index 0000000..bcf27bd --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/virtual.d.ts @@ -0,0 +1,135 @@ +export interface VirtualMethods { + /** + * Object with cached slides HTML elements + */ + cache: object; + + /** + * Index of first rendered slide + */ + from: number; + + /** + * Index of last rendered slide + */ + to: number; + + /** + * Array with slide items passed by `virtual.slides` parameter + */ + slides: T[]; + + /* + * Methods + */ + + /** + * Append slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Prepend slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + prependSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Remove specific slide or slides. `slideIndexes` can be a number with slide index to remove or array with indexes. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeSlide(slideIndexes: number[]): void; + + /** + * Remove all slides + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeAllSlides(): void; + + /** + * Update virtual slides state + */ + update(force: boolean): void; +} + +export interface VirtualEvents {} + +export interface VirtualData { + /** + * slides left/top offset in px + */ + offset: number; + /** + * index of first slide required to be rendered + */ + from: number; + /** + * index of last slide required to be rendered + */ + to: number; + /** + * array with slide items to be rendered + */ + slides: T[]; +} + +export interface VirtualOptions { + /** + * Whether the virtual slides are enabled + * + * @default false + */ + enabled?: boolean; + /** + * Array with slides + * + * @default [] + */ + slides?: T[]; + /** + * Enables DOM cache of rendering slides html elements. Once they are rendered they will be saved to cache and reused from it. + * + * @default true + */ + cache?: boolean; + /** + * Increases amount of pre-rendered slides before active slide + * + * @default 0 + */ + addSlidesBefore?: number; + /** + * Increases amount of pre-rendered slides after active slide + * + * @default 0 + */ + addSlidesAfter?: number; + /** + * Function to render slide. As an argument it accepts current slide item for `slides` array and index number of the current slide. Function must return an outer HTML of the swiper slide or slide HTML element. + * + * @default null + */ + renderSlide?: (slide: T, index: any) => any | null; + /** + * Function for external rendering (e.g. using some other library to handle DOM manipulations and state like React.js or Vue.js). As an argument it accepts `data` object with the following properties: + * + * - `offset` - slides left/top offset in px + * - `from` - index of first slide required to be rendered + * - `to` - index of last slide required to be rendered + * - `slides` - array with slide items to be rendered + * + * @default null + */ + renderExternal?: (data: VirtualData) => any | null; + /** + * When enabled (by default) it will update Swiper layout right after renderExternal called. Useful to disable and update swiper manually when used with render libraries that renders asynchronously + * + * @default true + */ + renderExternalUpdate?: boolean; +} diff --git a/build/assets/js/vendor/swiper/types/modules/zoom.d.ts b/build/assets/js/vendor/swiper/types/modules/zoom.d.ts new file mode 100644 index 0000000..0b302c0 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/modules/zoom.d.ts @@ -0,0 +1,79 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ZoomMethods { + /** + * Whether the zoom module is enabled + */ + enabled: boolean; + + /** + * Current image scale ratio + */ + scale: number; + + /** + * Enable zoom module + */ + enable(): void; + + /** + * Disable zoom module + */ + disable(): void; + + /** + * Zoom in image of the currently active slide. Optionally accepts custom zoom ratio + */ + in(ratio?: number): void; + + /** + * Zoom out image of the currently active slide + */ + out(): void; + + /** + * Toggle image zoom of the currently active slide + */ + toggle(event?: MouseEvent | TouchEvent | PointerEvent): void; +} + +export interface ZoomEvents { + /** + * Event will be fired on zoom change + */ + zoomChange: (swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; +} + +export interface ZoomOptions { + /** + * Maximum image zoom multiplier + * + * @default 3 + */ + maxRatio?: number; + /** + * Minimal image zoom multiplier + * + * @default 1 + */ + minRatio?: number; + /** + * Enable/disable zoom-in by slide's double tap + * + * @default true + */ + toggle?: boolean; + /** + * CSS class name of zoom container + * + * @default 'swiper-zoom-container' + */ + containerClass?: string; + /** + * CSS class name of zoomed in container + * + * @default 'swiper-slide-zoomed' + + */ + zoomedSlideClass?: string; +} diff --git a/build/assets/js/vendor/swiper/types/shared.d.ts b/build/assets/js/vendor/swiper/types/shared.d.ts new file mode 100644 index 0000000..4c28f96 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/shared.d.ts @@ -0,0 +1,5 @@ +export interface CSSSelector extends String {} + +export interface SwiperModule { + name: string; +} diff --git a/build/assets/js/vendor/swiper/types/swiper-class.d.ts b/build/assets/js/vendor/swiper/types/swiper-class.d.ts new file mode 100644 index 0000000..11e5218 --- /dev/null +++ b/build/assets/js/vendor/swiper/types/swiper-class.d.ts @@ -0,0 +1,492 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +import type { A11yMethods } from './modules/a11y.d.ts'; +import type { AutoplayMethods } from './modules/autoplay.d.ts'; +import type { ControllerMethods } from './modules/controller.d.ts'; +import type { CoverflowEffectMethods } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectMethods } from './modules/effect-cube.d.ts'; +import type { FadeEffectMethods } from './modules/effect-fade.d.ts'; +import type { FlipEffectMethods } from './modules/effect-flip.d.ts'; +import type { CreativeEffectMethods } from './modules/effect-creative.d.ts'; +import type { CardsEffectMethods } from './modules/effect-cards.d.ts'; +import type { HashNavigationMethods } from './modules/hash-navigation.d.ts'; +import type { HistoryMethods } from './modules/history.d.ts'; +import type { KeyboardMethods } from './modules/keyboard.d.ts'; +import type { MousewheelMethods } from './modules/mousewheel.d.ts'; +import type { NavigationMethods } from './modules/navigation.d.ts'; +import type { PaginationMethods } from './modules/pagination.d.ts'; +import type { ParallaxMethods } from './modules/parallax.d.ts'; +import type { ScrollbarMethods } from './modules/scrollbar.d.ts'; +import type { ThumbsMethods } from './modules/thumbs.d.ts'; +import type { VirtualMethods } from './modules/virtual.d.ts'; +import type { ZoomMethods } from './modules/zoom.d.ts'; +import type { FreeModeMethods } from './modules/free-mode.d.ts'; +import type { ManipulationMethods } from './modules/manipulation.d.ts'; + +interface SwiperClass { + /** Add event handler */ + on(event: E, handler: Events[E]): void; + /** Add event handler that will be removed after it was fired */ + once(event: E, handler: Events[E]): void; + /** Remove event handler */ + off(event: E, handler: Events[E]): void; + /** Remove all handlers for specified event */ + off(event: E): void; + /** Fire event on instance */ + emit(event: E, ...args: any[]): void; +} + +interface Swiper extends SwiperClass { + /** + * Object with passed initialization parameters + */ + params: SwiperOptions; + + /** + * Object with original initialization parameters + */ + originalParams: SwiperOptions; + + /** + * Slider container HTML element + */ + el: HTMLElement; + + /** + * Wrapper HTML element + */ + wrapperEl: HTMLElement; + + /** + * Array of slides HTML elements. To get specific slide HTMLElement use `swiper.slides[1]` + */ + slides: HTMLElement[]; + + /** + * !INTERNAL + */ + loopedSlides: number | null; + + /** + * Width of container + */ + width: number; + + /** + * Height of container + */ + height: number; + + /** + * Current value of wrapper translate + */ + translate: number; + + /** + * Current progress of wrapper translate (from 0 to 1) + */ + progress: number; + + /** + * Index number of currently active slide + * + * @note Note, that in loop mode active index value will be always shifted on a number of looped slides + */ + activeIndex: number; + + /** + * Index number of currently active slide considering rearranged slides in loop mode + */ + realIndex: number; + + /** + * Index number of previously active slide + */ + previousIndex: number; + + /** + * Index number of current snap in `snapGrid` + */ + snapIndex: number; + + /** + * Slides snap grid + */ + snapGrid: number[]; + + /** + * `true` if slider on most "left"/"top" position + */ + isBeginning: boolean; + + /** + * `true` if slider on most "right"/"bottom" position + */ + isEnd: boolean; + + /** + * `true` if slide is "locked" (by `watchOverflow`) and slides can not be, e.g. when amount of slides is less that slides per view + */ + isLocked: boolean; + + /** + * `true` if swiper is in transition + */ + animating: boolean; + + /** + * Object with the following touch event properties: + * + * - `swiper.touches.startX` + * - `swiper.touches.startY` + * - `swiper.touches.currentX` + * - `swiper.touches.currentY` + * - `swiper.touches.diff` + */ + touches: { + startX: number; + startY: number; + currentX: number; + currentY: number; + diff: number; + }; + + /** + * Index number of last clicked slide + */ + clickedIndex: number; + + /** + * Link to last clicked slide (HTMLElement) + */ + clickedSlide: HTMLElement; + + /** + * Disable / enable ability to slide to the next slides by assigning `false` / `true` to this property + */ + allowSlideNext: boolean; + + /** + * Disable / enable ability to slide to the previous slides by assigning `false` / `true` to this property + */ + allowSlidePrev: boolean; + + /** + * Disable / enable ability move slider by grabbing it with mouse or by touching it with finger (on touch screens) by assigning `false` / `true` to this property + */ + allowTouchMove: boolean; + + /** + * Direction of sliding + */ + swipeDirection: 'prev' | 'next'; + + /** + * !INTERNAL + */ + rtlTranslate: boolean; + + /** + * Disable Swiper (if it was enabled). When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + */ + disable(): void; + + /** + * Enable Swiper (if it was disabled) + * + */ + enable(): void; + + /** + * Set Swiper translate progress (from 0 to 1). Where 0 - its initial position (offset) on first slide, and 1 - its maximum position (offset) on last slide + * + * @param progress Swiper translate progress (from 0 to 1). + * @param speed Transition duration (in ms). + */ + setProgress(progress: number, speed?: number): void; + + /** + * Run transition to next slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideNext(speed?: number, runCallbacks?: boolean): void; + + /** + * Run transition to previous slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slidePrev(speed?: number, runCallbacks?: boolean): void; + + /** + * Run transition to the slide with index number equal to 'index' parameter for the + * duration equal to 'speed' parameter. + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideTo(index: number, speed?: number, runCallbacks?: boolean): void; + + /** + * Does the same as .slideTo but for the case when used with enabled loop. So this + * method will slide to slides with realIndex matching to passed index + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToLoop(index: number, speed?: number, runCallbacks?: boolean): void; + + /** + * Reset swiper position to currently active slide for the duration equal to 'speed' + * parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideReset(speed?: number, runCallbacks?: boolean): void; + + /** + * Reset swiper position to closest slide/snap point for the duration equal to 'speed' parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToClosest(speed?: number, runCallbacks?: boolean): void; + + /** + * Get dynamically calculated amount of slides per view, useful only when slidesPerView set to `auto` + * + */ + slidesPerViewDynamic(): number; + + /** + * Force swiper to update its height (when autoHeight enabled) for the duration equal to + * 'speed' parameter + * + * @param speed Transition duration (in ms). + */ + updateAutoHeight(speed?: number): void; + + /** + * You should call it after you add/remove slides + * manually, or after you hide/show it, or do any + * custom DOM modifications with Swiper + * This method also includes subcall of the following + * methods which you can use separately: + */ + update(): void; + + /** + * recalculate size of swiper container + */ + updateSize(): void; + + /** + * recalculate number of slides and their offsets. Useful after you add/remove slides with JavaScript + */ + updateSlides(): void; + + /** + * recalculate swiper progress + */ + updateProgress(): void; + + /** + * update active/prev/next classes on slides and bullets + */ + updateSlidesClasses(): void; + + /** + * Changes slider direction from horizontal to vertical and back. + * + * @param direction New direction. If not specified, then will automatically changed to opposite direction + * @param needUpdate Will call swiper.update(). Default true + */ + changeDirection(direction?: 'horizontal' | 'vertical', needUpdate?: boolean): void; + + /** + * Changes slider language + * + * @param direction New direction. Should be `rtl` or `ltr` + */ + changeLanguageDirection(direction: 'rtl' | 'ltr'): void; + + /** + * Detach all events listeners + */ + detachEvents(): void; + + /** + * Attach all events listeners again + */ + attachEvents(): void; + + /** + * !INTERNAL + */ + loopCreate(): void; + + /** + * !INTERNAL + */ + loopDestroy(): void; + + /** + * Initialize slider + */ + init(el?: HTMLElement): Swiper; + + /** + * Destroy slider instance and detach all events listeners + * + * @param deleteInstance Set it to false (by default it is true) to not to delete Swiper instance + * @param cleanStyles Set it to true (by default it is true) and all custom styles will be removed from slides, wrapper and container. + * Useful if you need to destroy Swiper and to init again with new options or in different direction + */ + destroy(deleteInstance?: boolean, cleanStyles?: boolean): void; + + /** + * Set custom css3 transform's translate value for swiper wrapper + */ + setTranslate(translate: any): void; + + /** + * Get current value of swiper wrapper css3 transform translate + */ + getTranslate(): any; + + /** + * Animate custom css3 transform's translate value for swiper wrapper + * + * @param translate Translate value (in px) + * @param speed Transition duration (in ms) + * @param runCallbacks Set it to false (by default it is true) and transition will not produce transition events + * @param translateBounds Set it to false (by default it is true) and transition value can extend beyond min and max translate + * + */ + translateTo( + translate: number, + speed: number, + runCallbacks?: boolean, + translateBounds?: boolean, + ): any; + + /** + * Unset grab cursor + */ + unsetGrabCursor(): void; + + /** + * Set grab cursor + */ + setGrabCursor(): void; + + /** + * Add event listener that will be fired on all events + */ + onAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * Remove event listener that will be fired on all events + */ + offAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * !INTERNAL + */ + isHorizontal(): boolean; + + /** + * !INTERNAL + */ + getBreakpoint(breakpoints: SwiperOptions['breakpoints']): string; + + /** + * !INTERNAL + */ + setBreakpoint(): void; + + /** + * !INTERNAL + */ + currentBreakpoint: any; + + /** + * !INTERNAL + */ + destroyed: boolean; + + /** + * !INTERNAL + */ + modules: Array; + + a11y: A11yMethods; + autoplay: AutoplayMethods; + controller: ControllerMethods; + coverflowEffect: CoverflowEffectMethods; + cubeEffect: CubeEffectMethods; + fadeEffect: FadeEffectMethods; + flipEffect: FlipEffectMethods; + creativeEffect: CreativeEffectMethods; + cardsEffect: CardsEffectMethods; + hashNavigation: HashNavigationMethods; + history: HistoryMethods; + keyboard: KeyboardMethods; + mousewheel: MousewheelMethods; + navigation: NavigationMethods; + pagination: PaginationMethods; + parallax: ParallaxMethods; + scrollbar: ScrollbarMethods; + thumbs: ThumbsMethods; + virtual: VirtualMethods; + zoom: ZoomMethods; + freeMode: FreeModeMethods; +} + +interface Swiper extends ManipulationMethods {} + +declare class Swiper implements Swiper { + /** + * Constructs a new Swiper instance. + * + * @param container Where Swiper applies to. + * @param options Instance options. + */ + constructor(container: CSSSelector | HTMLElement, options?: SwiperOptions); + /** + * Installs modules on Swiper in runtime. + */ + static use(modules: SwiperModule[]): void; + + /** + * Swiper default options + */ + static defaults: SwiperOptions; + + /** + * Extend global Swiper defaults + */ + static extendDefaults(options: SwiperOptions): void; + + /** + * Object with global Swiper extended options + */ + static extendedDefaults: SwiperOptions; +} + +export default Swiper; diff --git a/build/assets/js/vendor/swiper/types/swiper-events.d.ts b/build/assets/js/vendor/swiper/types/swiper-events.d.ts new file mode 100644 index 0000000..4e6aaec --- /dev/null +++ b/build/assets/js/vendor/swiper/types/swiper-events.d.ts @@ -0,0 +1,359 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type Swiper from './swiper-class.d.ts'; + +import type { A11yEvents } from './modules/a11y.d.ts'; +import type { AutoplayEvents } from './modules/autoplay.d.ts'; +import type { ControllerEvents } from './modules/controller.d.ts'; +import type { CoverflowEffectEvents } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectEvents } from './modules/effect-cube.d.ts'; +import type { FadeEffectEvents } from './modules/effect-fade.d.ts'; +import type { FlipEffectEvents } from './modules/effect-flip.d.ts'; +import type { CreativeEffectEvents } from './modules/effect-creative.d.ts'; +import type { CardsEffectEvents } from './modules/effect-cards.d.ts'; +import type { HashNavigationEvents } from './modules/hash-navigation.d.ts'; +import type { HistoryEvents } from './modules/history.d.ts'; +import type { KeyboardEvents } from './modules/keyboard.d.ts'; +import type { MousewheelEvents } from './modules/mousewheel.d.ts'; +import type { NavigationEvents } from './modules/navigation.d.ts'; +import type { PaginationEvents } from './modules/pagination.d.ts'; +import type { ParallaxEvents } from './modules/parallax.d.ts'; +import type { ScrollbarEvents } from './modules/scrollbar.d.ts'; +import type { ThumbsEvents } from './modules/thumbs.d.ts'; +import type { VirtualEvents } from './modules/virtual.d.ts'; +import type { ZoomEvents } from './modules/zoom.d.ts'; +import type { FreeModeEvents } from './modules/free-mode.d.ts'; + +export interface SwiperEvents { + // CORE_EVENTS_START + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: Swiper) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: Swiper) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: Swiper) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: Swiper, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: Swiper, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: Swiper, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: Swiper) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: Swiper) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: Swiper) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: Swiper) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: Swiper, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: Swiper, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: Swiper, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: Swiper) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: Swiper) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: Swiper) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: Swiper) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: Swiper) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: Swiper) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: Swiper) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: Swiper, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: Swiper) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: Swiper) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: Swiper) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: Swiper) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: Swiper) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: Swiper) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: Swiper, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: Swiper) => void; + // CORE_EVENTS_END +} + +interface SwiperEvents extends A11yEvents {} +interface SwiperEvents extends AutoplayEvents {} +interface SwiperEvents extends ControllerEvents {} +interface SwiperEvents extends CoverflowEffectEvents {} +interface SwiperEvents extends CubeEffectEvents {} +interface SwiperEvents extends FadeEffectEvents {} +interface SwiperEvents extends FlipEffectEvents {} +interface SwiperEvents extends CreativeEffectEvents {} +interface SwiperEvents extends CardsEffectEvents {} +interface SwiperEvents extends HashNavigationEvents {} +interface SwiperEvents extends HistoryEvents {} +interface SwiperEvents extends KeyboardEvents {} +interface SwiperEvents extends MousewheelEvents {} +interface SwiperEvents extends NavigationEvents {} +interface SwiperEvents extends PaginationEvents {} +interface SwiperEvents extends ParallaxEvents {} +interface SwiperEvents extends ScrollbarEvents {} +interface SwiperEvents extends ThumbsEvents {} +interface SwiperEvents extends VirtualEvents {} +interface SwiperEvents extends ZoomEvents {} +interface SwiperEvents extends FreeModeEvents {} diff --git a/build/assets/js/vendor/swiper/types/swiper-options.d.ts b/build/assets/js/vendor/swiper/types/swiper-options.d.ts new file mode 100644 index 0000000..6d0167f --- /dev/null +++ b/build/assets/js/vendor/swiper/types/swiper-options.d.ts @@ -0,0 +1,1210 @@ +import type { A11yOptions } from './modules/a11y.d.ts'; +import type { AutoplayOptions } from './modules/autoplay.d.ts'; +import type { ControllerOptions } from './modules/controller.d.ts'; +import type { CoverflowEffectOptions } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectOptions } from './modules/effect-cube.d.ts'; +import type { FadeEffectOptions } from './modules/effect-fade.d.ts'; +import type { FlipEffectOptions } from './modules/effect-flip.d.ts'; +import type { CreativeEffectOptions } from './modules/effect-creative.d.ts'; +import type { CardsEffectOptions } from './modules/effect-cards.d.ts'; +import type { HashNavigationOptions } from './modules/hash-navigation.d.ts'; +import type { HistoryOptions } from './modules/history.d.ts'; +import type { KeyboardOptions } from './modules/keyboard.d.ts'; +import type { MousewheelOptions } from './modules/mousewheel.d.ts'; +import type { NavigationOptions } from './modules/navigation.d.ts'; +import type { PaginationOptions } from './modules/pagination.d.ts'; +import type { ParallaxOptions } from './modules/parallax.d.ts'; +import type { ScrollbarOptions } from './modules/scrollbar.d.ts'; +import type { ThumbsOptions } from './modules/thumbs.d.ts'; +import type { VirtualOptions } from './modules/virtual.d.ts'; +import type { ZoomOptions } from './modules/zoom.d.ts'; +import type { FreeModeOptions } from './modules/free-mode.d.ts'; +import type { GridOptions } from './modules/grid.d.ts'; + +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +export interface SwiperOptions { + /** + * Array with Swiper modules + * + * @example + * ```js + * import Swiper from 'swiper'; + * import { Navigation, Pagination } from 'swiper/modules'; + * + * const swiper = new Swiper('.swiper', { + * modules: [ Navigation, Pagination ], + * }); + * ``` + */ + modules?: SwiperModule[]; + /** + * Inject text styles to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStyles?: string[]; + /** + * Inject styles ``s to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStylesUrls?: string[]; + /** + * Whether Swiper should be initialised automatically when you create an instance. + * If disabled, then you need to init it manually by calling `swiper.init()` + * + * @default true + */ + init?: boolean; + + /** + * Whether Swiper initially enabled. When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + * @default true + */ + enabled?: boolean; + + /** + * Swiper will recalculate slides position on window resize (orientationchange) + * + * @default true + */ + updateOnWindowResize?: boolean; + + /** + * When enabled it will use ResizeObserver (if supported by browser) on swiper container to detect container resize (instead of watching for window resize) + * + * @default true + */ + resizeObserver?: boolean; + + /** + * Index number of initial slide. + * + * @default 0 + */ + initialSlide?: number; + + /** + * Can be `'horizontal'` or `'vertical'` (for vertical slider). + * + * @default 'horizontal' + */ + direction?: 'horizontal' | 'vertical'; + + /** + * When enabled, will swipe slides only forward (one-way) regardless of swipe direction + * + * @default false + */ + + oneWayMovement?: boolean; + + /** + * Duration of transition between slides (in ms) + * + * @default 300 + */ + speed?: number; + + /** + * Enabled this option and plugin will set width/height on swiper wrapper equal to total size of all slides. + * Mostly should be used as compatibility fallback option for browser that don't support flexbox layout well + * + * @default false + */ + setWrapperSize?: boolean; + + /** + * Enabled this option and swiper will be operated as usual except it will not move, real translate values on wrapper will not be set. + * Useful when you may need to create custom slide transition + * + * @default false + */ + virtualTranslate?: boolean; + + /** + * Swiper width (in px). Parameter allows to force Swiper width. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + width?: number | null; + + /** + * Swiper height (in px). Parameter allows to force Swiper height. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + height?: number | null; + + /** + * Set to `true` and slider wrapper will adapt its height to the height of the currently active slide + * + * @default false + */ + autoHeight?: boolean; + + /** + * Set to `true` to round values of slides width and height to prevent blurry texts on usual + * resolution screens (if you have such) + * + * @default false + */ + roundLengths?: boolean; + + /** + * Set to `true` on Swiper for correct touch events interception. Use only on + * swipers that use same direction as the parent one + * + * @default false + */ + nested?: boolean; + + /** + * When enabled Swiper will automatically wrap slides with swiper-wrapper element, + * and will create required elements for navigation, pagination and scrollbar + * they are enabled (with their respective params object or with boolean `true`)) + * + * @default false + */ + createElements?: boolean; + + /** + * Event name prefix for all DOM events emitted by Swiper Element (web component) + * + * @default `swiper` + */ + eventsPrefix?: string; + + /** + * CSS selector for focusable elements. Swiping will be disabled on such elements if they are "focused" + * + * @default 'input, select, option, textarea, button, video, label' + */ + focusableElements?: string; + + /** + * If enabled (by default) and navigation elements' parameters passed as a string (like `".pagination"`) + * then Swiper will look for such elements through child elements first. + * Applies for pagination, prev/next buttons and scrollbar elements + * + * @default true + */ + uniqueNavElements?: boolean; + + /** + * Transition effect. Can be `'slide'`, `'fade'`, `'cube'`, `'coverflow'`, `'flip'` or `'creative'` + * + * @default 'slide' + */ + effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards' | string; + + /** + * Fire Transition/SlideChange/Start/End events on swiper initialization. + * Such events will be fired on initialization in case of your initialSlide is not 0, or you use loop mode + * + * @default true + */ + runCallbacksOnInit?: boolean; + + /** + * When enabled Swiper will be disabled and hide navigation buttons on + * case there are not enough slides for sliding. + * + * @default true + */ + watchOverflow?: boolean; + + /** + * userAgent string. Required for browser/device detection when rendered on server-side + * + * @default null + */ + userAgent?: string | null; + + /** + * Required for active slide detection when rendered on server-side and enabled history + * + * @default null + */ + url?: string | null; + + /** + * Register event handlers + */ + on?: { + [event in keyof SwiperEvents]?: SwiperEvents[event]; + }; + + /** + * Add event listener that will be fired on all events + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * onAny(eventName, ...args) { + * console.log('Event: ', eventName); + * console.log('Event data: ', args); + * } + * }); + * ``` + */ + onAny?(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * When enabled it will use modern CSS Scroll Snap API. + * It doesn't support all of Swiper's features, but potentially should bring a much better performance in simple configurations. + * + * This is what is not supported when it is enabled: + * + * - Cube effect + * - `speed` parameter may not have no effect + * - All transition start/end related events (use `slideChange` instead) + * - `slidesPerGroup` has limited support + * - `simulateTouch` doesn't have effect and "dragging" with mouse doesn't work + * - `resistance` doesn't have any effect + * - `allowSlidePrev/Next` + * - `swipeHandler` + * + * In case if you use it with other effects, especially 3D effects, it is required to wrap slide's content with `
    ` element. And if you use any custom styles on slides (like background colors, border radius, border, etc.), they should be set on `swiper-slide-transform` element instead. + * + * @example + * ```html + *
    + *
    + *
    + * + *
    + * ... slide content ... + *
    + *
    + * ... + *
    + *
    + * + * ``` + * + * @default false + */ + cssMode?: boolean; + + // Slides grid + + /** + * Distance between slides in px. + * + * @default 0 + * + * @note If you use "margin" css property to the elements which go into Swiper in which you pass "spaceBetween" into, navigation might not work properly. + */ + spaceBetween?: number | string; + + /** + * Number of slides per view (slides visible at the same time on slider's container). + * @note `slidesPerView: 'auto'` is currently not compatible with multirow mode, when `grid.rows` > 1 + * + * @default 1 + */ + slidesPerView?: number | 'auto'; + + /** + * If total number of slides less than specified here value, then Swiper will enable `backface-visibility: hidden` on slide elements to reduce visual "flicker" in Safari. + * + * @note It is not recommended to enable it on large amount of slides as it will reduce performance + * + * @default 10 + */ + maxBackfaceHiddenSlides?: number; + + /** + * Set numbers of slides to define and enable group sliding. Useful to use with slidesPerView > 1 + * + * @default 1 + */ + slidesPerGroup?: number; + + /** + * The parameter works in the following way: If `slidesPerGroupSkip` equals `0` (default), no slides are excluded from grouping, and the resulting behaviour is the same as without this change. + * + * If `slidesPerGroupSkip` is equal or greater than `1` the first X slides are treated as single groups, whereas all following slides are grouped by the `slidesPerGroup` value. + * + * @default 0 + */ + slidesPerGroupSkip?: number; + + /** + * This param intended to be used only with `slidesPerView: 'auto'` and `slidesPerGroup: 1`. When enabled, it will skip all slides in view on `.slideNext()` & `.slidePrev()` methods calls, on Navigation "buttons" clicks and in autoplay. + * + * @default false + */ + slidesPerGroupAuto?: boolean; + + /** + * If `true`, then active slide will be centered, not always on the left side. + * + * @default false + */ + centeredSlides?: boolean; + + /** + * If `true`, then active slide will be centered without adding gaps at the beginning and end of slider. + * Required `centeredSlides: true`. Not intended to be used with `loop` or `pagination` + * + * @default false + */ + centeredSlidesBounds?: boolean; + + /** + * Add (in px) additional slide offset in the beginning of the container (before all slides) + * + * @default 0 + */ + slidesOffsetBefore?: number; + + /** + * Add (in px) additional slide offset in the end of the container (after all slides) + * + * @default 0 + */ + slidesOffsetAfter?: number; + + /** + * Normalize slide index. + * + * @default true + */ + normalizeSlideIndex?: boolean; + + /** + * When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used `loop` mode and `grid.rows` + * + * @default false + */ + centerInsufficientSlides?: boolean; + + /** + * This option may a little improve desktop usability. If `true`, user will see the "grab" cursor when hover on Swiper + * + * @default false + */ + grabCursor?: boolean; + + /** + * Target element to listen touch events on. Can be `'container'` (to listen for touch events on swiper) or `'wrapper'` + * (to listen for touch events on swiper-wrapper) + * + * @default 'wrapper' + */ + touchEventsTarget?: 'container' | 'wrapper'; + + /** + * Touch ratio + * + * @default 1 + */ + touchRatio?: number; + + /** + * Allowable angle (in degrees) to trigger touch move + * + * @default 45 + */ + touchAngle?: number; + + /** + * If `true`, Swiper will accept mouse events like touch events (click and drag to change slides) + * + * @default true + */ + simulateTouch?: boolean; + + /** + * Set to `false` if you want to disable short swipes + * + * @default true + */ + shortSwipes?: boolean; + + /** + * Set to `false` if you want to disable long swipes + * + * @default true + */ + longSwipes?: boolean; + + /** + * Ratio to trigger swipe to next/previous slide during long swipes + * + * @default 0.5 + */ + longSwipesRatio?: number; + + /** + * Minimal duration (in ms) to trigger swipe to next/previous slide during long swipes + * + * @default 300 + */ + longSwipesMs?: number; + + /** + * If disabled, then slider will be animated only when you release it, it will not move while you hold your finger on it + * + * @default true + */ + followFinger?: boolean; + + /** + * If `false`, then the only way to switch the slide is use of external API functions like slidePrev or slideNext + * + * @default true + */ + allowTouchMove?: boolean; + + /** + * Threshold value in px. If "touch distance" will be lower than this value then swiper will not move + * + * @default 5 + */ + threshold?: number; + + /** + * If disabled, `pointerdown` event won't be prevented + * + * @default true + */ + touchStartPreventDefault?: boolean; + + /** + * Force to always prevent default for `touchstart` (`pointerdown`) event + * + * @default false + */ + touchStartForcePreventDefault?: boolean; + + /** + * If enabled, then propagation of "touchmove" will be stopped + * + * @default false + */ + touchMoveStopPropagation?: boolean; + + /** + * Enable to release Swiper events for swipe-back work in app. If set to `'prevent'` then it will prevent system swipe-back navigation instead. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer (touch) events. + * + * @default false + */ + edgeSwipeDetection?: boolean | string; + + /** + * Area (in px) from left edge of the screen to release touch events for swipe-back in app + * + * @default 20 + */ + edgeSwipeThreshold?: number; + + /** + * Enable to release touch events on slider edge position (beginning, end) to allow for further page scrolling. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer events. Also `threshold` parameter must be set to `0` + * + * @default false + */ + touchReleaseOnEdges?: boolean; + + /** + * Passive event listeners will be used by default where possible to improve scrolling performance on mobile devices. + * But if you need to use `e.preventDefault` and you have conflict with it, then you should disable this parameter + * + * @default true + */ + passiveListeners?: boolean; + + // Touch Resistance + + /** + * Set to `false` if you want to disable resistant bounds + * + * @default true + */ + resistance?: boolean; + + /** + * This option allows you to control resistance ratio + * + * @default 0.85 + */ + resistanceRatio?: number; + + // Swiping / No swiping + /** + * When enabled it won't allow to change slides by swiping or navigation/pagination buttons during transition + * + * @default false + */ + preventInteractionOnTransition?: boolean; + + /** + * Set to `false` to disable swiping to previous slide direction (to left or top) + * + * @default true + */ + allowSlidePrev?: boolean; + + /** + * Set to `false` to disable swiping to next slide direction (to right or bottom) + * + * @default true + */ + allowSlideNext?: boolean; + + /** + * Enable/disable swiping on elements matched to class specified in `noSwipingClass` + * + * @default true + */ + noSwiping?: boolean; + + /** + * Specify `noSwiping`'s element css class + * + * @default 'swiper-no-swiping' + */ + noSwipingClass?: string; + + /** + * Can be used instead of `noSwipingClass` to specify elements to disable swiping on. + * For example `'input'` will disable swiping on all inputs + * + * @default + */ + noSwipingSelector?: string; + + /** + * String with CSS selector or HTML element of the container with pagination that will work as only available handler for swiping + * + * @default null + */ + swipeHandler?: CSSSelector | HTMLElement | null; + + // Clicks + /** + * Set to `true` to prevent accidental unwanted clicks on links during swiping + * + * @default true + */ + preventClicks?: boolean; + + /** + * Set to `true` to stop clicks event propagation on links during swiping + * + * @default true + */ + preventClicksPropagation?: boolean; + + /** + * Set to `true` and click on any slide will produce transition to this slide + * + * @default false + */ + slideToClickedSlide?: boolean; + + // Progress + /** + * Enable this feature to calculate each slides progress and visibility (slides in viewport will have additional visible class) + * + * @default false + */ + watchSlidesProgress?: boolean; + + /** + * Set to `true` to enable continuous loop mode + * + * Because of nature of how the loop mode works (it will rearrange slides), total number of slides must be: + * + * - more than or equal to `slidesPerView` + `slidesPerGroup` + * - even to `slidesPerGroup` (or use `loopAddBlankSlides` parameter) + * - even to `grid.rows` (or use `loopAddBlankSlides` parameter) + * + * @default false + * + */ + loop?: boolean; + + /** + * Automatically adds blank slides if you use Grid or `slidesPerGroup` and the total amount of slides is not even to `slidesPerGroup` or to `grid.rows` + * + * + * @default false + * + */ + loopAddBlankSlides?: boolean; + + /** + * Allows to increase amount of looped slides + * + * @default 0 + */ + loopAdditionalSlides?: number; + + /** + * If enabled then slideNext/Prev will do nothing while slider is animating in loop mode + * + * @default true + */ + loopPreventsSliding?: boolean; + + /** + * Set to `true` to enable "rewind" mode. When enabled, clicking "next" navigation button (or calling `.slideNext()`) when on last slide will slide back to the first slide. Clicking "prev" navigation button (or calling `.slidePrev()`) when on first slide will slide forward to the last slide. + * + * @default false + * + * @note Should not be used together with `loop` mode + */ + rewind?: boolean; + + /** + * Allows to set different parameter for different responsive breakpoints (screen sizes). Not all parameters can be changed in breakpoints, only those which do not require different layout and logic, like `slidesPerView`, `slidesPerGroup`, `spaceBetween`, `grid.rows`. Such parameters like `loop` and `effect` won't work + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * // Default parameters + * slidesPerView: 1, + * spaceBetween: 10, + * // Responsive breakpoints + * breakpoints: { + * // when window width is >= 320px + * 320: { + * slidesPerView: 2, + * spaceBetween: 20 + * }, + * // when window width is >= 480px + * 480: { + * slidesPerView: 3, + * spaceBetween: 30 + * }, + * // when window width is >= 640px + * 640: { + * slidesPerView: 4, + * spaceBetween: 40 + * } + * } + * }) + * ``` + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * slidesPerView: 1, + * spaceBetween: 10, + * // using "ratio" endpoints + * breakpoints: { + * '@0.75': { + * slidesPerView: 2, + * spaceBetween: 20, + * }, + * '@1.00': { + * slidesPerView: 3, + * spaceBetween: 40, + * }, + * '@1.50': { + * slidesPerView: 4, + * spaceBetween: 50, + * }, + * } + * }); + * ``` + */ + breakpoints?: { + [width: number]: SwiperOptions; + [ratio: string]: SwiperOptions; + }; + + /** + * Base for breakpoints (beta). Can be `window` or `container`. If set to `window` (by default) then breakpoint keys mean window width. If set to `container` then breakpoint keys treated as swiper container width + * + * @default 'window' + */ + breakpointsBase?: string; + + // Observer + /** + * Set to `true` to enable Mutation Observer on Swiper and its elements. In this case Swiper will be updated (reinitialized) each time if you change its style (like hide/show) or modify its child elements (like adding/removing slides) + * + * @default false + */ + observer?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper slide children elements + * + * @default false + */ + observeSlideChildren?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper parent elements + * + * @default false + */ + observeParents?: boolean; + + // Namespace + /** + * The beginning of the modifier CSS class that can be added to swiper container depending on different parameters + * + * @default 'swiper-' + */ + containerModifierClass?: string; + + /** + * CSS class name of slide + * + * @default 'swiper-slide' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideClass?: string; + + /** + * CSS class name of currently active slide + * + * @default 'swiper-slide-active' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideActiveClass?: string; + + /** + * CSS class name of currently/partially visible slide + * + * @default 'swiper-slide-visible' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideVisibleClass?: string; + + /** + * CSS class name of fully (when whole slide is in the viewport) visible slide + * + * @default 'swiper-slide-fully-visible' + * + * @note Not supported in Swiper React/Vue + */ + slideFullyVisibleClass?: string; + + /** + * CSS class name of the blank slide added by the loop mode (when `loopAddBlankSlides` is enabled) + * + * @default 'swiper-slide-blank' + * + * @note Not supported in Swiper React/Vue + */ + slideBlankClass?: string; + + /** + * CSS class name of slide which is right after currently active slide + * + * @default 'swiper-slide-next' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideNextClass?: string; + + /** + * CSS class name of slide which is right before currently active slide + * + * @default 'swiper-slide-prev' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slidePrevClass?: string; + + /** + * CSS class name of slides' wrapper + * + * @default 'swiper-wrapper' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + * + */ + wrapperClass?: string; + + /** + * CSS class name of lazy preloader + * + * @default 'swiper-lazy-preloader' + */ + lazyPreloaderClass?: string; + + /** + * Number of next and previous slides to preload. Only applicable if using lazy loading. + * + * @default 0 + */ + lazyPreloadPrevNext?: number; + + /** + * Object with a11y parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * a11y: { + * prevSlideMessage: 'Previous slide', + * nextSlideMessage: 'Next slide', + * }, + * }); + * ``` + */ + a11y?: A11yOptions; + + /** + * Object with autoplay parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + *}); + * ``` + */ + autoplay?: AutoplayOptions | boolean; + + /** + * Object with controller parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * controller: { + * inverse: true, + * }, + * }); + * ``` + */ + controller?: ControllerOptions; + + /** + * Object with Coverflow-effect parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'coverflow', + * coverflowEffect: { + * rotate: 30, + * slideShadows: false, + * }, + * }); + * ``` + */ + coverflowEffect?: CoverflowEffectOptions; + + /** + * Object with Cube-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cube', + * cubeEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + cubeEffect?: CubeEffectOptions; + + /** + * Object with Fade-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'fade', + * fadeEffect: { + * crossFade: true + * }, + * }); + * ``` + */ + fadeEffect?: FadeEffectOptions; + + /** + * Object with Flip-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'flip', + * flipEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + flipEffect?: FlipEffectOptions; + + /** + * Object with Creative-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'creative', + * creativeEffect: { + * prev: { + * // will set `translateZ(-400px)` on previous slides + * translate: [0, 0, -400], + * }, + * next: { + * // will set `translateX(100%)` on next slides + * translate: ['100%', 0, 0], + * }, + * }, + * }); + * ``` + */ + creativeEffect?: CreativeEffectOptions; + + /** + * Object with Cards-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cards', + * cardsEffect: { + * // ... + * }, + * }); + * ``` + */ + cardsEffect?: CardsEffectOptions; + + /** + * Enables hash url navigation to for slides. + * Object with hash navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * hashNavigation: { + * replaceState: true, + * }, + * }); + * ``` + */ + hashNavigation?: HashNavigationOptions | boolean; + + /** + * Enables history push state where every slide will have its own url. In this parameter you have to specify main slides url like `"slides"` and specify every slide url using `data-history` attribute. + * + * Object with history navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * history: { + * replaceState: true, + * }, + * }); + * ``` + * + * @example + * ```html + * + *
    + * ``` + */ + history?: HistoryOptions | boolean; + + /** + * Enables navigation through slides using keyboard. Object with keyboard parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * keyboard: { + * enabled: true, + * onlyInViewport: false, + * }, + * }); + * ``` + */ + keyboard?: KeyboardOptions | boolean; + + /** + * Enables navigation through slides using mouse wheel. Object with mousewheel parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * mousewheel: { + * invert: true, + * }, + * }); + * ``` + */ + mousewheel?: MousewheelOptions | boolean; + + /** + * Object with navigation parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * navigation: { + * nextEl: '.swiper-button-next', + * prevEl: '.swiper-button-prev', + * }, + * }); + * ``` + */ + navigation?: NavigationOptions | boolean; + + /** + * Object with pagination parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * pagination: { + * el: '.swiper-pagination', + * type: 'bullets', + * }, + * }); + * ``` + */ + pagination?: PaginationOptions | boolean; + + /** + * Object with parallax parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * parallax: true, + * }); + * ``` + */ + parallax?: ParallaxOptions | boolean; + + /** + * Object with scrollbar parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ + scrollbar?: ScrollbarOptions | boolean; + + /** + * Object with thumbs component parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * ... + * thumbs: { + * swiper: thumbsSwiper + * } + * }); + * ``` + */ + thumbs?: ThumbsOptions; + + /** + * Enables virtual slides functionality. Object with virtual slides parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * virtual: { + * slides: ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5'], + * }, + * }); + * ``` + */ + virtual?: VirtualOptions | boolean; + + /** + * Enables zooming functionality. Object with zoom parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * zoom: { + * maxRatio: 5, + * }, + * }); + * ``` + */ + zoom?: ZoomOptions | boolean; + + /** + * Enables free mode functionality. Object with free mode parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * freeMode: true, + * }); + * + * const swiper = new Swiper('.swiper', { + * freeMode: { + * enabled: true, + * sticky: true, + * }, + * }); + * ``` + */ + freeMode?: FreeModeOptions | boolean; + + /** + * Object with grid parameters to enable "multirow" slider. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * grid: { + * rows: 2, + * }, + * }); + * ``` + */ + grid?: GridOptions; + + /** + * !INTERNAL When enabled will emit "_containerClasses" and "_slideClass" events + */ + _emitClasses?: boolean; +} diff --git a/build/assets/video/iuav-architettura.mp4 b/build/assets/video/iuav-architettura.mp4 new file mode 100755 index 0000000..d954bf8 --- /dev/null +++ b/build/assets/video/iuav-architettura.mp4 Binary files differ diff --git a/build/assets/video/iuav-design.mp4 b/build/assets/video/iuav-design.mp4 new file mode 100755 index 0000000..c2eb1b3 --- /dev/null +++ b/build/assets/video/iuav-design.mp4 Binary files differ diff --git a/build/assets/video/test.mp4 b/build/assets/video/test.mp4 new file mode 100644 index 0000000..ed139d6 --- /dev/null +++ b/build/assets/video/test.mp4 Binary files differ diff --git a/build/index.html b/build/index.html new file mode 100644 index 0000000..3e09703 --- /dev/null +++ b/build/index.html @@ -0,0 +1,2129 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + + +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/boilerplate.html b/build/pages/boilerplate.html new file mode 100644 index 0000000..8f8171e --- /dev/null +++ b/build/pages/boilerplate.html @@ -0,0 +1,2159 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    + + +
    +
    +

    Testo semplice

    +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus nec felis sed mauris maximus dictum. Quisque rutrum odio at lacinia pellentesque. Integer in sapien purus. Donec finibus, odio nec accumsan porttitor, velit nisl feugiat felis, eget aliquam dui purus et mi. Nulla vel lacinia ligula. Vestibulum a malesuada ante, in luctus sapien. Maecenas maximus ac quam sit amet pulvinar. Nulla quis ornare felis. Pellentesque tempus, urna et fermentum aliquet, tortor ipsum mattis lectus, ac blandit massa libero pellentesque magna. Nunc dignissim eros nunc, non condimentum turpis tristique vel. Aenean efficitur lectus vel enim vulputate tempus. Sed tincidunt arcu at dui facilisis ullamcorper.

    +
    +
    +
    + + +
    +
    +

    Testo semplice

    +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus nec felis sed mauris maximus dictum. Quisque rutrum odio at lacinia pellentesque. Integer in sapien purus. Donec finibus, odio nec accumsan porttitor, velit nisl feugiat felis, eget aliquam dui purus et mi. Nulla vel lacinia ligula. Vestibulum a malesuada ante, in luctus sapien. Maecenas maximus ac quam sit amet pulvinar. Nulla quis ornare felis. Pellentesque tempus, urna et fermentum aliquet, tortor ipsum mattis lectus, ac blandit massa libero pellentesque magna. Nunc dignissim eros nunc, non condimentum turpis tristique vel. Aenean efficitur lectus vel enim vulputate tempus. Sed tincidunt arcu at dui facilisis ullamcorper.

    +

    Sottotitolo
    Aliquam ut ligula rutrum, iaculis lorem vel, blandit magna. Donec tempus ut arcu et porta. Sed sit amet sapien in metus bibendum aliquet. Nam porta facilisis augue. Sed pellentesque diam vitae dolor dapibus, at mollis nisi rhoncus. Sed non ultrices enim. Nulla volutpat lacinia nunc eget viverra. Cras tristique est id lorem blandit malesuada. Interdum et malesuada fames ac ante ipsum primis in faucibus.

    +
    +
    +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/corsi-laurea/architettura.html b/build/pages/corsi-laurea/architettura.html new file mode 100644 index 0000000..a55a31a --- /dev/null +++ b/build/pages/corsi-laurea/architettura.html @@ -0,0 +1,3050 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + + + +
    + +
    + +
    + + + +
    +
    +

    La lunga tradizione della scuola di architettura, da Aldo Rossi a Carlo Scarpa

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

    Per chi sceglie Architettura, il luogo in cui si studia è particolarmente importante. E Venezia è la scuola del progetto. Studiare Architettura a Venezia significa vivere un'esperienza di studi unica, in una città che offre una lezione costante di storia, di arte, di sostenibilità.

    +

    I corsi di laurea in Architettura Iuav interpretano i bisogni di un mondo della professione in evoluzione: oggi un architetto deve essere in grado di leggere i luoghi, conoscerne la storia, coordinare competenze disciplinari diverse. Deve sapere comporre sensibilità umanistica, conoscenze tecniche e senso civico, per collaborare alla costruzione di spazi, città e ambienti sostenibili. Studiare Architettura a Venezia significa intraprendere un percorso orientato alla formazione di un progettista consapevole, capace di prendersi cura dell’ambiente fisico in cui vive una collettività e consegnarlo al futuro.

    +

    Il corso si caratterizza per il confronto continuo fra teoria e pratica, tra sapere e saper fare. Il laboratorio integrato è lo spazio della sperimentazione, dove chi studia verifica le conoscenze acquisite e le relazioni interdisciplinari che definiscono un progetto di architettura. Il percorso formativo trasmette le conoscenze culturali, metodologiche e tecniche che, alla fine del triennio, permettono al laureato di operare professionalmente con competenza e autonomia e offrire la base per proseguire gli studi con il corso di laurea magistrale. I workshop e i corsi monodisciplinari costruiscono un percorso ricco e articolato, che favorisce la maturazione di capacità critiche e pratico-operative. Il primo anno fornisce gli orizzonti culturali e i linguaggi di base; il secondo è dedicato alle tecniche costruttive e di controllo ambientale, mentre il terzo è focalizzato sul progetto urbano contemporaneo. L’esperienza centrale del triennio sono i workshop estivi di Architettura: tre settimane di progettazione intensiva sotto la guida di architetti di fama internazionale. Un’esperienza di straordinaria efficacia che non ha uguali nel mondo della formazione universitaria.

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

    Classe

    +

    L-17 - Classe delle lauree in Scienze dell'architettura

    +
    +
    +

    Titolo ottenuto

    +

    Laurea triennale in Architettura

    +
    +
    +

    Crediti

    +

    180 CFU

    +
    +
    +

    Durata

    +

    3 anni

    +
    +
    +

    Coordinamento

    +

    Mauro Cristina Marzo

    +
    +
    +

    Lingua

    +

    Italiano

    +
    +
    +

    Sede

    +

    Venezia

    +
    +
    +

    Dipartimento

    +

    Dipartimento di Culture del progetto

    +
    +
    +

    Requisiti di accesso

    +

    Titolo di scuola superiore
    Titolo straniero

    +
    +
    +

    Posti disponibili

    +

    420

    +
    +
    +

    Ripartizione dei posti disponibili

    +

    410 posti per candidati comunitari e non comunitari regolarmente soggiornanti in Italia
    10 posti per candidati non comunitari residenti all’estero

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

    Piano di studi

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

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

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

    Prova titolo
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    +
    + +
    +
    +
    +

    Contributo universitario

    +

    2.743,10 €
    Informazioni sulle riduzioni per ISEE inferiore a 30.000 €

    +
    +
    +

    Altre tasse

    +

    184 €
    tassa regionale

    16 €
    imposta di bollo

    +
    +
    +

    Spese aggiuntive

    +

    Potrebbe essere necessario coprire costi aggiuntivi che non sono inclusi nelle tasse universitarie, come alloggi, trasporti e materiali. Maggiori informazioni sulle spese aggiuntive

    +
    +
    +

    Borse di studio

    +

    Nullam imperdiet sollicitudin tempus. Duis id risus semper, pretium neque in, sagittis massa. Nullam facilisis a condimentum. Maggiori informazioni sulle borse di studio. Maggiori informazioni sulle borse di studio

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

    Domande frequenti

    +
    +
    + + + + +
    + + +
    + + +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + +
    +
    + + +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

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

    Contatti principali per architettura

    +
    +
    +
    +
    +

    Gestione didattica e servizi agli studenti

    +
    + +
    +
    +

    Il servizio si occupa della definizione e gestione degli orari delle lezioni, delle iscrizioni alle attività didattiche e degli appelli d’esame. Indirizza gli studenti verso le attività didattiche da sostenere per lo svolgimento del proprio piano di studi, rilascia i programmi dei corsi, si occupa della gestione degli spazi dedicati alla didattica.

    +
    + +
    +
    +
    +
    +

    Iuav Infopoint

    +
    + +
    +
    +

    Applicazione web che offre un unico canale di comunicazione attraverso il quale puoi inviare le tue richieste agli uffici dell’ateneo.

    +
    + +
    +
    +
    +
    +

    Contatti principali per architettura

    +
    +
    +
    +
    +

    Cotonificio

    +
    + +
    + +
    +
    +
    +
    +

    Mauro Cristina Marzo

    +
    + +
    + +
    +
    +
    +
    + +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/corsi-laurea/design-prodotto.html b/build/pages/corsi-laurea/design-prodotto.html new file mode 100644 index 0000000..78a71fc --- /dev/null +++ b/build/pages/corsi-laurea/design-prodotto.html @@ -0,0 +1,3253 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + + + +
    + +
    + +
    + + + +
    +
    +

    Progettazione e sviluppo tra innovazione e tradizione

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

    I designer sono figure in grado di progettare e sviluppare prodotti, servizi, sistemi grafici, ambienti e attrezzature, operando a cavallo fra diverse discipline e confrontandosi con tutte le attività che contribuiscono al processo realizzativo.

    +

    Il percorso triennale in Design all’Università Iuav di Venezia offre l’opportunità di sperimentare sia ambiti tradizionalmente legati al progetto come gli oggetti d’uso o l’editoria, sia temi emergenti della contemporaneità come il benessere individuale e sociale, la sostenibilità ambientale, l’energia, le sfide della digitalizzazione.br>Rispondendo con completezza alle esigenze del tessuto economico e produttivo, l’articolato programma formativo include, oltre ai laboratori – guidati da professionisti esperti – corsi di storia, teoria, critica, informatica, economia, e prevede anche attività didattiche diverse come workshop, seminari, iniziative culturali e tirocini.
    A supporto delle attività curriculari sono a disposizione degli studenti laboratori attrezzati di informatica, fotografia, video, modellistica e prototipazione.

    +

    Il laureato può intraprendere attività professionali in aziende, studi di progettazione, industrie creative, editoria specializzata, imprese manifatturiere nei settori della moda e delle arti, in istituzioni pubbliche o private: per esempio musei, gallerie, centri di produzione video e multimediale, centri di documentazione e archivi.

    + + +
    +
    + +
    +
    +

    Coordinatore e studenti raccontano il corso di laurea. Video © Nome Cognome

    +
    +
    +
    +
    +
    + +
    +
    +
    +

    Classe

    +

    L-4 - Classe delle lauree in Disegno industriale

    +
    +
    +

    Titolo ottenuto

    +

    Laurea triennale in Disegno industriale

    +
    +
    +

    Crediti

    +

    180 CFU

    +
    +
    +

    Durata

    +

    3 anni

    +
    +
    +

    Coordinamento

    +

    Fiorella Bulegato

    +
    +
    +

    Lingua

    +

    Italiano

    +
    +
    +

    Sede

    +

    Venezia

    +
    +
    +

    Dipartimento

    +

    Dipartimento di Culture del progetto

    +
    +
    +

    Requisiti di accesso

    +

    Titolo di scuola superiore
    Titolo straniero

    +
    +
    +

    Posti disponibili

    +

    180

    +
    +
    +
    + + +
    +
    + + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + + Curriculum Interior Design - Immagine 1 + +
    +
    + + + + Curriculum Interior Design - Immagine 2 + +
    +
    + + + + Curriculum Interior Design - Immagine 3 + +
    +
    + + + + Curriculum Interior Design - Immagine 4 + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +
    +
    +
    + Interior design allo Iuav è un percorso di studio unico nel panorama nazionale. Muovendoti fra discipline diverse come exhibit, retail, interior, interaction e visual design, imparerai a coordinare progetti complessi per tutti quegli spazi che definiscono la nostra vita quotidiana. +
    +
    +
    +
    +
    +

    Referente

    +

    Emanuela Bonini Lessing

    +
    +
    +

    Posti disponibili

    +

    60

    +
    +
    +

    Ripartizione dei posti disponibili

    +

    55 posti per cittadini europei e internazionali regolarmente soggiornanti in Italia
    5 posti per candidati internazionali residenti all’estero

    +
    +
    +
    +
    +

    Mettendo in primo piano le esigenze delle persone, sarai impegnato nell’ideazione di soluzioni innovative per ambienti abitativi e di lavoro, allestimenti per esposizioni, per eventi fieristici e per l’intrattenimento, nonché progetti per “spazi minimi” come quelli dei mezzi di trasporto.

    +

    Accanto ai laboratori di progetto, i corsi teorici ti forniscono le conoscenze metodologiche e strumentali, tecnico-scientifiche ed economiche, storico-critiche e umanistiche. Tutte le esperienze che affronterai ti prepareranno a entrare subito nel mondo del lavoro oppure a scegliere in maniera consapevole come proseguire gli studi.

    +
    +
    + + + +
    +
    +

    Piano di studi

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

    L’offerta si arricchisce di corsi, workshop e attività che possono essere scelti dallo studente anche tra le esperienze formative presenti negli altri percorsi di studi Iuav.

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + +
    +
    +

    Piano di studi

    +
    +
    + + + + + +
    + + + + +
    + Primo anno +
    + +
    +
    + + + + +
    + Secondo anno +
    + +
    +
    + + + + +
    + Terzo anno +
    + +
    +
    + + + + +
    + Attività non inserite in uno specifico anno di corso +
    + +
    +
    + + + + +
    + + + +
    +
    +
    + + +
    + +
    + + + +
    + + + + + + +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

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

    Prova titolo
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    +
    + +
    +
    +
    +

    Contributo universitario

    +

    2.743,10 €
    Informazioni sulle riduzioni per ISEE inferiore a 30.000 €

    +
    +
    +

    Altre tasse

    +

    184 €
    tassa regionale

    16 €
    imposta di bollo

    +
    +
    +

    Spese aggiuntive

    +

    Potrebbe essere necessario coprire costi aggiuntivi che non sono inclusi nelle tasse universitarie, come alloggi, trasporti e materiali. Maggiori informazioni sulle spese aggiuntive

    +
    +
    +

    Borse di studio

    +

    Nullam imperdiet sollicitudin tempus. Duis id risus semper, pretium neque in, sagittis massa. Nullam facilisis a condimentum. Maggiori informazioni sulle borse di studio. Maggiori informazioni sulle borse di studio

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

    Domande frequenti

    +
    +
    + + + + +
    + + +
    + + +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + +
    +
    + + +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id? +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

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

    Contatti principali per architettura

    +
    +
    +
    +
    +

    Gestione didattica e servizi agli studenti

    +
    + +
    +
    +

    Il servizio si occupa della definizione e gestione degli orari delle lezioni, delle iscrizioni alle attività didattiche e degli appelli d’esame. Indirizza gli studenti verso le attività didattiche da sostenere per lo svolgimento del proprio piano di studi, rilascia i programmi dei corsi, si occupa della gestione degli spazi dedicati alla didattica.

    +
    + +
    +
    +
    +
    +

    Iuav Infopoint

    +
    + +
    +
    +

    Applicazione web che offre un unico canale di comunicazione attraverso il quale puoi inviare le tue richieste agli uffici dell’ateneo.

    +
    + +
    +
    +
    +
    +

    Contatti principali per architettura

    +
    +
    +
    +
    +

    Cotonificio

    +
    + +
    + +
    +
    +
    +
    +

    Mauro Cristina Marzo

    +
    + +
    + +
    +
    +
    +
    + +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/corsi-laurea/design.html b/build/pages/corsi-laurea/design.html new file mode 100644 index 0000000..7f02512 --- /dev/null +++ b/build/pages/corsi-laurea/design.html @@ -0,0 +1,2384 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + + + +
    + +
    + +
    + + + +
    +
    +

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

    Classe

    +

    L-4 - Classe delle lauree in Disegno industriale

    +
    +
    +

    Titolo ottenuto

    +

    Laurea triennale in Disegno industriale

    +
    +
    +

    Crediti

    +

    180 CFU

    +
    +
    +

    Durata

    +

    3 anni

    +
    +
    +

    Coordinamento

    +

    Laura Badalucco

    +
    +
    +

    Lingua

    +

    Italiano

    +
    +
    +

    Sede

    +

    Venezia

    +
    +
    +

    Dipartimento

    +

    Dipartimento di Culture del progetto

    +
    +
    +

    Requisiti di accesso

    +

    Titolo di scuola superiore
    Titolo straniero

    +
    +
    +

    Posti disponibili

    +

    60

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

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    +
    + + + +
    +
    +

    Download

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

    Prova titolo
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    +
    + +
    +
    +
    +
    +
    + +
    + + +
    +
    + +
    +
    + <> +
    +
    +
    + + + + + +
    +
    +
    +
    + + +
    + + + + + +
    +
    +
    +
    +
    + + +
    + + + + + +
    +
    +
    +
    +
    + + +
    + + +
    +
    +

    Domande frequenti

    +
    +
    + + + + +
    + + + + +
    + +
    + + + + +
    + +
    +
    + <> +
    +
    +
    + +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/corsi-laurea/index.html b/build/pages/corsi-laurea/index.html new file mode 100644 index 0000000..78bb2b6 --- /dev/null +++ b/build/pages/corsi-laurea/index.html @@ -0,0 +1,2534 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + + + +
    + +
    +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +
    + + +
    +
    +
    +

    Architettura

    +
    +
    +

    I corsi di laurea in Architettura Iuav interpretano i bisogni di un mondo della professione in evoluzione: oggi un architetto deve essere in grado di leggere i luoghi, conoscerne la storia, coordinare competenze disciplinari diverse. Deve sapere comporre sensibilità umanistica, conoscenze tecniche e senso civico, per collaborare alla costruzione di spazi, città e ambienti sostenibili.

    +
    +
    +
    + +
    +
    +
    +

    Classe

    +

    L-17 - Classe delle lauree in Scienze dell'architettura

    +
    +
    +

    Posti disponibili

    +

    420

    +
    +
    +

    Crediti

    +

    180 CFU

    +
    +
    +

    Coordinamento

    +

    Mauro Cristina Marzo

    +
    +
    +
    + + Vai alla pagina del corso + + +
    +
    + +
    +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +
    + + +
    +
    +
    +

    Design

    +
    +
    +

    II corso di studi affronta questioni sostanziali per il futuro della produzione e dei consumi come la sostenibilità, la digitalizzazione e il design per l’economia circolare, prestando attenzione alle nuove metodologie di progettazione dei prodotti e all’applicazione di tecnologie emergenti.

    +
    +
    +
    + +
    +
    +
    +

    Classe

    +

    L-4 - Classe delle lauree in Disegno industriale

    +
    +
    +

    Posti disponibili

    +

    60

    +
    +
    +

    Crediti

    +

    180 CFU

    +
    +
    +

    Coordinamento

    +

    Laura Badalucco

    +
    +
    +
    + + Vai alla pagina del corso + + +
    +
    + +
    +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +
    + + +
    +
    +
    +

    Design del prodotto, della comunicazione visiva e degli interni

    +
    +
    +

    Il percorso triennale in Design all’Università Iuav di Venezia offre l’opportunità di sperimentare sia ambiti tradizionalmente legati al progetto come gli oggetti d’uso o l’editoria, sia temi emergenti della contemporaneità come il benessere individuale e sociale, la sostenibilità ambientale, l’energia, le sfide della digitalizzazione.

    +
    +
    +
    + +
    +
    +
    +

    Classe

    +

    L-4 - Classe delle lauree in Disegno industriale

    +
    +
    +

    Posti disponibili

    +

    180

    +
    +
    +

    Crediti

    +

    180 CFU

    +
    +
    +

    Coordinamento

    +

    Fiorella Bulegato

    +
    +
    +
    + + Vai alla pagina del corso + + +
    +
    + +
    +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +
    + + +
    +
    +
    +

    Design della moda e arti multimediali

    +
    +
    +

    Il corso di studi intreccia carattere sperimentale con metodologie analitiche e progettuali, insieme a una particolare attenzione alla cultura materiale. Si occupa di processi creativi e prodotti creando uno stretto dialogo tra ricerca artistica e pratica del design. Integra il concetto di innovazione tecnologica, ampliandolo ai temi del corpo, identità, e memoria nella cultura visiva e progettuale contemporanea.

    +
    +
    +
    + +
    +
    +
    +

    Classe

    +

    L-4 - Classe delle lauree in Disegno industriale

    +
    +
    +

    Posti disponibili

    +

    210

    +
    +
    +

    Crediti

    +

    180 CFU

    +
    +
    +

    Coordinamento

    +

    Gabriele Monti

    +
    +
    +
    + + Vai alla pagina del corso + + +
    +
    + +
    +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +
    + + +
    +
    +
    +

    Urbanistica e pianificazione del territorio

    +
    +
    +

    Il corso di laurea in urbanistica e pianificazione all’Università Iuav di Venezia offre l’opportunità di comprendere e orientare le trasformazioni di città e territori, degli spazi costruiti e dell’ambiente naturale, ma anche e soprattutto delle persone che li abitano.

    +
    +
    +
    + +
    +
    +
    +

    Classe

    +

    L-21 - Classe delle lauree in Scienze della pianificazione territoriale, urbanistica, paesaggistica e ambientale

    +
    +
    +

    Posti disponibili

    +

    Accesso libero

    +
    +
    +

    Crediti

    +

    180 CFU

    +
    +
    +

    Coordinamento

    +

    Laura Fregolent

    +
    +
    +
    + + Vai alla pagina del corso + + +
    + + + +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/corsi/botanica-innovazione.html b/build/pages/corsi/botanica-innovazione.html new file mode 100644 index 0000000..ff2b858 --- /dev/null +++ b/build/pages/corsi/botanica-innovazione.html @@ -0,0 +1,2344 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + + + + +
    +

    Lo studente acquisisce la conoscenza dei lineamenti di botanica generale e sistematica e, analizzando forme e processi microscopici, approfondisce l’evoluzione delle relazioni tra lo studio degli organismi vegetali e l’innovazione (di prodotti e processi) anche attraverso l'analisi di casi studio. Il corso fornisce, infine, gli strumenti per interpretare strutture e processi degli organismi vegetali al fine di utilizzare tali conoscenze nell'ambito del progetto di design.

    +
    +
    +
    +
    +

    Corso di studi

    +

    Design

    +
    +
    +

    Curriculum

    +

    Percorso comune

    +
    +
    +

    Docente

    +

    Armeli Minicante Simona

    +
    +
    +

    Tipo di attività didattica

    +

    Lezione

    +
    +
    +

    Tipo di insegnamento

    +

    Opzionale

    +
    +
    +

    Settore scientifico disciplinare

    +

    BIO/03

    +
    +
    +

    Anno accademico

    +

    2023/2024

    +
    +
    +

    Anno di corso di laurea

    +

    1

    +
    +
    +

    Periodo didattico

    +

    Secondo Semestre (dal 19/02/2024 al 31/05/2024)

    +
    +
    +

    Durata

    +

    60 ore (60 ore lezione)

    +
    +
    +

    Crediti

    +

    6 CFU

    +
    +
    +

    Tipologia CFU

    +

    C (Affine/Integrativa)

    +
    +
    +

    Lingua

    +

    Italiano

    +
    +
    +

    Sede

    +

    Vicenza

    +
    +
    +
    + + + + + +
    + + +
    + + +
    + Prerequisiti +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Contenuti +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Metodi didattici +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + +
    +
    + + +
    + Verifica dell’apprendimento +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Testi +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Altre informazioni +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

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

    Simona Armeli Minicante

    +

    Docente a contratto

    +
    + +
    + +
    +
    +
    +
    + +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/corsi/laboratorio-design-prodotto.html b/build/pages/corsi/laboratorio-design-prodotto.html new file mode 100644 index 0000000..1a85519 --- /dev/null +++ b/build/pages/corsi/laboratorio-design-prodotto.html @@ -0,0 +1,2381 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + + + + + +
    +
    +
    +

    Corso di studi

    +

    Design

    +
    +
    +

    Curriculum

    +

    Percorso comune

    +
    +
    +

    Tipo di attività didattica

    +

    Laboratorio

    +
    +
    +

    Tipo di insegnamento

    +

    Obbligatorio

    +
    +
    +

    Anno accademico

    +

    2023/2024

    +
    +
    +

    Anno di corso di laurea

    +

    1

    +
    +
    +

    Periodo didattico

    +

    Secondo Semestre (dal 19/02/2024 al 31/05/2024)

    +
    +
    +

    Durata

    +

    120 ore (120 ore laboratorio)

    +
    +
    +

    Crediti

    +

    12 CFU

    +
    +
    +

    Lingua

    +

    Italiano

    +
    +
    +

    Sede

    +

    Vicenza

    +
    +
    +
    + +
    +

    Design per la produzione industriale

    +
    +
    +
    +

    Docente

    +

    Buffagni Alessia

    +
    +
    +

    Settore scientifico disciplinare

    +

    ICAR/13

    +
    +
    +

    Durata

    +

    90 ore (90 ore Laboratorio)

    +
    +
    +

    Crediti

    +

    9 CFU

    +
    +
    +

    Tipologia CFU

    +

    B (Caratterizzante)

    +
    +
    +
    +
    +
    +

    Elementi di design strutturale dei prodotti

    +
    +
    +
    +

    Docente

    +

    Russo Salvatore

    +
    +
    +

    Settore scientifico disciplinare

    +

    ICAR/09

    +
    +
    +

    Durata

    +

    30 ore (30 ore Laboratorio)

    +
    +
    +

    Crediti

    +

    3 CFU

    +
    +
    +
    +
    + + + + + +
    + + +
    + + +
    + Prerequisiti +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Contenuti +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Metodi didattici +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + +
    +
    + + +
    + Verifica dell’apprendimento +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Testi +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Altre informazioni +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

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

    Simona Armeli Minicante

    +

    Docente a contratto

    +
    + +
    + +
    +
    +
    +
    + +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/eventi.html b/build/pages/eventi.html new file mode 100644 index 0000000..b7d0663 --- /dev/null +++ b/build/pages/eventi.html @@ -0,0 +1,2238 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    +
    Nullam gravida eros ut velit imperdiet, quis gravida tellus porta. Mauris pharetra lorem ante, eu viverra enim suscipit et. Etiam blandit, massa at imperdiet sagittis, mi purus rutrum neque, sit amet convallis urna lectus ac lectus.
    +
    + + +
    + + +
    + +
    25.09.2023
    + +
    + +
    In corso
    + +
    +
    +

    ECTP / AITA 2023. 22nd European Conference and 17th International Workshop fino al 25.09.2023 +

    +
    +
    +

    Open City Research Platform. La ciudad abierta, Ritoque, Valparaìso, Cile fino al 21.10.2023 +

    +
    +
    +
    + +
    +
    +

    + 10:00 - 18:00 + fino al 27.09.2023 +

    +
    Cotonificio, Università Iuav di Venezia
    +
    +
    +

    Attraversamenti. Materie e immaginari

    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    +
    +
    +
    +

    + 10:00 - 18:00 + fino al 26.11.2023 +

    +
    Centro Culturale Altinate, Padova
    +
    +
    +

    Venetie MML. La grande veduta, il lavoro raccontato

    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    +
    + +
    +
    + +
    26.09.2023 +
    + +
    + +
    In corso
    + +
    +
    +

    Attraversamenti. Materie e immaginari fino al 27.09.2023 +

    +
    +
    +

    Venetie MML. La grande veduta, il lavoro raccontato fino al 26.11.2023 +

    +
    +
    +

    Open City Research Platform. La ciudad abierta, Ritoque, Valparaìso, Cile fino al 21.10.2023 +

    +
    +
    +
    + +
    +
    +

    + 10:00 - 18:00 + fino al 30.10.2023 +

    +
    Sala Espositiva Longarone
    +
    +
    +

    Longarone 1963-1972

    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    +
    + +
    + +
    + + + + +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/laboratori/index.html b/build/pages/laboratori/index.html new file mode 100644 index 0000000..9dd11f2 --- /dev/null +++ b/build/pages/laboratori/index.html @@ -0,0 +1,2302 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +

    I laboratori costituiscono un supporto alle attività didattiche e di ricerca del dipartimento e dell’ateneo. Sono dotati di attrezzature all’avanguardia e competenze a elevato grado di specializzazione, svolgono attività scientifiche e professionali nei campi che spaziano dalla rappresentazione alle tecniche di costruzione.

    +
    + +
    +
    + + +

    ArTec – Archivio delle tecniche e dei materiali

    + +
    + + + + + +
    + +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    +
    + + +

    FisTec – Laboratorio di fisica tecnica ambientale

    + +
    + + + + + +
    + +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    +
    + + +

    Circe – Laboratorio di fotogrammetria

    + +
    + + + + + +
    + +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    +
    + + +

    Circe – Laboratorio di cartografia e GIS

    + +
    + + + + + +
    + +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    +
    + + +

    LabSCo – Laboratorio di scienza delle costruzioni

    + +
    + + + + + +
    + +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    +
    + + +

    LAMA – Laboratorio di analisi e materiali antichi

    + +
    + + + + + +
    + +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    +
    + + +

    LAR – Laboratorio di supporto al progetto

    + +
    + + + + + +
    + +
    +

    LAR è una struttura per la ricerca e la didattica che offre servizi per il controllo e lo sviluppo di processi innovativi di rappresentazione dedicati al progetto di architettura, degli artefatti e della loro comunicazione, anche in rapporto alla tutela e alla valorizzazione del patrimonio artistico e culturale, tangibile e intangibile.

    +
    +
    + + +

    MeLa – Media Lab

    + +
    + + + + + +
    + +
    +

    Il Media Lab è una struttura che si occupa di ricerca, sperimentazione e sviluppo nel campo dell’interazione multisensoriale e delle nuove interfacce applicate alla comunicazione dell’architettura e del design, dei prodotti culturali e delle arti visive e performative.

    +
    +
    + + +

    UserLab – Laboratory for user centered applied research

    + +
    + + + + + +
    + +
    +

    Il laboratorio verifica i prodotti industriali, gli artefatti comunicativi (siti web, packaging, brand images, ecc.), i servizi e gli ambienti, studiando la risposta degli utenti con strumenti scientifico-sperimentali.

    +
    +
    + + +

    Laboratorio strumentale per la didattica

    + +
    + + + + + +
    + +
    +

    Il laboratorio gestisce l’insieme dei laboratori per gli studenti mettendo a disposizione spazi, attrezzature e consulenza tecnica per sperimentare ed effettuare attività pratiche.

    +
    +
    +
    +
    +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/news.html b/build/pages/news.html new file mode 100644 index 0000000..a5f245e --- /dev/null +++ b/build/pages/news.html @@ -0,0 +1,2249 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    +
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
    +
    + + +
    + + + +
    + + + + +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/build/pages/sample-page.html b/build/pages/sample-page.html new file mode 100644 index 0000000..f3b6890 --- /dev/null +++ b/build/pages/sample-page.html @@ -0,0 +1,2515 @@ + + + + + + + + + Università Iuav di Venezia + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    + + +
    +
    +

    Testo semplice

    +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus nec felis sed mauris maximus dictum. Quisque rutrum odio at lacinia pellentesque. Integer in sapien purus. Donec finibus, odio nec accumsan porttitor, velit nisl feugiat felis, eget aliquam dui purus et mi. Nulla vel lacinia ligula. Vestibulum a malesuada ante, in luctus sapien. Maecenas maximus ac quam sit amet pulvinar. Nulla quis ornare felis. Pellentesque tempus, urna et fermentum aliquet, tortor ipsum mattis lectus, ac blandit massa libero pellentesque magna. Nunc dignissim eros nunc, non condimentum turpis tristique vel. Aenean efficitur lectus vel enim vulputate tempus. Sed tincidunt arcu at dui facilisis ullamcorper.

    +

    Sottotitolo
    Aliquam ut ligula rutrum, iaculis lorem vel, blandit magna. Donec tempus ut arcu et porta. Sed sit amet sapien in metus bibendum aliquet. Nam porta facilisis augue. Sed pellentesque diam vitae dolor dapibus, at mollis nisi rhoncus. Sed non ultrices enim. Nulla volutpat lacinia nunc eget viverra. Cras tristique est id lorem blandit malesuada. Interdum et malesuada fames ac ante ipsum primis in faucibus.

    +
    +
    +
    + + +
    +
    +

    Bottoni download

    +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    +
    + + +
    +
    + + +
    +
    +

    Accordion di testo

    +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    +
    + + +
    + + + + +
    + Titolo accordion 1 +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Titolo accordion 2 +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Titolo accordion 3 +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Titolo accordion 4 +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Titolo accordion 5 +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

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

    Lista elementi

    +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    +
    +
    +
    +
    +

    List

    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    +
    +

    List

    +

    Nunc ac purus id turpis pretium porta. Morbi lacinia nunc laoreet imperdiet volutpat. Sed nec nunc finibus, blandit erat quis, placerat orci. Donec at mauris ut lorem dictum fermentum nec sed velit.

    +
    +
    +

    List

    +

    Donec lacinia justo nec justo dictum tristique. Maecenas volutpat, nunc a aliquam lobortis, diam magna ultrices nisl, eu pretium eros mi ultricies enim. Cras dignissim sit amet mauris in ornare.

    +
    +
    +

    List

    +

    In id leo ut purus tempus placerat. Fusce ac pulvinar tellus, non lobortis est. Mauris sagittis ligula quis augue auctor ultrices. Curabitur sit amet egestas neque. Duis vulputate est id dignissim tempus. Nulla quis consectetur felis. Aenean volutpat velit tincidunt, viverra velit sed, hendrerit quam.

    +
    +
    +

    List

    +

    Vivamus vel ipsum quis est interdum facilisis. Mauris et arcu est. Etiam ultricies finibus commodo. Phasellus auctor ex sed lacus tristique, sit amet eleifend odio tincidunt.

    +
    +
    +

    List

    +

    Suspendisse commodo lacus luctus libero auctor suscipit. Maecenas non ullamcorper turpis. In suscipit quam interdum venenatis faucibus. Nam consectetur vehicula neque, scelerisque elementum ipsum lobortis vitae.

    +
    +
    +

    List

    +

    Phasellus sit amet faucibus elit. Vivamus lorem mi, posuere et aliquam nec, placerat consequat eros. Praesent justo turpis, feugiat id magna ut, euismod venenatis lacus.

    +
    +
    +

    List

    +

    In hac habitasse platea dictumst. Maecenas lobortis ligula justo, vitae laoreet augue laoreet nec. Mauris faucibus tempor massa, eget sodales arcu elementum quis.

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

    Accordion in evidenza

    +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    +
    + + +
    + + + + +
    + Titolo accordion 1 +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    +
    + +
    +
    + + + + +
    + Titolo accordion 2 +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Titolo accordion 3 +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    +
    + +
    +
    + + + + +
    + Titolo accordion 4 +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

    +
    +
    + + + + +
    + Titolo accordion 5 +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus

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

    Contatti

    +
    +
    +
    +
    +
    +
    +
    +

    Card contatti con descrizione

    +

    Sottotitolo

    +
    + +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    +
    + +
    +
    +
    +
    +

    Card contatti semplice

    +
    + +
    + +
    +
    +
    +
    +
    + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/config.js b/config.js index 1c60409..cd9eafe 100644 --- a/config.js +++ b/config.js @@ -10,6 +10,7 @@ css: "./src/assets/css", js: "./src/assets/js", img: "./src/assets/img", + video: "./src/assets/video", fonts: "./src/assets/fonts" }, build: { @@ -17,6 +18,7 @@ css: "./build/assets/css", js: "./build/assets/js", img: "./build/assets/img", + video: "./build/assets/video", fonts: "./build/assets/fonts" }, dist: { @@ -24,6 +26,7 @@ css: "./dist/assets/css", js: "./dist/assets/js", img: "./dist/assets/img", + video: "./dist/assets/video", fonts: "./dist/assets/fonts" }, plugins: "/assets/js/vendor" diff --git a/data.json b/data.json index f647165..ce9fac1 100644 --- a/data.json +++ b/data.json @@ -4,7 +4,8 @@ "css": "/assets/css", "js": "/assets/js", "plugins": "/assets/js/vendor", - "img": "/assets/img" + "img": "/assets/img", + "video": "/assets/video" } }, "site": { @@ -44,6 +45,10 @@ { "name": "Informazioni per", "url": "#" + }, + { + "name": "Cerca", + "url": "#" } ] }, @@ -247,11 +252,11 @@ "children": [ { "name": "Lauree triennali", - "url": "#", + "url": "/pages/corsi-laurea/index.html", "children": [ { "name": "Architettura", - "url": "#" + "url": "/pages/corsi-laurea/architettura.html" }, { "name": "Design della moda e arti multimediali", @@ -259,7 +264,7 @@ }, { "name": "Design del prodotto, della comunicazione visiva e degli interni", - "url": "#" + "url": "/pages/corsi-laurea/design-prodotto.html" }, { "name": "Design – Disegno industriale, sostenibilità e digitalizzazione (sede di Vicenza)", @@ -2060,66 +2065,137 @@ "items": [ ] }, - "courses": { - "nav": [ - { - "name": "Presentazione", - "url": "#presentazione" - }, - { - "name": "Piano di studi", - "url": "#piano-di-studi" - }, - { - "name": "Selezioni, immatricolazioni e ammissioni", - "url": "#immatricolazioni" - }, - { - "name": "Tasse e contributi", - "url": "#tasse-contributi" - }, - { - "name": "Open Day", - "url": "#open-day" - }, - { - "name": "Ultime news", - "url": "#news" - }, - { - "name": "Avvisi", - "url": "#avvisi" - }, - { - "name": "Domande frequenti", - "url": "#faq" - }, - { - "name": "Contatti", - "url": "#contatti" - } - ], + "degrees": { "items": [ { "title": "Architettura", - "banner_title": "La lunga tradizione della scuola di architettura, da Aldo Rossi a Carlo Scarpa", + "url": "/pages/corsi-laurea/architettura.html", "terms": [0], "image": { "filename": "architettura", "path": "/post_type/corsi", "alt": "iuav-laurea-triennale-architettura" }, - "course_class": "L-4 - Classe delle lauree in Disegno industriale", - "course_seats": "420", - "course_cfu": "180 CFU", - "course_duration": "3 anni", - "course_coordination": "Mauro Cristina Marzo", - "course_title": "Laurea triennale in Architettura", - "course_language": "Italiano", - "course_location": "Venezia", - "course_department": "Dipartimento di Culture del progetto", - "course_requirements": "Titolo di scuola superiore
    Titolo straniero", - "course_links": [ + "nav": [ + { + "name": "Presentazione", + "url": "#presentazione" + }, + { + "name": "Piano di studi", + "url": "#piano-di-studi" + }, + { + "name": "Selezioni, immatricolazioni e ammissioni", + "url": "#immatricolazioni" + }, + { + "name": "Tasse e contributi", + "url": "#tasse-contributi" + }, + { + "name": "Open Day", + "url": "#focus" + }, + { + "name": "Ultime news", + "url": "#news" + }, + { + "name": "Avvisi", + "url": "#avvisi" + }, + { + "name": "Domande frequenti", + "url": "#faq" + }, + { + "name": "Contatti", + "url": "#contatti" + } + ], + "degree_images": [ + { + "filename": "architettura-4", + "path": "/post_type/corsi" + }, + { + "filename": "architettura-5", + "path": "/post_type/corsi" + }, + { + "filename": "architettura-6", + "path": "/post_type/corsi" + }, + { + "filename": "architettura-7", + "path": "/post_type/corsi" + }, + { + "filename": "architettura-8", + "path": "/post_type/corsi" + } + ], + "degree_banner": { + "text": "La lunga tradizione della scuola di architettura, da Aldo Rossi a Carlo Scarpa", + "video": { + "filename": "iuav-architettura", + "atts": "muted autoplay loop", + "path": "" + } + }, + "degree_info": { + "key": "grid-list", + "content": { + "items": [ + { + "label": "Classe", + "text": "L-17 - Classe delle lauree in Scienze dell'architettura" + }, + { + "label": "Titolo ottenuto", + "text": "Laurea triennale in Architettura" + }, + { + "label": "Crediti", + "text": "180 CFU" + }, + { + "label": "Durata", + "text": "3 anni" + }, + { + "label": "Coordinamento", + "text": "Mauro Cristina Marzo" + }, + { + "label": "Lingua", + "text": "Italiano" + }, + { + "label": "Sede", + "text": "Venezia" + }, + { + "label": "Dipartimento", + "text": "Dipartimento di Culture del progetto" + }, + { + "label": "Requisiti di accesso", + "text": "Titolo di scuola superiore
    Titolo straniero" + }, + { + "label": "Posti disponibili", + "text": "420" + }, + { + "label": "Ripartizione dei posti disponibili", + "text": "410 posti per candidati comunitari e non comunitari regolarmente soggiornanti in Italia
    10 posti per candidati non comunitari residenti all’estero" + } + ] + } + }, + "degree_links": [ { "name": "Orario delle lezioni", "url": "http://ext-domain.com", @@ -2141,14 +2217,36 @@ "external_name": null } ], - "excerpt": "", + "excerpt": "I corsi di laurea in Architettura Iuav interpretano i bisogni di un mondo della professione in evoluzione: oggi un architetto deve essere in grado di leggere i luoghi, conoscerne la storia, coordinare competenze disciplinari diverse. Deve sapere comporre sensibilità umanistica, conoscenze tecniche e senso civico, per collaborare alla costruzione di spazi, città e ambienti sostenibili.", "content": "

    Per chi sceglie Architettura, il luogo in cui si studia è particolarmente importante. E Venezia è la scuola del progetto. Studiare Architettura a Venezia significa vivere un'esperienza di studi unica, in una città che offre una lezione costante di storia, di arte, di sostenibilità.

    I corsi di laurea in Architettura Iuav interpretano i bisogni di un mondo della professione in evoluzione: oggi un architetto deve essere in grado di leggere i luoghi, conoscerne la storia, coordinare competenze disciplinari diverse. Deve sapere comporre sensibilità umanistica, conoscenze tecniche e senso civico, per collaborare alla costruzione di spazi, città e ambienti sostenibili. Studiare Architettura a Venezia significa intraprendere un percorso orientato alla formazione di un progettista consapevole, capace di prendersi cura dell’ambiente fisico in cui vive una collettività e consegnarlo al futuro.

    Il corso si caratterizza per il confronto continuo fra teoria e pratica, tra sapere e saper fare. Il laboratorio integrato è lo spazio della sperimentazione, dove chi studia verifica le conoscenze acquisite e le relazioni interdisciplinari che definiscono un progetto di architettura. Il percorso formativo trasmette le conoscenze culturali, metodologiche e tecniche che, alla fine del triennio, permettono al laureato di operare professionalmente con competenza e autonomia e offrire la base per proseguire gli studi con il corso di laurea magistrale. I workshop e i corsi monodisciplinari costruiscono un percorso ricco e articolato, che favorisce la maturazione di capacità critiche e pratico-operative. Il primo anno fornisce gli orizzonti culturali e i linguaggi di base; il secondo è dedicato alle tecniche costruttive e di controllo ambientale, mentre il terzo è focalizzato sul progetto urbano contemporaneo. L’esperienza centrale del triennio sono i workshop estivi di Architettura: tre settimane di progettazione intensiva sotto la guida di architetti di fama internazionale. Un’esperienza di straordinaria efficacia che non ha uguali nel mondo della formazione universitaria.

    ", - "content_image": { - "filename": "architettura-2", - "path": "/post_type/corsi", - "alt": "iuav-laurea-triennale-architettura" - }, - "course_study_plan": [ + "content_blocks": [ + { + "key": "carousel", + "content": { + "items": [ + { + "filename": "architettura-2", + "path": "/post_type/corsi", + "alt": "iuav-laurea-triennale-architettura", + "caption": "Nullam auctor eget libero ac malesuada. In efficitur quam pulvinar accumsan placerat. Quisque mollis eros id congue posuere. Foto © Nome Cognome" + }, + { + "filename": "architettura-3", + "path": "/post_type/corsi", + "alt": "iuav-laurea-triennale-architettura", + "caption": "Lorem ipsum dolor sit amet consectetur adipiscing elit. Nullam auctor eget libero ac malesuada. Foto © Nome Cognome" + }, + { + "filename": "architettura", + "path": "/post_type/corsi", + "alt": "iuav-laurea-triennale-architettura", + "caption": "Ut quis sollicitudin elit. Integer eleifend faucibus nisi a convallis. Fusce efficitur vitae nisi et faucibus. Sed feugiat augue id orci suscipit ultricies. Foto © Nome Cognome" + } + ] + } + } + ], + "degree_study_plan": [ [ { "name": "Storia dell'Architettura 1", @@ -2184,7 +2282,8 @@ } ] ], - "course_enrollment": { + "degree_curricula": null, + "degree_enrollment": { "files": [ { "name": "Test 2022/2023", @@ -2208,11 +2307,11 @@ } ] }, - "course_taxes": { + "degree_taxes": { "items": [ { "label": "Contributo universitario", - "text": "2.743,10 €
    Informazioni sulle riduzioni per ISEE inferiore a 30 000 €" + "text": "2.743,10 €
    Informazioni sulle riduzioni per ISEE inferiore a 30.000 €" }, { "label": "Altre tasse", @@ -2228,7 +2327,7 @@ } ] }, - "course_focus": { + "degree_focus": { "key": "featured-content-stacked", "classes": "", "content": { @@ -2240,7 +2339,7 @@ "title": "Open day", "link": { "url": "#", - "label": "Section link" + "label": "Maggiori informazioni" } } }, @@ -2256,7 +2355,7 @@ } } }, - "course_news": { + "degree_news": { "key": "tease-row", "classes": "", "content": { @@ -2268,7 +2367,7 @@ ] } }, - "course_notices": { + "degree_notices": { "key": "tease-row", "classes": "", "content": { @@ -2280,9 +2379,10 @@ ] } }, - "course_faq": { + "degree_faq": { "key": "accordion", - "classes": "block-accordion--sm block-accordion--2cols", + "classes": "block-accordion--sm", + "multi_columns": true, "content": { "items": [ { @@ -2336,7 +2436,7 @@ ] } }, - "course_contacts": { + "degree_contacts": { "key": "contacts-section", "classes": "", "title": { @@ -2344,7 +2444,11 @@ "tag": "h2", "classes": "block-title--sm", "content": { - "title": "Contatti" + "title": "Contatti", + "link": { + "label": "Vedi tutti", + "url": "#" + } } }, "content": [ @@ -2380,6 +2484,7 @@ }, { "title": "Contatti principali per architettura", + "classes": "contacts-section-cards-row__inner-squares", "items": [ { "title": "Cotonificio", @@ -2401,7 +2506,7 @@ } ] }, - "course_contacts_2": [ + "degree_contacts_2": [ { "title": "Contatti principali per achitettura", "items": [ @@ -2429,6 +2534,1260 @@ ] } ] + }, + { + "title": "Design", + "url": "/pages/corsi-laurea/design.html", + "terms": [0], + "image": { + "filename": "design", + "path": "/post_type/corsi", + "alt": "iuav-laurea-triennale-design-prodotto" + }, + "nav": [], + "degree_images": [ + { + "filename": "design-1", + "path": "/post_type/corsi" + }, + { + "filename": "design-2", + "path": "/post_type/corsi" + }, + { + "filename": "design-3", + "path": "/post_type/corsi" + }, + { + "filename": "design-4", + "path": "/post_type/corsi" + }, + { + "filename": "design-5", + "path": "/post_type/corsi" + } + ], + "degree_banner": {}, + "degree_info": { + "key": "grid-list", + "content": { + "items": [ + { + "label": "Classe", + "text": "L-4 - Classe delle lauree in Disegno industriale" + }, + { + "label": "Titolo ottenuto", + "text": "Laurea triennale in Disegno industriale" + }, + { + "label": "Crediti", + "text": "180 CFU" + }, + { + "label": "Durata", + "text": "3 anni" + }, + { + "label": "Coordinamento", + "text": "Laura Badalucco" + }, + { + "label": "Lingua", + "text": "Italiano" + }, + { + "label": "Sede", + "text": "Venezia" + }, + { + "label": "Dipartimento", + "text": "Dipartimento di Culture del progetto" + }, + { + "label": "Requisiti di accesso", + "text": "Titolo di scuola superiore
    Titolo straniero" + }, + { + "label": "Posti disponibili", + "text": "60" + } + ] + } + }, + "degree_links": [], + "excerpt": "II corso di studi affronta questioni sostanziali per il futuro della produzione e dei consumi come la sostenibilità, la digitalizzazione e il design per l’economia circolare, prestando attenzione alle nuove metodologie di progettazione dei prodotti e all’applicazione di tecnologie emergenti.", + "content": "", + "content_blocks": [], + "degree_study_plan": null, + "degree_curricula": [], + "degree_tabs": {}, + "degree_enrollment": {}, + "degree_taxes": {}, + "degree_focus": {}, + "degree_news": {}, + "degree_notices": {}, + "degree_faq": {}, + "degree_contacts": {}, + "degree_contacts_2": [] + }, + { + "title": "Design del prodotto, della comunicazione visiva e degli interni", + "url": "/pages/corsi-laurea/design-prodotto.html", + "terms": [0], + "image": { + "filename": "design", + "path": "/post_type/corsi", + "alt": "iuav-laurea-triennale-design-prodotto" + }, + "nav": [ + { + "name": "Presentazione", + "url": "#presentazione" + }, + { + "name": "Curriculum", + "url": "#curricula" + }, + { + "name": "Selezioni, immatricolazioni e ammissioni", + "url": "#immatricolazioni" + }, + { + "name": "Tasse e contributi", + "url": "#tasse-contributi" + }, + { + "name": "Open Day", + "url": "#focus" + }, + { + "name": "Ultime news", + "url": "#news" + }, + { + "name": "Avvisi", + "url": "#avvisi" + }, + { + "name": "Domande frequenti", + "url": "#faq" + }, + { + "name": "Contatti", + "url": "#contatti" + } + ], + "degree_images": [ + { + "filename": "design-prodotto-1", + "path": "/post_type/corsi" + }, + { + "filename": "design-prodotto-2", + "path": "/post_type/corsi" + }, + { + "filename": "design-prodotto-3", + "path": "/post_type/corsi" + }, + { + "filename": "design-prodotto-4", + "path": "/post_type/corsi" + }, + { + "filename": "design-prodotto-5", + "path": "/post_type/corsi" + } + ], + "degree_banner": { + "text": "Progettazione e sviluppo tra innovazione e tradizione", + "video": { + "filename": "iuav-design", + "atts": "muted autoplay loop", + "path": "" + } + }, + "degree_info": { + "key": "grid-list", + "content": { + "items": [ + { + "label": "Classe", + "text": "L-4 - Classe delle lauree in Disegno industriale" + }, + { + "label": "Titolo ottenuto", + "text": "Laurea triennale in Disegno industriale" + }, + { + "label": "Crediti", + "text": "180 CFU" + }, + { + "label": "Durata", + "text": "3 anni" + }, + { + "label": "Coordinamento", + "text": "Fiorella Bulegato" + }, + { + "label": "Lingua", + "text": "Italiano" + }, + { + "label": "Sede", + "text": "Venezia" + }, + { + "label": "Dipartimento", + "text": "Dipartimento di Culture del progetto" + }, + { + "label": "Requisiti di accesso", + "text": "Titolo di scuola superiore
    Titolo straniero" + }, + { + "label": "Posti disponibili", + "text": "180" + } + ] + } + }, + "degree_links": [ + { + "name": "Orario delle lezioni", + "url": "http://ext-domain.com", + "external_name": "EasyStaff" + }, + { + "name": "Area riservata", + "url": "http://ext-domain.com", + "external_name": "MyIuav" + }, + { + "name": "Calendario didattico", + "url": "#", + "external_name": null + }, + { + "name": "Tipologia CFU", + "url": "#", + "external_name": null + } + ], + "excerpt": "Il percorso triennale in Design all’Università Iuav di Venezia offre l’opportunità di sperimentare sia ambiti tradizionalmente legati al progetto come gli oggetti d’uso o l’editoria, sia temi emergenti della contemporaneità come il benessere individuale e sociale, la sostenibilità ambientale, l’energia, le sfide della digitalizzazione.", + "content": "

    I designer sono figure in grado di progettare e sviluppare prodotti, servizi, sistemi grafici, ambienti e attrezzature, operando a cavallo fra diverse discipline e confrontandosi con tutte le attività che contribuiscono al processo realizzativo.

    Il percorso triennale in Design all’Università Iuav di Venezia offre l’opportunità di sperimentare sia ambiti tradizionalmente legati al progetto come gli oggetti d’uso o l’editoria, sia temi emergenti della contemporaneità come il benessere individuale e sociale, la sostenibilità ambientale, l’energia, le sfide della digitalizzazione.br>Rispondendo con completezza alle esigenze del tessuto economico e produttivo, l’articolato programma formativo include, oltre ai laboratori – guidati da professionisti esperti – corsi di storia, teoria, critica, informatica, economia, e prevede anche attività didattiche diverse come workshop, seminari, iniziative culturali e tirocini.
    A supporto delle attività curriculari sono a disposizione degli studenti laboratori attrezzati di informatica, fotografia, video, modellistica e prototipazione.

    Il laureato può intraprendere attività professionali in aziende, studi di progettazione, industrie creative, editoria specializzata, imprese manifatturiere nei settori della moda e delle arti, in istituzioni pubbliche o private: per esempio musei, gallerie, centri di produzione video e multimediale, centri di documentazione e archivi.

    ", + "content_blocks": [ + { + "key": "video", + "content": { + "filename": "test", + "ext": "mp4", + "path": "", + "caption": "Coordinatore e studenti raccontano il corso di laurea. Video © Nome Cognome" + } + } + ], + "degree_study_plan": null, + "degree_curricula": [ + { + "name": "Interior design", + "excerpt": "Interior design allo Iuav è un percorso di studio unico nel panorama nazionale. Muovendoti fra discipline diverse come exhibit, retail, interior, interaction e visual design, imparerai a coordinare progetti complessi per tutti quegli spazi che definiscono la nostra vita quotidiana.", + "images": [ + { + "filename": "design-c-1", + "path": "/post_type/corsi", + "alt": "Curriculum Interior Design - Immagine 1" + }, + { + "filename": "design-c-2", + "path": "/post_type/corsi", + "alt": "Curriculum Interior Design - Immagine 2" + }, + { + "filename": "design-c-3", + "path": "/post_type/corsi", + "alt": "Curriculum Interior Design - Immagine 3" + }, + { + "filename": "design-c-4", + "path": "/post_type/corsi", + "alt": "Curriculum Interior Design - Immagine 4" + }, + { + "filename": "hero-1", + "path": "/blocks/hero-banner", + "alt": "" + }, + { + "filename": "hero-2", + "path": "/blocks/hero-banner", + "alt": "" + }, + { + "filename": "hero-4", + "path": "/blocks/hero-banner", + "alt": "" + }, + { + "filename": "hero-3", + "path": "/blocks/hero-banner", + "alt": "" + } + ], + "info": { + "key": "grid-list", + "content": { + "items": [ + { + "label": "Referente", + "text": "Emanuela Bonini Lessing" + }, + { + "label": "Posti disponibili", + "text": "60" + }, + { + "label": "Ripartizione dei posti disponibili", + "text": "55 posti per cittadini europei e internazionali regolarmente soggiornanti in Italia
    5 posti per candidati internazionali residenti all’estero" + } + ] + } + }, + "content": "

    Mettendo in primo piano le esigenze delle persone, sarai impegnato nell’ideazione di soluzioni innovative per ambienti abitativi e di lavoro, allestimenti per esposizioni, per eventi fieristici e per l’intrattenimento, nonché progetti per “spazi minimi” come quelli dei mezzi di trasporto.

    Accanto ai laboratori di progetto, i corsi teorici ti forniscono le conoscenze metodologiche e strumentali, tecnico-scientifiche ed economiche, storico-critiche e umanistiche. Tutte le esperienze che affronterai ti prepareranno a entrare subito nel mondo del lavoro oppure a scegliere in maniera consapevole come proseguire gli studi.

    ", + "study_plan": [ + [ + { + "name": "Teorie e pratiche dei media", + "url": "#" + }, + { + "name": "Cultura della città e progetto sostenibile", + "url": "#" + }, + { + "name": "Storia degli allestimenti", + "url": "#" + }, + { + "name": "Laboratorio di interior design", + "url": "#" + }, + { + "name": "Lingua e cultura inglese per il design", + "url": "#" + }, + { + "name": "Laboratorio di exhibit ed environmental graphic design", + "url": "#" + }, + { + "name": "Economia e innovazione d’impresa", + "url": "#" + }, + { + "name": "Elementi di impiantistica", + "url": "#" + } + ] + ], + "inner_blocks": [ + { + "key": "paragraph", + "classes": "block-paragraph--1col", + "content": "

    L’offerta si arricchisce di corsi, workshop e attività che possono essere scelti dallo studente anche tra le esperienze formative presenti negli altri percorsi di studi Iuav.

    " + } + ] + }, + { + "name": "Product e visual design", + "excerpt": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." + } + ], + "degree_tabs": { + "key": "featured-tabs", + "classes": "", + "content": [ + { + "name": "Laboratori", + "image": { + "filename": "design-lab", + "path": "/post_type/corsi", + "alt": "corso di design, laboratori" + }, + "text": "

    Avrai a disposizione spazi attrezzati per sperimentare diversi strumenti e materiali e realizzare i tuoi progetti: laboratori di modellistica, informatici e multimediali, studi fotografici, fablab e centri di stampa.

    " + }, + { + "name": "Eventi", + "image": { + "filename": "design-open-lab", + "path": "/post_type/corsi", + "alt": "corso di design, eventi" + }, + "text": "

    Maecenas ac tempus turpis. Proin mauris erat, feugiat nec facilisis nec, mattis et libero. Morbi a magna vitae lacus laoreet rutrum et ac ligula. Maecenas tempor pharetra viverra. Fusce pharetra eu sapien at vehicula.

    " + }, + { + "name": "Tirocini", + "image": { + "filename": "design", + "path": "/post_type/corsi", + "alt": "corso di design, tirocini" + }, + "text": "

    Donec auctor turpis sem, ac eleifend neque suscipit vel. Fusce porta velit metus, nec euismod arcu finibus vitae. In vitae nisi vel magna ultrices placerat.

    " + } + ] + }, + "degree_enrollment": { + "files": [ + { + "name": "Test 2022/2023", + "url": "#" + }, + { + "name": "Risposte esatte test 2022/2023", + "url": "#" + }, + { + "name": "Prova grafica estratta per Arti multimediali 2022/2023", + "url": "#" + }, + { + "name": "Prova grafica estratta per Design della moda 2022/2023", + "url": "#" + }, + { + "name": "Prova grafica estratta per Comunicazione e nuovi media della moda 2022/2023", + "url": "#" + } + ] + }, + "degree_taxes": { + "items": [ + { + "label": "Contributo universitario", + "text": "2.743,10 €
    Informazioni sulle riduzioni per ISEE inferiore a 30.000 €" + }, + { + "label": "Altre tasse", + "text": "184 €
    tassa regionale

    16 €
    imposta di bollo" + }, + { + "label": "Spese aggiuntive", + "text": "Potrebbe essere necessario coprire costi aggiuntivi che non sono inclusi nelle tasse universitarie, come alloggi, trasporti e materiali. Maggiori informazioni sulle spese aggiuntive" + }, + { + "label": "Borse di studio", + "text": "Nullam imperdiet sollicitudin tempus. Duis id risus semper, pretium neque in, sagittis massa. Nullam facilisis a condimentum. Maggiori informazioni sulle borse di studio. Maggiori informazioni sulle borse di studio" + } + ] + }, + "degree_focus": { + "key": "featured-content-stacked", + "classes": "", + "content": { + "title": { + "key": "title", + "classes": "", + "tag": "h2", + "content": { + "title": "Design Open Lab", + "link": { + "url": "#", + "label": "Maggiori informazioni" + } + } + }, + "image": { + "filename": "design-open-lab", + "path": "/post_type/corsi", + "alt": "iuav-laurea-triennale-design-open-lab" + }, + "text": { + "key": "paragraph", + "classes": "", + "content": "

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    " + } + } + }, + "degree_news": { + "key": "tease-row", + "classes": "", + "content": { + "featured": [ + { + "post_type": "news", + "items": [2,3,4,5] + } + ] + } + }, + "degree_notices": { + "key": "tease-row", + "classes": "", + "content": { + "featured": [ + { + "post_type": "notices", + "items": [0,1,2,3] + } + ] + } + }, + "degree_faq": { + "key": "accordion", + "classes": "block-accordion--sm", + "multi_columns": true, + "content": { + "items": [ + { + "title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id?", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus?", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam?", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu?", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id?", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id?", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id?", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id?", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + } + ] + } + }, + "degree_contacts": { + "key": "contacts-section", + "classes": "", + "title": { + "key": "title", + "tag": "h2", + "classes": "block-title--sm", + "content": { + "title": "Contatti", + "link": { + "label": "Vedi tutti", + "url": "#" + } + } + }, + "content": [ + { + "title": "Contatti principali per architettura", + "items": [ + { + "title": "Gestione didattica e servizi agli studenti", + "subtitle": null, + "text": "Il servizio si occupa della definizione e gestione degli orari delle lezioni, delle iscrizioni alle attività didattiche e degli appelli d’esame. Indirizza gli studenti verso le attività didattiche da sostenere per lo svolgimento del proprio piano di studi, rilascia i programmi dei corsi, si occupa della gestione degli spazi dedicati alla didattica.", + "email": "segreteria.corsidistudio@iuav.it", + "phone": null, + "links": null + }, + { + "title": "Iuav Infopoint", + "subtitle": null, + "text": "Applicazione web che offre un unico canale di comunicazione attraverso il quale puoi inviare le tue richieste agli uffici dell’ateneo.", + "email": null, + "phone": null, + "links": [ + { + "name": "Accedi con credenziali Iuav", + "url": "#" + }, + { + "name": "Accedi come utente esterno", + "url": "#" + } + ] + } + ] + }, + { + "title": "Contatti principali per architettura", + "classes": "contacts-section-cards-row__inner-squares", + "items": [ + { + "title": "Cotonificio", + "subtitle": null, + "text": null, + "email": "cotonificio.iuav@colser.com", + "phone": "+39 041 257 1801", + "links": null + }, + { + "title": "Mauro Cristina Marzo", + "subtitle": null, + "text": null, + "email": "mauro.marzo@iuav.it", + "phone": null, + "links": null + } + ] + } + ] + }, + "degree_contacts_2": [ + { + "title": "Contatti principali per achitettura", + "items": [ + ] + }, + { + "title": "Contatti principali per achitettura", + "items": [ + { + "title": "Cotonificio", + "subtitle": null, + "text": null, + "email": "cotonificio.iuav@colser.com", + "phone": "+39 041 257 1801", + "links": null + }, + { + "title": "Mauro Cristina Marzo", + "subtitle": null, + "text": null, + "email": "mauro.marzo@iuav.it", + "phone": null, + "links": null + } + ] + } + ] + }, + { + "title": "Design della moda e arti multimediali", + "url": "/pages/corsi-laurea/design.html", + "terms": [0], + "image": { + "filename": "design", + "path": "/post_type/corsi", + "alt": "iuav-laurea-triennale-design-prodotto" + }, + "nav": [], + "degree_images": [ + { + "filename": "design-moda-1", + "path": "/post_type/corsi" + }, + { + "filename": "design-moda-2", + "path": "/post_type/corsi" + }, + { + "filename": "design-moda-3", + "path": "/post_type/corsi" + }, + { + "filename": "design-moda-4", + "path": "/post_type/corsi" + }, + { + "filename": "design-moda-5", + "path": "/post_type/corsi" + } + ], + "degree_banner": {}, + "degree_info": { + "key": "grid-list", + "content": { + "items": [ + { + "label": "Classe", + "text": "L-4 - Classe delle lauree in Disegno industriale" + }, + { + "label": "Titolo ottenuto", + "text": "Laurea triennale in Disegno industriale" + }, + { + "label": "Crediti", + "text": "180 CFU" + }, + { + "label": "Durata", + "text": "3 anni" + }, + { + "label": "Coordinamento", + "text": "Gabriele Monti" + }, + { + "label": "Lingua", + "text": "Italiano" + }, + { + "label": "Sede", + "text": "Venezia" + }, + { + "label": "Dipartimento", + "text": "Dipartimento di Culture del progetto" + }, + { + "label": "Requisiti di accesso", + "text": "Titolo di scuola superiore
    Titolo straniero" + }, + { + "label": "Posti disponibili", + "text": "210" + } + ] + } + }, + "degree_links": [], + "excerpt": "Il corso di studi intreccia carattere sperimentale con metodologie analitiche e progettuali, insieme a una particolare attenzione alla cultura materiale. Si occupa di processi creativi e prodotti creando uno stretto dialogo tra ricerca artistica e pratica del design. Integra il concetto di innovazione tecnologica, ampliandolo ai temi del corpo, identità, e memoria nella cultura visiva e progettuale contemporanea.", + "content": "", + "content_blocks": [], + "degree_study_plan": null, + "degree_curricula": [], + "degree_tabs": {}, + "degree_enrollment": {}, + "degree_taxes": {}, + "degree_focus": {}, + "degree_news": {}, + "degree_notices": {}, + "degree_faq": {}, + "degree_contacts": {}, + "degree_contacts_2": [] + }, + { + "title": "Urbanistica e pianificazione del territorio", + "url": "#", + "terms": [0], + "image": { + "filename": "design", + "path": "/post_type/corsi", + "alt": "iuav-laurea-triennale-design-prodotto" + }, + "nav": [], + "degree_images": [ + { + "filename": "urbanistica-1", + "path": "/post_type/corsi" + }, + { + "filename": "urbanistica-2", + "path": "/post_type/corsi" + }, + { + "filename": "urbanistica-3", + "path": "/post_type/corsi" + }, + { + "filename": "urbanistica-4", + "path": "/post_type/corsi" + }, + { + "filename": "urbanistica-5", + "path": "/post_type/corsi" + } + ], + "degree_banner": {}, + "degree_info": { + "key": "grid-list", + "content": { + "items": [ + { + "label": "Classe", + "text": "L-21 - Classe delle lauree in Scienze della pianificazione territoriale, urbanistica, paesaggistica e ambientale" + }, + { + "label": "Titolo ottenuto", + "text": "Laurea triennale in Disegno industriale" + }, + { + "label": "Crediti", + "text": "180 CFU" + }, + { + "label": "Durata", + "text": "3 anni" + }, + { + "label": "Coordinamento", + "text": "Laura Fregolent" + }, + { + "label": "Lingua", + "text": "Italiano" + }, + { + "label": "Sede", + "text": "Venezia" + }, + { + "label": "Dipartimento", + "text": "Dipartimento di Culture del progetto" + }, + { + "label": "Requisiti di accesso", + "text": "Titolo di scuola superiore
    Titolo straniero" + }, + { + "label": "Posti disponibili", + "text": "Accesso libero" + } + ] + } + }, + "degree_links": [], + "excerpt": "Il corso di laurea in urbanistica e pianificazione all’Università Iuav di Venezia offre l’opportunità di comprendere e orientare le trasformazioni di città e territori, degli spazi costruiti e dell’ambiente naturale, ma anche e soprattutto delle persone che li abitano.", + "content": "", + "content_blocks": [], + "degree_study_plan": null, + "degree_curricula": [], + "degree_tabs": {}, + "degree_enrollment": {}, + "degree_taxes": {}, + "degree_focus": {}, + "degree_news": {}, + "degree_notices": {}, + "degree_faq": {}, + "degree_contacts": {}, + "degree_contacts_2": [] + } + ] + }, + "courses": { + "items": [ + { + "title": "Botanica e innovazione", + "parent": 1, + "url": "/pages/corsi/botanica-innovazione.html", + "content": "

    Lo studente acquisisce la conoscenza dei lineamenti di botanica generale e sistematica e, analizzando forme e processi microscopici, approfondisce l’evoluzione delle relazioni tra lo studio degli organismi vegetali e l’innovazione (di prodotti e processi) anche attraverso l'analisi di casi studio. Il corso fornisce, infine, gli strumenti per interpretare strutture e processi degli organismi vegetali al fine di utilizzare tali conoscenze nell'ambito del progetto di design.

    ", + "course_info": { + "key": "grid-list", + "classes": "block-has-margin-sm", + "content": { + "items": [ + { + "label": "Corso di studi", + "text": "Design" + }, + { + "label": "Curriculum", + "text": "Percorso comune" + }, + { + "label": "Docente", + "text": "Armeli Minicante Simona" + }, + { + "label": "Tipo di attività didattica", + "text": "Lezione" + }, + { + "label": "Tipo di insegnamento", + "text": "Opzionale" + }, + { + "label": "Settore scientifico disciplinare", + "text": "BIO/03" + }, + { + "label": "Anno accademico", + "text": "2023/2024" + }, + { + "label": "Anno di corso di laurea", + "text": "1" + }, + { + "label": "Periodo didattico", + "text": "Secondo Semestre (dal 19/02/2024 al 31/05/2024)" + }, + { + "label": "Durata", + "text": "60 ore (60 ore lezione)" + }, + { + "label": "Crediti", + "text": "6 CFU" + }, + { + "label": "Tipologia CFU", + "text": "C (Affine/Integrativa)" + }, + { + "label": "Lingua", + "text": "Italiano" + }, + { + "label": "Sede", + "text": "Vicenza" + } + ] + } + }, + "course_accordion": { + "key": "accordion", + "classes": "block-accordion--sm block-accordion--2cols block-has-margin-sm", + "multi_columns": true, + "content": { + "items": [ + { + "title": "Prerequisiti", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Contenuti", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Metodi didattici", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Verifica dell’apprendimento", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Testi", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Altre informazioni", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + } + ] + } + }, + "course_focus": { + "key": "featured-content-columns", + "classes": "", + "content": { + "title": { + "key": "title", + "classes": "block-title--sm", + "tag": "h2", + "content": { + "title": "Open day" + } + }, + "image": { + "filename": "architettura-3", + "path": "/post_type/corsi", + "alt": "iuav-laurea-triennale-architettura-open-day" + }, + "text": { + "key": "paragraph", + "classes": "", + "content": "

    Scopri di più sul corso di laurea in Design sulla pagina dedicata all’Open Day. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa.

    " + }, + "link": { + "key": "link", + "classes": "block-link--white", + "url": "#", + "content": { + "name": "Vai alla pagina dell'Open Day" + } + } + } + }, + "course_contacts": { + "key": "contacts-section", + "classes": "contacts-section--noMargin", + "title": { + "key": "title", + "tag": "h2", + "classes": "block-title--sm", + "content": { + "title": "Contatti", + "link": { + "label": "Vai alla rubrica contatti", + "url": "#" + } + } + }, + "content": [ + { + "items": [ + { + "title": "Simona Armeli Minicante", + "subtitle": "Docente a contratto", + "text": null, + "email": "mail@iuav.it", + "phone": null, + "links": null + } + ] + } + ] + } + }, + { + "title": "Laboratorio di design del prodotto", + "parent": 1, + "url": "/pages/corsi/laboratorio-design-prodotto.html", + "content": null, + "course_info": { + "key": "grid-list", + "classes": "block-has-margin-sm", + "content": { + "items": [ + { + "label": "Corso di studi", + "text": "Design" + }, + { + "label": "Curriculum", + "text": "Percorso comune" + }, + { + "label": "Tipo di attività didattica", + "text": "Laboratorio" + }, + { + "label": "Tipo di insegnamento", + "text": "Obbligatorio" + }, + { + "label": "Anno accademico", + "text": "2023/2024" + }, + { + "label": "Anno di corso di laurea", + "text": "1" + }, + { + "label": "Periodo didattico", + "text": "Secondo Semestre (dal 19/02/2024 al 31/05/2024)" + }, + { + "label": "Durata", + "text": "120 ore (120 ore laboratorio)" + }, + { + "label": "Crediti", + "text": "12 CFU" + }, + { + "label": "Lingua", + "text": "Italiano" + }, + { + "label": "Sede", + "text": "Vicenza" + } + ] + } + }, + "course_modules": [ + { + "title": "Design per la produzione industriale", + "content": { + "key": "grid-list", + "classes": "block-has-margin-sm", + "content": { + "items": [ + { + "label": "Docente", + "text": "Buffagni Alessia" + }, + { + "label": "Settore scientifico disciplinare", + "text": "ICAR/13" + }, + { + "label": "Durata", + "text": "90 ore (90 ore Laboratorio)" + }, + { + "label": "Crediti", + "text": "9 CFU" + }, + { + "label": "Tipologia CFU", + "text": "B (Caratterizzante)" + } + ] + } + } + }, + { + "title": "Elementi di design strutturale dei prodotti", + "content": { + "key": "grid-list", + "classes": "block-has-margin-sm", + "content": { + "items": [ + { + "label": "Docente", + "text": "Russo Salvatore" + }, + { + "label": "Settore scientifico disciplinare", + "text": "ICAR/09" + }, + { + "label": "Durata", + "text": "30 ore (30 ore Laboratorio)" + }, + { + "label": "Crediti", + "text": "3 CFU" + } + ] + } + } + } + ], + "course_accordion": { + "key": "accordion", + "classes": "block-accordion--sm block-accordion--2cols block-has-margin-sm", + "multi_columns": true, + "content": { + "items": [ + { + "title": "Prerequisiti", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Contenuti", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Metodi didattici", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Verifica dell’apprendimento", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Testi", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + }, + { + "title": "Altre informazioni", + "content": { + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus" + } + } + ] + } + }, + "course_focus": { + "key": "featured-content-columns", + "classes": "", + "content": { + "title": { + "key": "title", + "classes": "block-title--sm", + "tag": "h2", + "content": { + "title": "Open day" + } + }, + "image": { + "filename": "architettura-3", + "path": "/post_type/corsi", + "alt": "iuav-laurea-triennale-architettura-open-day" + }, + "text": { + "key": "paragraph", + "classes": "", + "content": "

    Scopri di più sul corso di laurea in Design sulla pagina dedicata all’Open Day. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa.

    " + }, + "link": { + "key": "link", + "classes": "block-link--white", + "url": "#", + "content": { + "name": "Vai alla pagina dell'Open Day" + } + } + } + }, + "course_contacts": { + "key": "contacts-section", + "classes": "contacts-section--noMargin", + "title": { + "key": "title", + "tag": "h2", + "classes": "block-title--sm", + "content": { + "title": "Contatti", + "link": { + "label": "Vai alla rubrica contatti", + "url": "#" + } + } + }, + "content": [ + { + "items": [ + { + "title": "Simona Armeli Minicante", + "subtitle": "Docente a contratto", + "text": null, + "email": "mail@iuav.it", + "phone": null, + "links": null + } + ] + } + ] + } } ] }, @@ -2541,10 +3900,11 @@ } ] }, - "courses": { + "degrees": { "terms": [ { "name": "Lauree triennali", + "base": "Didattica", "url": "/pages/corsi-laurea/index.html", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nunc libero, fringilla id semper id, ornare pellentesque massa. Nam posuere luctus facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." } diff --git a/gulpfile.js b/gulpfile.js index c8214fb..8f310b3 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -157,10 +157,30 @@ exports.fonts_dist = fonts_dist; /* +* Move video from src to build +*/ +function video_build() { + return gulp.src(`${options.paths.src.base}/assets/video/**/*.{23bm,mp4}`) + .pipe(gulp.dest(`${options.paths.build.base}/assets/video/`)); +} + +exports.video_build = video_build; + +/* +* Move video from build to dist +*/ +function video_dist() { + return gulp.src(`${options.paths.src.base}/assets/video/**/*.{webm,mp4}`) + .pipe(gulp.dest(`${options.paths.dist.base}/assets/video/`)); +} + +exports.video_dist = video_dist; + +/* * JS Build */ function js_build() { - return gulp.src(`${options.paths.src.js}/*.js`) + return gulp.src(`${options.paths.src.js}/**/*.js`) .pipe(gulp.dest(options.paths.build.js)) } @@ -171,7 +191,7 @@ * JS Dist */ function js_dist() { - return gulp.src(`${options.paths.src.js}/*.js`) + return gulp.src(`${options.paths.src.js}/**/*.js`) .pipe(minify({ ext:{ min:'.min.js' @@ -339,8 +359,9 @@ gulp.watch('./data.json', gulp.series(twig_build, reload)); gulp.watch(`${options.paths.src.base}/**/*.twig`, gulp.series(twig_build, reload)); gulp.watch(`${options.paths.src.css}/**/*.css`, gulp.series(css_build, reload)); - gulp.watch(`${options.paths.src.js}/*.js`, gulp.series(js_build, reload)); + gulp.watch(`${options.paths.src.js}/**/*.js`, gulp.series(js_build, reload)); gulp.watch(`${options.paths.src.fonts}/**/*`, gulp.series(fonts_build, reload)); + gulp.watch(`${options.paths.src.video}/**/*`, gulp.series(video_build, reload)); gulp.watch(`${options.paths.src.img}/**/*`, gulp.series(img_min, img_webp, reload)); } @@ -352,14 +373,14 @@ /* * Init */ -exports.init = series(twig_build, css_build, plugins_build, js_build, fonts_build, img_min, img_webp, favicon_move_build); +exports.init = series(twig_build, css_build, plugins_build, js_build, fonts_build, video_build, img_min, img_webp, favicon_move_build); /* * Build main task */ -exports.build = series(twig_build, css_build, plugins_build, js_build, fonts_build, img_min, img_webp, favicon_move_build); +exports.build = series(twig_build, css_build, plugins_build, js_build, fonts_build, video_build, img_min, img_webp, favicon_move_build); /* * Dist main task */ -exports.dist = series(twig_dist, css_dist, clean_css_dist, plugins_dist, js_dist, clean_js_dist, fonts_dist, img_dist, favicon_move_dist); +exports.dist = series(twig_dist, css_dist, clean_css_dist, plugins_dist, js_dist, clean_js_dist, fonts_dist, video_dist, img_dist, favicon_move_dist); diff --git a/package-lock.json b/package-lock.json index 49a8641..2bc08d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,9 @@ "": { "name": "frontend-boilerplate", "version": "1.0.0", + "dependencies": { + "swiper": "^11.0.5" + }, "devDependencies": { "autoprefixer": "^10.2.5", "browser-sync": "^2.18.12", @@ -13852,6 +13855,24 @@ "node": ">=4.0.0" } }, + "node_modules/swiper": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.0.5.tgz", + "integrity": "sha512-rhCwupqSyRnWrtNzWzemnBLMoyYuoDgGgspAm/8iBD3jCvAWycPLH4Z3TB0O5520DHLzMx94yUMH/B9Efpa48w==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", @@ -26359,6 +26380,11 @@ "util.promisify": "~1.0.0" } }, + "swiper": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.0.5.tgz", + "integrity": "sha512-rhCwupqSyRnWrtNzWzemnBLMoyYuoDgGgspAm/8iBD3jCvAWycPLH4Z3TB0O5520DHLzMx94yUMH/B9Efpa48w==" + }, "symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", diff --git a/package.json b/package.json index 6632624..5e31f48 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,6 @@ "export-tailwind-config": "tailwindcss-export-config --config=tailwind.config.js --destination=static/src/assets/scss/config/_vars --format=scss --flat=true" }, "dependencies": { + "swiper": "^11.0.5" } -} \ No newline at end of file +} diff --git a/src/assets/css/base/grid.css b/src/assets/css/base/grid.css index 7a73ec4..32239ed 100644 --- a/src/assets/css/base/grid.css +++ b/src/assets/css/base/grid.css @@ -9,13 +9,21 @@ } } -.grid-container{ +.grid-container, .block-container{ @apply row; :where(.grid-container), :where(.block-container){ @apply w-full ml-0 mr-0 px-0; } } +.columns{ + @apply flex flex-wrap -mx-[var(--grid-gutter)]; +} + +.column{ + @apply px-[var(--grid-gutter)]; +} + @layer utilities{ .row{ @apply w-full px-[calc(var(--grid-gutter)*2)] md:px-0; diff --git a/src/assets/css/base/index.css b/src/assets/css/base/index.css index 556e9ff..dd34faa 100644 --- a/src/assets/css/base/index.css +++ b/src/assets/css/base/index.css @@ -3,3 +3,4 @@ @import "layout.css"; @import "typography.css"; @import "grid.css"; +@import "spacing.css"; diff --git a/src/assets/css/base/spacing.css b/src/assets/css/base/spacing.css new file mode 100644 index 0000000..acd21bf --- /dev/null +++ b/src/assets/css/base/spacing.css @@ -0,0 +1,15 @@ +:root{ + --spacing-lg: theme(spacing[12.5]); +} + +@layer utilties{ + .spacing-base{ + @apply mb-sm md:mb-base; + } + .spacing-lg{ + @apply mb-base md:mb-lg; + } + .spacing-xl{ + @apply mb-lg xl:mb-xl; + } +} \ No newline at end of file diff --git a/src/assets/css/base/typography.css b/src/assets/css/base/typography.css index e91b885..f31e55e 100644 --- a/src/assets/css/base/typography.css +++ b/src/assets/css/base/typography.css @@ -67,7 +67,7 @@ } p{ - @apply text-size-base text-black mb-7.5; + @apply text-size-base text-black mb-3.75 md:mb-12.5; a{ @apply underline; } @@ -107,18 +107,18 @@ @apply text-md; } .text-size-md-lg{ - @apply text-md xl:text-md-lg; + @apply text-md-lg md:text-md-lg; } .text-size-lg{ @apply text-md md:text-md-lg xl:text-lg; } .text-size-xl{ - @apply text-xl; + @apply text-lg md:text-xl-md xl:text-xl; } .text-size-2xl{ - @apply text-2xl; + @apply text-lg md:text-2xl-md xl:text-2xl; } .text-size-3xl{ - @apply text-3xl; + @apply text-lg md:text-2xl-md xl:text-3xl; } } \ No newline at end of file diff --git a/src/assets/css/blocks/accordion.css b/src/assets/css/blocks/accordion.css index 469af64..38e8c59 100644 --- a/src/assets/css/blocks/accordion.css +++ b/src/assets/css/blocks/accordion.css @@ -1,15 +1,34 @@ .block-accordion{ &__inner{ @apply border-t border-grey-200; + &:last-child:not(:first-child){ + @apply border-b; + } > span{ - @apply relative flex items-center; - @apply w-full text-size-lg py-[0.25vw] pl-[calc(3.5vw+1rem)] pr-[1vw] relative leading-none cursor-pointer; + @apply + relative + flex items-center + w-full + text-size-lg + min-h-[2.25rem] + py-1 /*xl:py-1.5 */ + pl-12 xl:pl-16 + pr-5 + cursor-pointer + ; &::before{ content: ''; background-image: url("data:image/svg+xml,%3Csvg width='50' height='50' viewBox='0 0 50 50' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M37.5 26H12.5V24H37.5V26Z' fill='black'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 37.5L24 12.5L26 12.5L26 37.5L24 37.5Z' fill='black'/%3E%3C/svg%3E%0A"); background-size: 100%; transition: transform .2s ease; - @apply absolute top-0 left-0 w-[3.5vw] aspect-square bg-no-repeat bg-center mr-[1vw] rotate-0 -translate-y-[0.33vw]; + @apply + absolute + top-0 left-0 + w-9 xl:w-12.5 + aspect-square + bg-no-repeat bg-center + rotate-0 + ; } &:hover{ @apply bg-black text-white; @@ -19,7 +38,7 @@ } } > div{ - @apply py-[2.75vw] pl-[calc(3.5vw+1vw)] pr-[1.5vw]; + @apply pt-xs pb-base pl-12 xl:pl-16 pr-[calc(var(--grid-gutter)*2)]; > p{ @apply text-white mb-0; } @@ -73,29 +92,19 @@ } } &--2cols{ - /* @apply columns-2; */ - @apply lg:w-1/2; - /* @apply grid grid-cols-2; - > *{ - @apply grid-row - } */ - /* break-inside: avoid-column; */ - .block-accordion__inner{ - /* page-break-inside: avoid; - break-inside: avoid-column; */ - } + @apply xl:grid xl:grid-cols-2 gap-x-[calc(var(--grid-gutter)*2)]; } &--sm{ /* @apply lg:w-1/2; */ .block-accordion__inner{ > span{ - @apply text-size-md pl-[calc(2.5vw+0.75vw)]; + @apply text-size-md pl-[calc(2.25rem+0.625rem)]; &::before{ - @apply w-[2.5vw] -translate-y-0; + @apply w-9 -translate-y-0; } } > div{ - @apply py-4 pl-[calc(2.5vw+0.75vw)]; + @apply py-4 pl-[calc(2.25rem+0.625rem)]; } } } diff --git a/src/assets/css/blocks/block.css b/src/assets/css/blocks/block.css index 4449529..fdb92ea 100644 --- a/src/assets/css/blocks/block.css +++ b/src/assets/css/blocks/block.css @@ -6,5 +6,12 @@ } .block-composition{ - @apply mb-12.5 md:mb-20; + @apply mb-base md:mb-lg; +} + +.block-has-margin{ + @apply mb-base md:mb-lg; + &-sm{ + @apply mb-base md:mb-md; + } } \ No newline at end of file diff --git a/src/assets/css/blocks/carousel.css b/src/assets/css/blocks/carousel.css new file mode 100644 index 0000000..7a3de11 --- /dev/null +++ b/src/assets/css/blocks/carousel.css @@ -0,0 +1,40 @@ +.block-carousel{ + @apply w-full; + .swiper{ + .swiper-button-prev, .swiper-button-next{ + @apply w-1/2 h-[var(--carousel-img-height)] top-0 mt-0; + &::after{ + content: none; + } + } + .swiper-button-prev{ + @apply left-0; + } + .swiper-button-next{ + @apply right-0; + } + .swiper-slide{ + @apply bg-white h-auto; + &__img{ + @apply aspect-[3/2] h-auto; + img{ + @apply w-full h-full object-cover; + } + } + &__caption{ + p{ + @apply text-size-sm mt-base bg-white mb-0 h-full; + } + } + } + .swiper-pagination{ + @apply flex gap-x-2.5 absolute top-[calc(var(--carousel-img-height)+0.625rem)]; + .swiper-pagination-bullet{ + @apply w-full rounded-none h-px m-0 bg-grey-300 opacity-100; + &-active{ + @apply bg-black h-[3px]; + } + } + } + } +} \ No newline at end of file diff --git a/src/assets/css/blocks/featured-content.css b/src/assets/css/blocks/featured-content.css index c2859ed..35871f6 100644 --- a/src/assets/css/blocks/featured-content.css +++ b/src/assets/css/blocks/featured-content.css @@ -1,26 +1,56 @@ .block-featured-content-stacked{ - @apply py-[3.5vw] bg-black text-white mb-20; + @apply py-sm xl:py-base bg-black text-white mt-md xl:mt-lg; p{ @apply text-white; } &__inner{ .block-featured-content-stacked__img{ - @apply aspect-[21/9]; + @apply aspect-[3/2] lg:aspect-[2/1] xl:aspect-[21/9]; img{ @apply w-full h-full object-cover; } } .block-paragraph{ - @apply mt-[3vw] lg:w-11/12; + @apply mt-8.75 lg:w-11/12; p{ - @apply text-size-md-lg; + @apply text-size-md-lg mb-0; + } + } + } +} + +.block-featured-content-columns{ + @apply py-sm xl:py-base bg-black text-white mt-md xl:mt-lg; + p{ + @apply text-white; + } + &__inner{ + @apply lg:grid grid-cols-2 gap-x-[calc(var(--grid-gutter)*2)]; + .block-featured-content-columns__img{ + @apply lg:order-2 h-full mb-sm lg:mb-0; + img{ + @apply w-full h-full object-cover; + } + } + .block-featured-content-columns__content{ + @apply lg:order-1 flex flex-col; + .block-title{ + } + .block-paragraph{ + @apply mb-sm md:mb-md self-end; + p{ + @apply text-size-md mb-0; + } + } + .block-link{ + @apply lg:self-end; } } } } .block-featured-content-cover{ - @apply aspect-video relative mb-[4.5vw]; + @apply aspect-video relative mb-8.75; &__content{ @apply aspect-square @@ -44,4 +74,38 @@ @apply w-full h-full object-cover; } } +} + +.block-featured-tabs{ + @apply py-sm md:py-base lg:pt-0 bg-black text-white; + &__tabs{ + @apply flex pb-sm md:pb-base lg:pb-0 text-size-lg lg:translate-y-[100%]; + button{ + @apply block text-grey-300; + &:not(:first-child){ + @apply ml-2; + } + &.is-selected{ + @apply text-white; + } + } + } + &-tab{ + @apply hidden; + > div{ + @apply lg:grid grid-cols-2 gap-x-[calc(var(--grid-gutter)*2)]; + } + .block-featured-tabs-tab__content{ + @apply lg:order-1 lg:self-end; + p{ + @apply text-white mb-0 text-size-md text-size-md; + } + } + .block-featured-tabs-tab__img{ + @apply lg:order-2 mb-sm md:mb-base lg:mb-0 aspect-[3/2]; + img{ + @apply w-full h-full object-cover; + } + } + } } \ No newline at end of file diff --git a/src/assets/css/blocks/files-list.css b/src/assets/css/blocks/files-list.css index 73162e9..0a27ff7 100644 --- a/src/assets/css/blocks/files-list.css +++ b/src/assets/css/blocks/files-list.css @@ -1,22 +1,18 @@ .block-files-list{ &__inner{ > p{ - @apply font-bold mb-[0.5vw]; + @apply font-bold mb-4; } ul{ - @apply flex flex-wrap; + @apply flex flex-wrap gap-3.75; li{ - @apply mb-[0.5vw]; - &:not(:last-child){ - @apply mr-[0.5vw]; - } a{ - @apply inline-flex items-center bg-grey-100 pr-[0.5vw]; + min-height: 2.25rem; + @apply relative inline-flex items-center bg-grey-100 pl-10 pr-3 py-1.5; &::before{ content: ''; background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 37 37'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m24.852 19.834-6.354 6.353-6.354-6.353.708-.708 5.146 5.147V9.5h1v14.773l5.146-5.147.708.708ZM27 28H10v-1h17v1Z' fill='%23000'/%3E%3C/svg%3E"); - background-size: 75%; - @apply w-[2.5vw] aspect-square bg-no-repeat bg-center shrink-0; + @apply w-9 aspect-square bg-no-repeat bg-center absolute top-0 left-0; } } &:hover{ diff --git a/src/assets/css/blocks/grid-list.css b/src/assets/css/blocks/grid-list.css index 42de200..a7ce643 100644 --- a/src/assets/css/blocks/grid-list.css +++ b/src/assets/css/blocks/grid-list.css @@ -1,7 +1,7 @@ .block-grid-list{ container-type: inline-size; &__inner{ - @apply grid gap-x-[calc(var(--grid-gutter)*2)] gap-y-[2vw]; + @apply grid lg:grid-cols-2 xl:grid-cols-4 gap-x-[calc(var(--grid-gutter)*2)] gap-y-base; > div{ @apply border-t border-grey-200 pt-2; p{ @@ -14,14 +14,20 @@ } } -@container (min-width: 480px){ +@container (min-width: 35rem){ .block-grid-list__inner{ - @apply grid-cols-2; + @apply md:grid-cols-2; } } -@container (min-width: 960px){ +@container (min-width: 56rem) { .block-grid-list__inner{ - @apply grid-cols-4; + @apply lg:grid-cols-3; + } +} + +@container (min-width: 62rem) { + .block-grid-list__inner{ + @apply xl:grid-cols-4; } } \ No newline at end of file diff --git a/src/assets/css/blocks/images-grid.css b/src/assets/css/blocks/images-grid.css index a42c201..90e975a 100644 --- a/src/assets/css/blocks/images-grid.css +++ b/src/assets/css/blocks/images-grid.css @@ -2,7 +2,7 @@ &--black{ @apply bg-black py-12; } - &__wrapper{ + &__inner{ @apply grid grid-cols-12 grid-rows-2 gap-5; > div{ @apply relative; diff --git a/src/assets/css/blocks/index.css b/src/assets/css/blocks/index.css index 9b113ad..21e1208 100644 --- a/src/assets/css/blocks/index.css +++ b/src/assets/css/blocks/index.css @@ -1,6 +1,7 @@ @import "../utilities.css"; @import "block.css"; @import "accordion.css"; +@import "carousel.css"; @import "events-list-row.css"; @import "featured-content.css"; @import "files-list.css"; @@ -13,4 +14,5 @@ @import "paragraph.css"; @import "query-loop.css"; @import "tease-row.css"; -@import "title.css"; \ No newline at end of file +@import "title.css"; +@import "video.css"; \ No newline at end of file diff --git a/src/assets/css/blocks/link.css b/src/assets/css/blocks/link.css index b06851f..1db0389 100644 --- a/src/assets/css/blocks/link.css +++ b/src/assets/css/blocks/link.css @@ -1,15 +1,29 @@ .block-link{ /* @apply grid grid-cols-2 items-center; */ - @apply flex; - @apply w-full text-size-lg border-t border-grey-200 relative leading-none; + @apply flex text-size-lg border-t border-grey-200 relative; + &:last-child:not(:first-child){ + @apply border-b; + } &::before{ content: ''; background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m34.711 24-6.778-7.32 1.467-1.36L38.363 25 29.4 34.68l-1.467-1.36L34.71 26H12v-2h22.711Z' fill='%23000'/%3E%3C/svg%3E"); background-size: 100%; - @apply absolute top-0 left-0 w-[3.5vw] aspect-square bg-no-repeat bg-center mr-[1vw] -translate-y-[0.33vw]; + @apply + absolute + top-0 left-0 + w-9 xl:w-12.5 + aspect-square + bg-no-repeat bg-center + ; } > span{ - @apply flex items-center pl-[calc(3.5vw+1rem)] py-[0.25vw] pr-[1vw]; + @apply + flex items-center + min-h-[2.25rem] + pl-12 xl:pl-16 + py-0.5 xl:py-1.5 + pr-5 + ; } &:hover{ @apply bg-black text-white; @@ -32,7 +46,7 @@ } span{ span{ - @apply text-size-sm text-grey-300 self-start ml-[1vw] translate-y-[0.5vw]; + @apply text-size-sm text-grey-300 self-start ml-3.75 translate-y-0.5; } } &:hover{ @@ -41,4 +55,24 @@ } } } + &--white{ + @apply text-white border-grey-500; + &::before{ + background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m34.711 24-6.778-7.32 1.467-1.36L38.363 25 29.4 34.68l-1.467-1.36L34.71 26H12v-2h22.711Z' fill='white'/%3E%3C/svg%3E"); + } + &[href]:not(:where( + /* exclude hash only links */ + [href^="#"], + /* exclude relative but not double slash only links */ + [href^="/"]:not([href^="//"]), + /* domains to exclude */ + /* [href*="//stackoverflow.com"], */ + /* subdomains to exclude */ + /* [href*="//meta.stackoverflow.com"] */ + )){ + &::before{ + background-image: url("data:image/svg+xml,%3Csvg width='50' height='50' viewBox='0 0 50 50' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M31.0124 17.0725L21.043 16.6891L21.1198 14.6906L34.3016 15.1975L34.8086 28.3793L32.81 28.4562L32.4266 18.4867L16.3673 34.546L14.9531 33.1318L31.0124 17.0725Z' fill='white'/%3E%3C/svg%3E%0A"); + } + } + } } \ No newline at end of file diff --git a/src/assets/css/blocks/links-list-columns.css b/src/assets/css/blocks/links-list-columns.css index 64d731a..e24c658 100644 --- a/src/assets/css/blocks/links-list-columns.css +++ b/src/assets/css/blocks/links-list-columns.css @@ -23,7 +23,4 @@ } */ } } - &--mbLg{ - @apply mb-40; - } } \ No newline at end of file diff --git a/src/assets/css/blocks/page-title-banner.css b/src/assets/css/blocks/page-title-banner.css index 04ce0d8..9ad102e 100644 --- a/src/assets/css/blocks/page-title-banner.css +++ b/src/assets/css/blocks/page-title-banner.css @@ -1,12 +1,24 @@ .block-page-title-banner{ + @apply mb-base md:mb-lg xl:mb-xl; &__img{ - height: var(--page-title-banner-img-height); - @apply relative grid-container overflow-hidden mb-10 z-20; + @screen lg{ + height: calc(var(--page-title-banner-img-height) - var(--grid-gutter)*2); + } + @apply aspect-video md:aspect-auto relative grid-container overflow-hidden mb-[calc(var(--grid-gutter)*2)] z-20; img{ @apply w-full h-full object-cover; } } + &__video{ + @screen lg{ + height: calc(var(--page-title-banner-img-height) - var(--grid-gutter)*2); + } + @apply aspect-video md:aspect-auto relative grid-container overflow-hidden mb-[calc(var(--grid-gutter)*2)] z-20; + video{ + @apply w-full h-full object-cover; + } + } .block-title{ - @apply sticky bottom-[calc(var(--grid-gutter)*2)] z-10 mb-0; + @apply lg:sticky bottom-[calc(var(--grid-gutter)*2)] md:pt-[calc(var(--grid-gutter)*2)] z-10 mb-0; } } diff --git a/src/assets/css/blocks/paragraph.css b/src/assets/css/blocks/paragraph.css index 74eab06..41d9a5f 100644 --- a/src/assets/css/blocks/paragraph.css +++ b/src/assets/css/blocks/paragraph.css @@ -1,13 +1,20 @@ .block-paragraph{ + container: paragraph / inline-size; p{ - @apply md:max-xl:max-w-3xl text-size-md; + @apply text-size-base; } - &--sm{ + &--lg{ p{ - @apply text-size-base; + @apply md:max-xl:max-w-3xl xl:text-size-md; } } &--1col{ @apply xl:w-1/2; } +} + +@container paragraph (min-width: 80rem){ + .block-paragraph p{ + @apply w-3/4; + } } \ No newline at end of file diff --git a/src/assets/css/blocks/tease-row.css b/src/assets/css/blocks/tease-row.css index 06c1134..efc808d 100644 --- a/src/assets/css/blocks/tease-row.css +++ b/src/assets/css/blocks/tease-row.css @@ -1,3 +1,3 @@ .block-tease-row{ - @apply mb-20; + @apply spacing-xl; } \ No newline at end of file diff --git a/src/assets/css/blocks/title.css b/src/assets/css/blocks/title.css index 1bce255..01c030a 100644 --- a/src/assets/css/blocks/title.css +++ b/src/assets/css/blocks/title.css @@ -1,9 +1,9 @@ .block-title{ - @apply mb-3.75 md:mb-8.75; + @apply spacing-base; h1,h2,h3,h4,h5,h6{ @apply text-size-2xl mb-0; + a{ - @apply text-grey-300 shrink-0 ml-4; + @apply text-grey-300 text-size-lg shrink-0; } } .block-title__inner{ @@ -15,6 +15,11 @@ + .block-links-list-columns{ @apply mt-16; } */ + &--xs{ + h1,h2,h3,h4,h5,h6{ + @apply text-size-base font-bold; + } + } &--sm{ h1,h2,h3,h4,h5,h6{ @apply text-size-lg; @@ -30,6 +35,14 @@ @apply border-t border-black pt-3 w-full; } } + &--link{ + .block-title__inner{ + @apply w-full lg:flex items-baseline justify-between; + h1,h2,h3,h4,h5,h6{ + @apply mr-4; + } + } + } } /* .block-container + .block-title{ diff --git a/src/assets/css/blocks/video.css b/src/assets/css/blocks/video.css new file mode 100644 index 0000000..2c414fa --- /dev/null +++ b/src/assets/css/blocks/video.css @@ -0,0 +1,13 @@ +.block-video{ + &__inner{ + @apply aspect-video relative; + video{ + @apply absolute w-full h-full left-0 top-0; + } + } + &__caption{ + p{ + @apply text-size-sm mt-xs mb-0; + } + } +} \ No newline at end of file diff --git a/src/assets/css/components/breadcrumbs.css b/src/assets/css/components/breadcrumbs.css index ee0c6bc..3731ab7 100644 --- a/src/assets/css/components/breadcrumbs.css +++ b/src/assets/css/components/breadcrumbs.css @@ -1,5 +1,5 @@ .breadcrumbs{ - @apply grid-container mt-6.25 mb-10 md:mt-15 md:mb-20 xl:my-25; + @apply grid-container mt-sm mb-base md:mt-12.5 md:mb-lg xl:mt-25 xl:mb-base; ul{ @apply flex flex-wrap; li{ diff --git a/src/assets/css/components/card.css b/src/assets/css/components/card.css index c984b32..8fc2a0f 100644 --- a/src/assets/css/components/card.css +++ b/src/assets/css/components/card.css @@ -31,21 +31,21 @@ &.is-hovered{ @apply bg-transparent z-20; p, span{ - @apply text-yellow; + @apply text-yellow-100; } .card-bg{ @apply opacity-100; } &::after{ content: ''; - @apply w-full h-full border border-yellow absolute left-0 top-0; + @apply w-full h-full border border-yellow-100 absolute left-0 top-0; } } } &--has-keyword{ .card-keyword{ font-size: calc(70vw / var(--card-keyword-chars)); - @apply absolute top-[50%] left-[50%] translate-y-[-50%] translate-x-[-50%] opacity-0 pointer-events-none text-yellow whitespace-nowrap z-50; + @apply absolute top-[50%] left-[50%] translate-y-[-50%] translate-x-[-50%] opacity-0 pointer-events-none text-yellow-100 whitespace-nowrap z-50; } &.is-hovered{ @apply z-20 bg-white; diff --git a/src/assets/css/components/contacts-section.css b/src/assets/css/components/contacts-section.css index 6f00998..c6c16a0 100644 --- a/src/assets/css/components/contacts-section.css +++ b/src/assets/css/components/contacts-section.css @@ -1,23 +1,34 @@ .contacts-section{ - @apply bg-yellow py-[2.75vw] mt-[5.5vw]; - &-cards-row{ - @apply grid-container mb-[2.75vw]; + @apply bg-yellow-100 py-sm xl:py-base mt-base xl:mt-lg; + .block-title{ &__inner{ - @apply grid gap-x-[var(--grid-gutter)] grid-cols-4; + a{ + @apply text-yellow-200; + } + } + } + &-cards-row{ + @apply grid-container spacing-base; + &__inner{ + @apply grid gap-[calc(var(--grid-gutter)*2)] grid-cols-1 md:grid-cols-2 xl:grid-cols-4; + &-squares{ + @apply max-xl:lg:grid-cols-3; + } } > p{ - @apply font-bold mb-5; + @apply font-bold mb-4; } } &-card{ - @apply bg-black text-yellow p-[var(--grid-gutter)] grid grid-cols-2; + @apply bg-black text-yellow-100 p-[calc(var(--grid-gutter)*2)] xl:grid items-start grid-cols-2; p{ - @apply text-yellow; + @apply text-yellow-100; } a{ @apply underline; } header{ + @apply mb-base xl:mb-0; p{ @apply text-size-md-lg mb-0; &:last-child:not(:first-child){ @@ -26,9 +37,9 @@ } } > div{ - @apply aspect-square; + @apply xl:aspect-square; &:first-child{ - @apply flex flex-col h-full; + @apply flex flex-col xl:h-full; header{ @apply grow; } @@ -37,8 +48,28 @@ } } } - &--span{ - grid-column: span 2; + &:not(.contacts-section-card--span){ + > div{ + @apply aspect-square; + } } + &--span{ + @apply self-start; + @screen xl{ + align-self: inherit; + } + @screen xl{ + grid-column: span 2; + } + footer{ + @apply mb-base xl:mb-0; + } + } + } + + .site-footer{ + @apply mt-0 !important; + } + &--noMargin{ + @apply mt-0; } } \ No newline at end of file diff --git a/src/assets/css/components/content-section.css b/src/assets/css/components/content-section.css index 491d393..24afecc 100644 --- a/src/assets/css/components/content-section.css +++ b/src/assets/css/components/content-section.css @@ -1,3 +1,6 @@ .content-section{ - @apply mb-20; + @apply mt-md lg:mt-lg; + &--noMargin{ + @apply mt-0; + } } \ No newline at end of file diff --git a/src/assets/css/components/degree-curricula.css b/src/assets/css/components/degree-curricula.css new file mode 100644 index 0000000..f090c25 --- /dev/null +++ b/src/assets/css/components/degree-curricula.css @@ -0,0 +1,49 @@ +.degree-curricula{ + @apply bg-grey-100; + &__tabs{ + @apply lg:flex lg:flex-nowrap py-base text-size-lg; + button{ + @apply block text-grey-300; + &:not(:first-child){ + @apply lg:ml-2; + } + &.is-selected{ + @apply text-black; + } + } + } +} + +.degree-curriculum{ + /*fix for using margin of last child element as real inner margin*/ + @apply pb-px; + &__marquee{ + @apply ml-[calc(var(--grid-offset)*-1)] w-screen; + } + &__excerpt{ + @apply text-size-md-lg mb-base; + } + &__cols{ + @apply lg:grid grid-cols-2 gap-x-[calc(var(--grid-gutter)*2)] mb-lg; + > *{ + &:last-child{ + p{ + @apply xl:text-size-md; + &:last-child{ + @apply mb-0; + } + } + } + } + } + .block-accordion{ + @apply mb-md; + + * { + @apply mb-sm; + } + } +} + +[data-tab-index]{ + @apply hidden; +} \ No newline at end of file diff --git a/src/assets/css/components/footer.css b/src/assets/css/components/footer.css index 9a5fcdb..8ebd9d9 100644 --- a/src/assets/css/components/footer.css +++ b/src/assets/css/components/footer.css @@ -1,5 +1,5 @@ .site-footer{ - @apply relative bg-black text-white mt-20 pb-10 text-size-sm md:text-size-base; + @apply relative bg-black text-white pb-10 text-size-sm md:text-size-base; &__backTop{ background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25 27'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m11.5 4.289-7.32 6.778L2.82 9.6 12.5.637 22.18 9.6l-1.36 1.467L13.5 4.29V27h-2V4.289Z' fill='%23fff'/%3E%3C/svg%3E"); background-size: 24px; diff --git a/src/assets/css/components/header.css b/src/assets/css/components/header.css index a619097..52a1a40 100644 --- a/src/assets/css/components/header.css +++ b/src/assets/css/components/header.css @@ -28,11 +28,11 @@ &__actions{ @apply flex items-center; .site-header-topbar__lang{ - @apply mr-4; + @apply mr-3.75; } .site-header-topbar__search{ svg{ - @apply w-5 h-5 block; + @apply w-[22px] h-9 block; } } } @@ -57,6 +57,9 @@ &:not(:last-child){ @apply mr-6 xl:mr-8; } + > a{ + @apply block; + } &.is-toggled{ > a{ @apply font-bold; @@ -65,10 +68,16 @@ } } } - .hamburger-btn{ - @apply xl:hidden translate-x-[calc(var(--grid-gutter)*1.75)] xl:translate-x-[calc(var(--grid-gutter)*1.25)]; - &.is-active{ - @apply xl:flex; + .site-header-navbar__actions{ + @apply flex items-center translate-x-[calc(var(--grid-gutter)*1.75)] xl:translate-x-[calc(var(--grid-gutter)*1.25)]; + > a{ + @apply xl:hidden translate-y-px mr-2; + } + .hamburger-btn{ + @apply xl:hidden; + &.is-active{ + @apply xl:flex; + } } } } @@ -77,7 +86,7 @@ } &-submenu{ li{ - .menu-item{ + /* .menu-item{ @apply relative overflow-hidden; &-overlay{ @apply absolute z-10 !important; @@ -92,13 +101,14 @@ @apply relative text-white z-20; } } - } + } */ } > li{ @apply mr-0; - > .menu-item{ - > a{ - @apply inline-block w-full py-2 text-size-sm; + > a{ + @apply inline-block w-full py-2 text-size-sm; + &:hover{ + @apply bg-black text-white; } } } @@ -106,11 +116,11 @@ padding-left: var(--grid-offset); padding-right: calc(var(--grid-gutter) * 2); orphans: 1; + transform: translateZ(0) translateY(calc(100% - 2px)); @apply absolute bottom-0 left-0 - translate-y-[100%] w-full bg-white columns-3 @@ -119,27 +129,46 @@ gap-x-[calc(var(--grid-gutter)*2)] opacity-0 invisible pointer-events-none ; - @at-root .site-header-navbar__main ul li.is-toggled .site-header-navbar-submenu-0{ + &.is-visible{ @apply opacity-100 visible pointer-events-auto; + > li{ + @apply opacity-100; + } + &.is-closing{ + > li{ + transition: opacity .1s ease; + @apply opacity-0; + } + } } @at-root .site-header.is-hidden .site-header-navbar__main .site-header-navbar-submenu-0{ @apply hidden; } > li { - @apply break-inside-avoid; - > .menu-item{ - > a{ - @apply font-bold border-t border-black; + transition: opacity .25s ease .25s; + @at-root .site-header-navbar__main nav.is-toggled .site-header-navbar-submenu-0 > li{ + transition: none; + } + @apply break-inside-avoid opacity-0; + > a{ + @apply font-bold border-y border-t-black border-b-grey-200; + &:first-child:last-child{ + @apply border-b border-b-grey-200; } } } } &:not(.site-header-navbar-submenu-0){ > li{ - @apply border-t border-grey-200; - .menu-item{ - @apply grid grid-cols-4 gap-x-[var(--size-ratio-base)]; + @apply border-b border-grey-200; + &:hover{ > a{ + @apply bg-black text-white; + } + } + > a{ + @apply grid grid-cols-4 gap-x-[var(--size-ratio-base)]; + > span{ grid-column: 2 / 5; } } @@ -150,8 +179,9 @@ } #overlay{ + transition: all .5s ease; @apply fixed top-0 left-0 w-full h-screen bg-black bg-opacity-50 z-30 opacity-0 invisible pointer-events-none; &.is-active{ - @apply opacity-100 visible; + @apply opacity-100 visible pointer-events-auto; } } \ No newline at end of file diff --git a/src/assets/css/components/index.css b/src/assets/css/components/index.css index 7141632..6951e1a 100644 --- a/src/assets/css/components/index.css +++ b/src/assets/css/components/index.css @@ -5,11 +5,13 @@ @import "chip.css"; @import "contacts-section.css"; @import "content-section.css"; +@import "degree-curricula.css"; @import "events-posts.css"; @import "footer.css"; @import "hamburger.css"; @import "header.css"; @import "logo.css"; +@import "marquee-images.css"; @import "marquee-posts-row.css"; @import "mobilemenu.css"; @import "post-archive-header.css"; diff --git a/src/assets/css/components/marquee-images.css b/src/assets/css/components/marquee-images.css new file mode 100644 index 0000000..78414d4 --- /dev/null +++ b/src/assets/css/components/marquee-images.css @@ -0,0 +1,104 @@ +.block-marquee-images{ + --marquee-item-width: 66vw; + @screen md{ + --marquee-item-width: 40vw; + } + @screen lg{ + --marquee-item-width: 33vw; + } + @screen xl{ + --marquee-item-width: 25vw; + } + /* @apply overflow-hidden mb-5; */ + @apply overflow-x-clip; + @apply mb-base -ml-[calc(var(--grid-gutter)*2)] lg:ml-0; + &__inner{ + @apply flex; + .block-marquee-images-item{ + width: var(--marquee-item-width); + @apply mr-[calc(var(--grid-gutter)*2)] aspect-square; + img{ + @apply w-full h-full object-cover; + } + } + } + &.is-hovered{ + @apply relative z-10; + } +} + +/* .marquee-card{ + @apply relative bg-grey-100 p-4; + &--black{ + @apply bg-black; + p, span{ + @apply text-white; + } + } + &__content{ + @apply aspect-square flex flex-col justify-between; + } + .marquee-card-header, .marquee-card-main{ + @apply relative z-10; + } + .marquee-card-header{ + @apply flex justify-between text-grey-300; + } + .marquee-card-date{ + @apply text-size-sm; + } + .marquee-card-title{ + @apply text-size-md font-bold; + } + .marquee-card-bg{ + @apply absolute left-0 top-0 w-full h-full scale-125 origin-center opacity-0 pointer-events-none bg-black; + img{ + @apply w-full h-full bg-cover z-10 opacity-75; + } + } + &--has-background{ + &.is-hovered{ + @apply bg-transparent z-20; + p, span{ + @apply text-accent-200; + } + .marquee-card-bg{ + @apply opacity-100; + } + &::after{ + content: ''; + @apply w-full h-full border border-accent-200 absolute left-0 top-0; + } + } + } + &--has-keyword{ + .marquee-card-keyword{ + font-size: calc(70vw / var(--marquee-card-keyword-chars)); + @apply absolute top-[50%] left-[50%] translate-y-[-50%] translate-x-[-50%] opacity-0 pointer-events-none text-accent-200 whitespace-nowrap z-50; + } + &.is-hovered{ + @apply z-20 bg-white; + .marquee-card-header{ + span{ + @apply text-grey-300; + } + } + .marquee-card-main{ + p, span{ + @apply text-black; + } + } + .marquee-card-keyword{ + @apply opacity-100; + } + &::after{ + content: ''; + @apply w-full h-full border border-grey-200 absolute left-0 top-0; + } + } + } +} */ + +.block-marquee-posts-grid{ + @apply grid grid-cols-4 gap-5; +} \ No newline at end of file diff --git a/src/assets/css/components/mobilemenu.css b/src/assets/css/components/mobilemenu.css index 992efaa..e909a2b 100644 --- a/src/assets/css/components/mobilemenu.css +++ b/src/assets/css/components/mobilemenu.css @@ -2,7 +2,7 @@ @apply /* md:ml-[calc(var(--grid-offset)-var(--grid-gutter)*2)] */ ml-auto - w-[calc((100%-(var(--grid-offset)-var(--grid-gutter)*2)))] + w-full md:w-[calc((100%-(var(--grid-offset)-var(--grid-gutter)*2)))] max-w-screen-md md:min-h-[calc(var(--vh)-var(--header-height))] xl:hidden @@ -10,6 +10,7 @@ invisible opacity-0 pointer-events-none bg-white text-black z-30 + overflow-hidden ; &.is-toggled{ @apply relative visible opacity-100 pointer-events-auto; diff --git a/src/assets/css/components/secondary-nav.css b/src/assets/css/components/secondary-nav.css index 8860106..c29f3ad 100644 --- a/src/assets/css/components/secondary-nav.css +++ b/src/assets/css/components/secondary-nav.css @@ -1,44 +1,62 @@ .secondary-nav{ &-trigger{ - @apply block w-full h-px bg-white; + @apply block w-full h-px bg-transparent; } transition: top .5s ease, opacity .2s ease; - @apply sticky top-0 bg-white z-40 flex items-center opacity-0; + @apply fixed top-[var(--header-height)] lg:top-0 w-screen bg-white z-30 flex items-center opacity-0; + &::before{ + content: ''; + width: calc(100vw - var(--grid-gutter)*4); + @screen md{ + width: calc(100vw - var(--grid-gutter)*2 - var(--grid-offset)); + } + @apply absolute h-px top-0 left-[calc(var(--grid-gutter)*2)] md:left-[var(--grid-offset)] bg-grey-200 lg:hidden; + } + &::after{ + content: ''; + background: rgb(255,255,255); + background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 80%); + @apply absolute w-12 h-full right-0 pointer-events-none; + } ul{ - padding-left: var(--grid-offset); - padding-right: var(--secondary-nav-button-width); + padding-left: calc(var(--grid-gutter) * 2); + padding-right: calc(var(--grid-gutter) * 2); + @screen md{ + padding-left: var(--grid-offset); + padding-right: var(--secondary-nav-button-width); + } @apply flex overflow-auto whitespace-nowrap; -ms-overflow-style: none; /* IE and Edge */ scrollbar-width: none; /* Firefox */ &::-webkit-scrollbar { display: none; } + @apply h-12.5 xl:h-15 flex items-center; li{ - @apply py-[1.25vw]; a{ @apply text-size-base; } &:not(:last-child){ - @apply mr-[2.15vw]; + @apply mr-7.5; } } } > a{ - @apply absolute -right-0 top-0 h-full flex items-center text-size-base text-grey-300 z-10 py-[0.25vw]; + @apply absolute -right-0 top-0 h-full hidden lg:flex items-center text-size-base text-grey-300 z-10 py-3; span{ @apply inline-flex items-center bg-white pr-[calc(var(--grid-gutter)*2)]; &::after{ content: ''; background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25 25'%3E%3Cpath d='m14.333 8 4.167 4.5m0 0L14.333 17m4.167-4.5H6' stroke='%23A3ADAD'/%3E%3C/svg%3E"); background-size: 100%; - @apply w-[1.75vw] aspect-square bg-no-repeat bg-center ml-[0.5vw]; + @apply w-7.5 aspect-square bg-no-repeat bg-center ml-2.5; } } &::before{ content: ''; background: rgb(255,255,255); background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 80%); - @apply w-[5vw] h-full; + @apply w-16 h-full; } } &.is-stacked{ diff --git a/src/assets/css/components/tease.css b/src/assets/css/components/tease.css index a2a64b5..e049a45 100644 --- a/src/assets/css/components/tease.css +++ b/src/assets/css/components/tease.css @@ -1,5 +1,11 @@ .tease-wrapper{ - @apply grid grid-cols-4 gap-x-5 gap-y-14; + @apply grid md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-x-5 gap-y-14; + .tease{ + /* @TODO */ + &:nth-child(4){ + @apply max-xl:lg:hidden; + } + } } .tease{ @@ -13,7 +19,7 @@ } } /* @todo */ - &--square{ + &--sm{ @apply aspect-square overflow-hidden relative; .tease__img{ transition: height .2s ease; diff --git a/src/assets/css/page/archive-degrees.css b/src/assets/css/page/archive-degrees.css new file mode 100644 index 0000000..ffe03e2 --- /dev/null +++ b/src/assets/css/page/archive-degrees.css @@ -0,0 +1,12 @@ +.archive-degrees-degree{ + @apply mb-lg; + h2{ + @apply text-lg md:text-xl-md xl:text-2xl; + } + .block-grid-list{ + @apply mt-lg; + } + a.block-link{ + @apply mt-md; + } +} \ No newline at end of file diff --git a/src/assets/css/page/course.css b/src/assets/css/page/course.css index 8c56908..fe5c065 100644 --- a/src/assets/css/page/course.css +++ b/src/assets/css/page/course.css @@ -1,18 +1,9 @@ -.course-cols{ - grid-auto-rows: auto; - @apply grid-container grid lg:grid-cols-2 gap-x-[calc(var(--grid-gutter)*2)] pt-[var(--grid-offset)]; - > *{ +.course-module{ + @apply mt-lg; + + .course-module{ + @apply mt-md; } - &__col-1{ - @apply sticky top-0; - .block-grid-list{ - @apply mb-20; - } + &__title{ + @apply font-bold grid-container mb-xs; } -} - -body.single-course{ - section{ - scroll-margin-top: var(--secondary-nav-height); - } -} +} \ No newline at end of file diff --git a/src/assets/css/page/degree.css b/src/assets/css/page/degree.css new file mode 100644 index 0000000..b5e180c --- /dev/null +++ b/src/assets/css/page/degree.css @@ -0,0 +1,26 @@ +.degree-cols{ + /* grid-auto-rows: auto; + @apply grid-container grid lg:grid-cols-2 gap-x-[calc(var(--grid-gutter)*2)] pt-[var(--grid-offset)]; */ + @apply grid-container lg:flex gap-x-[calc(var(--grid-gutter)*2)] mt-0; + > *{ + @apply lg:w-1/2; + } + &__col{ + @apply lg:order-2; + &:not(.course-cols__col-info){ + @apply mb-lg lg:mb-0; + } + } + &__col-info{ + @apply xl:sticky top-16 h-full lg:order-1; + .block-grid-list{ + @apply mb-md; + } + } +} + +body.single-degree{ + section{ + scroll-margin-top: var(--secondary-nav-height); + } +} diff --git a/src/assets/css/page/index.css b/src/assets/css/page/index.css index 2c3f672..ce78458 100644 --- a/src/assets/css/page/index.css +++ b/src/assets/css/page/index.css @@ -1,2 +1,4 @@ @import "../utilities.css"; -@import "course.css"; \ No newline at end of file +@import "archive-degrees.css"; +@import "course.css"; +@import "degree.css"; \ No newline at end of file diff --git a/src/assets/img/icons/search.svg b/src/assets/img/icons/search.svg index 20aacd9..62cfb00 100644 --- a/src/assets/img/icons/search.svg +++ b/src/assets/img/icons/search.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/assets/img/post_type/corsi/architettura-4.jpg b/src/assets/img/post_type/corsi/architettura-4.jpg new file mode 100644 index 0000000..b2ff30f --- /dev/null +++ b/src/assets/img/post_type/corsi/architettura-4.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/architettura-5.jpg b/src/assets/img/post_type/corsi/architettura-5.jpg new file mode 100644 index 0000000..59e26b0 --- /dev/null +++ b/src/assets/img/post_type/corsi/architettura-5.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/architettura-6.jpg b/src/assets/img/post_type/corsi/architettura-6.jpg new file mode 100644 index 0000000..b64bccb --- /dev/null +++ b/src/assets/img/post_type/corsi/architettura-6.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/architettura-7.jpg b/src/assets/img/post_type/corsi/architettura-7.jpg new file mode 100644 index 0000000..9a8148e --- /dev/null +++ b/src/assets/img/post_type/corsi/architettura-7.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/architettura-8.jpg b/src/assets/img/post_type/corsi/architettura-8.jpg new file mode 100644 index 0000000..052a67d --- /dev/null +++ b/src/assets/img/post_type/corsi/architettura-8.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-1.jpg b/src/assets/img/post_type/corsi/design-1.jpg new file mode 100644 index 0000000..f852f59 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-1.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-2.jpg b/src/assets/img/post_type/corsi/design-2.jpg new file mode 100644 index 0000000..914ac9d --- /dev/null +++ b/src/assets/img/post_type/corsi/design-2.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-3.jpg b/src/assets/img/post_type/corsi/design-3.jpg new file mode 100644 index 0000000..8d35219 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-3.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-4.jpg b/src/assets/img/post_type/corsi/design-4.jpg new file mode 100644 index 0000000..443e56c --- /dev/null +++ b/src/assets/img/post_type/corsi/design-4.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-5.jpg b/src/assets/img/post_type/corsi/design-5.jpg new file mode 100644 index 0000000..956a1c0 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-5.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-c-1.jpg b/src/assets/img/post_type/corsi/design-c-1.jpg new file mode 100644 index 0000000..cbe5f7c --- /dev/null +++ b/src/assets/img/post_type/corsi/design-c-1.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-c-2.jpg b/src/assets/img/post_type/corsi/design-c-2.jpg new file mode 100644 index 0000000..1101777 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-c-2.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-c-3.jpg b/src/assets/img/post_type/corsi/design-c-3.jpg new file mode 100644 index 0000000..5b1437b --- /dev/null +++ b/src/assets/img/post_type/corsi/design-c-3.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-c-4.jpg b/src/assets/img/post_type/corsi/design-c-4.jpg new file mode 100644 index 0000000..4442379 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-c-4.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-c-5.jpg b/src/assets/img/post_type/corsi/design-c-5.jpg new file mode 100644 index 0000000..2e68735 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-c-5.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-lab.jpg b/src/assets/img/post_type/corsi/design-lab.jpg new file mode 100644 index 0000000..a6e6305 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-lab.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-moda-1.jpg b/src/assets/img/post_type/corsi/design-moda-1.jpg new file mode 100644 index 0000000..d008b45 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-moda-1.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-moda-2.jpg b/src/assets/img/post_type/corsi/design-moda-2.jpg new file mode 100644 index 0000000..0fbf5d8 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-moda-2.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-moda-3.jpg b/src/assets/img/post_type/corsi/design-moda-3.jpg new file mode 100644 index 0000000..52ab05b --- /dev/null +++ b/src/assets/img/post_type/corsi/design-moda-3.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-moda-4.jpg b/src/assets/img/post_type/corsi/design-moda-4.jpg new file mode 100644 index 0000000..5192741 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-moda-4.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-moda-5.jpg b/src/assets/img/post_type/corsi/design-moda-5.jpg new file mode 100644 index 0000000..d76e43c --- /dev/null +++ b/src/assets/img/post_type/corsi/design-moda-5.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-open-lab.jpg b/src/assets/img/post_type/corsi/design-open-lab.jpg new file mode 100644 index 0000000..46b938f --- /dev/null +++ b/src/assets/img/post_type/corsi/design-open-lab.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-prodotto-1.jpg b/src/assets/img/post_type/corsi/design-prodotto-1.jpg new file mode 100644 index 0000000..46c699d --- /dev/null +++ b/src/assets/img/post_type/corsi/design-prodotto-1.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-prodotto-2.jpg b/src/assets/img/post_type/corsi/design-prodotto-2.jpg new file mode 100644 index 0000000..34bfa29 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-prodotto-2.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-prodotto-3.jpg b/src/assets/img/post_type/corsi/design-prodotto-3.jpg new file mode 100644 index 0000000..804b92d --- /dev/null +++ b/src/assets/img/post_type/corsi/design-prodotto-3.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-prodotto-4.jpg b/src/assets/img/post_type/corsi/design-prodotto-4.jpg new file mode 100644 index 0000000..daeeba9 --- /dev/null +++ b/src/assets/img/post_type/corsi/design-prodotto-4.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design-prodotto-5.jpg b/src/assets/img/post_type/corsi/design-prodotto-5.jpg new file mode 100644 index 0000000..009a1ed --- /dev/null +++ b/src/assets/img/post_type/corsi/design-prodotto-5.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/design.jpg b/src/assets/img/post_type/corsi/design.jpg new file mode 100644 index 0000000..a3d699e --- /dev/null +++ b/src/assets/img/post_type/corsi/design.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/urbanistica-1.jpg b/src/assets/img/post_type/corsi/urbanistica-1.jpg new file mode 100644 index 0000000..709d00d --- /dev/null +++ b/src/assets/img/post_type/corsi/urbanistica-1.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/urbanistica-2.jpg b/src/assets/img/post_type/corsi/urbanistica-2.jpg new file mode 100644 index 0000000..afd6c0d --- /dev/null +++ b/src/assets/img/post_type/corsi/urbanistica-2.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/urbanistica-3.jpg b/src/assets/img/post_type/corsi/urbanistica-3.jpg new file mode 100644 index 0000000..5297932 --- /dev/null +++ b/src/assets/img/post_type/corsi/urbanistica-3.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/urbanistica-4.jpg b/src/assets/img/post_type/corsi/urbanistica-4.jpg new file mode 100644 index 0000000..81427b7 --- /dev/null +++ b/src/assets/img/post_type/corsi/urbanistica-4.jpg Binary files differ diff --git a/src/assets/img/post_type/corsi/urbanistica-5.jpg b/src/assets/img/post_type/corsi/urbanistica-5.jpg new file mode 100644 index 0000000..739851b --- /dev/null +++ b/src/assets/img/post_type/corsi/urbanistica-5.jpg Binary files differ diff --git a/src/assets/img/post_type/labs/lab-1.jpg b/src/assets/img/post_type/labs/lab-1.jpg new file mode 100644 index 0000000..6679599 --- /dev/null +++ b/src/assets/img/post_type/labs/lab-1.jpg Binary files differ diff --git a/src/assets/img/post_type/labs/lab-10.jpg b/src/assets/img/post_type/labs/lab-10.jpg new file mode 100644 index 0000000..570a829 --- /dev/null +++ b/src/assets/img/post_type/labs/lab-10.jpg Binary files differ diff --git a/src/assets/img/post_type/labs/lab-2.jpg b/src/assets/img/post_type/labs/lab-2.jpg new file mode 100644 index 0000000..05a7698 --- /dev/null +++ b/src/assets/img/post_type/labs/lab-2.jpg Binary files differ diff --git a/src/assets/img/post_type/labs/lab-3.jpg b/src/assets/img/post_type/labs/lab-3.jpg new file mode 100644 index 0000000..e725136 --- /dev/null +++ b/src/assets/img/post_type/labs/lab-3.jpg Binary files differ diff --git a/src/assets/img/post_type/labs/lab-4.jpg b/src/assets/img/post_type/labs/lab-4.jpg new file mode 100644 index 0000000..8530253 --- /dev/null +++ b/src/assets/img/post_type/labs/lab-4.jpg Binary files differ diff --git a/src/assets/img/post_type/labs/lab-5.jpg b/src/assets/img/post_type/labs/lab-5.jpg new file mode 100644 index 0000000..f1418e6 --- /dev/null +++ b/src/assets/img/post_type/labs/lab-5.jpg Binary files differ diff --git a/src/assets/img/post_type/labs/lab-6.jpg b/src/assets/img/post_type/labs/lab-6.jpg new file mode 100644 index 0000000..89e0701 --- /dev/null +++ b/src/assets/img/post_type/labs/lab-6.jpg Binary files differ diff --git a/src/assets/img/post_type/labs/lab-7.jpg b/src/assets/img/post_type/labs/lab-7.jpg new file mode 100644 index 0000000..d0b8885 --- /dev/null +++ b/src/assets/img/post_type/labs/lab-7.jpg Binary files differ diff --git a/src/assets/img/post_type/labs/lab-8.jpg b/src/assets/img/post_type/labs/lab-8.jpg new file mode 100644 index 0000000..965c3ed --- /dev/null +++ b/src/assets/img/post_type/labs/lab-8.jpg Binary files differ diff --git a/src/assets/img/post_type/labs/lab-9.jpg b/src/assets/img/post_type/labs/lab-9.jpg new file mode 100644 index 0000000..c03f97a --- /dev/null +++ b/src/assets/img/post_type/labs/lab-9.jpg Binary files differ diff --git a/src/assets/js/blocks/accordion.js b/src/assets/js/blocks/accordion.js new file mode 100644 index 0000000..a2ab3e7 --- /dev/null +++ b/src/assets/js/blocks/accordion.js @@ -0,0 +1,22 @@ +window.addEventListener('load', (event) => { + + const accordions = document.querySelectorAll('[data-accordion]') + + accordions.forEach(accordion => { + const title = accordion.querySelector('[data-accordion-title]') + const content = accordion.querySelector('[data-accordion-content]') + title.addEventListener('click', function(){ + //close all other accordions + accordions.forEach(item => { + if (item != accordion) { + item.classList.remove('is-toggled') + item.querySelector('[data-accordion-content]').style.display = 'none' + } + }) + //open clicked accordion + accordion.classList.toggle('is-toggled') + content.style.display = content.style.display == 'none' ? 'block' : 'none'; + }) + }) + +}) \ No newline at end of file diff --git a/src/assets/js/blocks/carousel.js b/src/assets/js/blocks/carousel.js new file mode 100644 index 0000000..90188c0 --- /dev/null +++ b/src/assets/js/blocks/carousel.js @@ -0,0 +1,46 @@ +window.addEventListener('load', (event) => { + + if (typeof(document.querySelector('.swiper')) == 'undefined' || document.querySelector('.swiper') == null) return + + const swiper = new Swiper('.swiper', { + + loop: true, + effect: 'fade', + + // If we need pagination + pagination: { + el: '.swiper-pagination', + }, + + // Navigation arrows + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + + // And if we need scrollbar + scrollbar: { + el: '.swiper-scrollbar', + } + }) + + const carousels = document.querySelectorAll('.block-carousel') + + function setCarouselImgHeight(carousel){ + const carouselImg = carousel.querySelector('.swiper-slide__img') + let carouselImgHeight = Math.floor(carousel.clientWidth / 1.5) + //set carousel img height + carousel.style.setProperty('--carousel-img-height', `${carouselImgHeight}px`) + } + + carousels.forEach(carousel => { + setCarouselImgHeight(carousel) + }) + + window.addEventListener('resize', function(){ + carousels.forEach(carousel => { + setCarouselImgHeight(carousel) + }) + }) + +}) diff --git a/src/assets/js/blocks/marquee.js b/src/assets/js/blocks/marquee.js new file mode 100644 index 0000000..e8edc02 --- /dev/null +++ b/src/assets/js/blocks/marquee.js @@ -0,0 +1,68 @@ +window.addEventListener('load', (event) => { + + const marquees = document.querySelectorAll('[data-marquee]') + + marquees.forEach(marquee => { + + const container = marquee.querySelector('[data-marquee-container]') + + let itemWidth = window.getComputedStyle(marquee).getPropertyValue('--marquee-item-width') + const itemWidthBase = Number(itemWidth.replace(/vw/g, '')) + const itemsLength = marquee.getAttribute('data-marquee-items') + + const items = container.querySelectorAll('[data-marquee-item]') + + let itemsCloned = 1 + + //clone items in marquee if 100vw / itemsLength less than threshold + if (100 / itemWidthBase < itemsLength) { + items.forEach(item => { + container.appendChild(item.cloneNode(true)) + }) + itemsCloned = 2 + } + + const speed = Number(marquee.getAttribute('data-marquee-speed')) + + let pos = 0 + let intvl + + //get vars + // const items = marquee.getAttribute('data-marquee-items') + + //calculate wrapper width + container.style.width = `calc(${items.length*itemsCloned}*${itemWidth})` + + intvl = setInterval(() => { + if (pos > 50) { + container.style.transform = `translateX(0%)` + pos = 0 + } else { + container.style.transform = `translateX(-${pos}%)` + } + pos = pos+speed + }, 0) + + marquee.addEventListener('mouseover', function(){ + clearInterval(intvl) + }) + + marquee.addEventListener('mouseleave', function(){ + intvl = setInterval(() => { + if (pos > 50) { + container.style.transform = `translateX(0%)` + pos = 0 + } else { + container.style.transform = `translateX(-${pos}%)` + } + pos = pos+speed + }, 0) + }) + + window.addEventListener('resize', function(){ + itemWidth = window.getComputedStyle(marquee).getPropertyValue('--marquee-item-width') + container.style.width = `calc(${items.length*itemsCloned}*${itemWidth})` + }) + + }) +}) \ No newline at end of file diff --git a/src/assets/js/blocks/page-title-banner.js b/src/assets/js/blocks/page-title-banner.js new file mode 100644 index 0000000..0f52ba7 --- /dev/null +++ b/src/assets/js/blocks/page-title-banner.js @@ -0,0 +1,24 @@ +window.addEventListener('load', (event) => { + + const banners = document.querySelectorAll('.block-page-title-banner') + + function setBannerHeight(banner){ + if (window.matchMedia('(min-width: 62rem)').matches) { + //get element top offset + const bannerOffsetTop = banner.offsetTop + //set block height + banner.style.setProperty('--page-title-banner-img-height', `${window.innerHeight-bannerOffsetTop}px`) + } + } + + banners.forEach(banner => { + setBannerHeight(banner) + }) + + window.addEventListener('resize', function(){ + banners.forEach(banner => { + setBannerHeight(banner) + }) + }) + +}) diff --git a/src/assets/js/blocks/secondary-nav.js b/src/assets/js/blocks/secondary-nav.js new file mode 100644 index 0000000..edabc73 --- /dev/null +++ b/src/assets/js/blocks/secondary-nav.js @@ -0,0 +1,70 @@ +window.addEventListener('load', (event) => { + + let currentScrollPos = 0 + let prevScrollPos = 0 + + const secondaryNav = document.querySelector('.secondary-nav') + + if (typeof(secondaryNav) == 'undefined' || secondaryNav == null) return + + const secondaryNavTrigger = document.querySelector('.secondary-nav-trigger') + const secondaryNavLinks = secondaryNav.querySelectorAll('ul li a') + + function getSecondaryNavHeight(){ + document.documentElement.style.setProperty("--secondary-nav-height", `${secondaryNav.clientHeight}px`) + } + + if(secondaryNav !== null) getSecondaryNavHeight() + + let secondaryNavObserver = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if(!entry.isIntersecting && currentScrollPos > entry.target.getBoundingClientRect().top){ + secondaryNav.classList.add('is-visible') + } else { + secondaryNav.classList.remove('is-visible') + } + }) + }, + { + threshold: 1, + rootMargin: '-1px 0px 0px 0px' + }) + + function getSecondaryNavButtonWidth(){ + const secondaryNavButtonWidth = secondaryNav.querySelector('.secondary-nav__btn').clientWidth + secondaryNav.style.setProperty("--secondary-nav-button-width", `${secondaryNavButtonWidth}px`) + } + if(secondaryNav !== null) { + + secondaryNavObserver.observe(secondaryNavTrigger) + + getSecondaryNavButtonWidth() + + window.addEventListener('scroll', () => { + currentScrollPos = window.scrollY + if (prevScrollPos > 0 && prevScrollPos < currentScrollPos && currentScrollPos > window.innerHeight ) { + secondaryNav.classList.remove('is-stacked') + } else if (prevScrollPos >= currentScrollPos) { + secondaryNav.classList.add('is-stacked') + } + prevScrollPos = currentScrollPos + }) + } + + window.addEventListener('resize', function(){ + if(secondaryNav !== null) { + getSecondaryNavButtonWidth() + } + }) + + //smooth scrolling anchor links + secondaryNavLinks.forEach(link => { + link.addEventListener('click', function(e){ + e.preventDefault() + document.querySelector(this.getAttribute('href')).scrollIntoView({ + behavior: 'smooth' + }) + }) + }) + +}) diff --git a/src/assets/js/blocks/tabs.js b/src/assets/js/blocks/tabs.js new file mode 100644 index 0000000..253ba8c --- /dev/null +++ b/src/assets/js/blocks/tabs.js @@ -0,0 +1,22 @@ +window.addEventListener('load', (event) => { + + const tabs = document.querySelectorAll('[data-tabs-container]') + + function toggleTab(container, button){ + [...container.querySelectorAll('[data-tab-target]')].forEach((b)=>{b.classList.remove('is-selected')}); + [...container.querySelectorAll('[data-tab-index]')].forEach((t)=>{t.style.display = 'none'}); + button.classList.add('is-selected') + const target = button.getAttribute('data-tab-target') + container.querySelector(`[data-tab-index="${target}"]`).style.display = 'block'; + + } + + tabs.forEach(tabContainer => { + const tabsButtons = tabContainer.querySelectorAll('[data-tab-target]') + tabsButtons.forEach(button => { + button.addEventListener('click', function(){ + toggleTab(tabContainer, this) + }) + }) + }) +}) \ No newline at end of file diff --git a/src/assets/js/blocks/tease.js b/src/assets/js/blocks/tease.js new file mode 100644 index 0000000..4b0631d --- /dev/null +++ b/src/assets/js/blocks/tease.js @@ -0,0 +1,25 @@ +window.addEventListener('load', (event) => { + + const teaseItems = document.querySelectorAll('.tease') + + function updateTeaseHeight(tease){ + const teaseHeight = tease.clientHeight + const teaseImg = tease.querySelector('.tease__img') + const teaseText = tease.querySelector('.tease__main') + const teaseTextHeight = teaseText.clientHeight + teaseImg.style.height = `${teaseHeight-teaseTextHeight}px` + teaseText.style.marginTop = `${teaseHeight-teaseTextHeight}px` + } + + teaseItems.forEach(tease => { + updateTeaseHeight(tease) + }) + + window.addEventListener('resize', function(){ + teaseItems.forEach(tease => { + updateTeaseHeight(tease) + }) + }) + + +}) \ No newline at end of file diff --git a/src/assets/js/site.js b/src/assets/js/site.js index fe6b88b..2b34d72 100644 --- a/src/assets/js/site.js +++ b/src/assets/js/site.js @@ -1,3 +1,11 @@ +import './blocks/accordion.js'; +import './blocks/carousel.js'; +import './blocks/marquee.js'; +import './blocks/page-title-banner.js'; +import './blocks/secondary-nav.js'; +import './blocks/tabs.js'; +import './blocks/tease.js'; + /** * Global scripts */ @@ -26,8 +34,8 @@ const header = document.querySelector('.site-header') const logo = document.querySelector('.site-logo') const a11y_ariaexpanded = document.querySelectorAll('[aria-expanded="false"]') - const menuItems = document.querySelectorAll('#site-header-main-nav > ul > .menu-item-has-children') - const menuSubItems = document.querySelectorAll('.site-header-navbar-submenu-0 li .menu-item') + const mainNav = document.getElementById('site-header-main-nav') + const menuItems = document.querySelectorAll('#site-header-main-nav > ul > .menu-item-has-children > a') const menuBtn = document.getElementById('menu-btn') const overlay = document.getElementById('overlay') const menuMobile = document.getElementById('menu-mobile') @@ -35,6 +43,20 @@ const accordionMenuItems = document.querySelectorAll('[data-toggle-menu-items]') const footer = document.getElementById('site-footer') + /** + * Throttle + */ + function throttle(mainFunction, delay) { + let timerFlag = null + return (...args) => { + if (timerFlag === null) { + mainFunction(...args) + timerFlag = setTimeout(() => { + timerFlag = null + }, delay) + } + } + } /** * Check if iOS, then set --vh @@ -115,7 +137,7 @@ * Menu */ - function toggleMenuSharedElements(){ + function toggleMenuSharedElements(toggle = true){ if (!menuIsOpen) { body.classList.add('has-menu-toggled') @@ -123,7 +145,7 @@ menuBtn.classList.add('is-toggled') overlay.classList.add('is-active') menuIsOpen = true - } else { + } else if (toggle) { body.classList.remove('has-menu-toggled') menuBtn.classList.remove('is-active') menuBtn.classList.remove('is-toggled') @@ -148,10 +170,34 @@ } function toggleMobileMenu(forceClosing = null){ + toggleMenuSharedElements() if (forceClosing) { menuMobile.classList.remove('is-toggled') } else { menuMobile.classList.toggle('is-toggled') + // if (menuIsOpen) { + // menuMobile.animate( + // [ + // { height: '0px' }, + // { height: `${menuMobile.clientHeight}px` } + // ], + // { + // duration: 500, + // easing: 'ease-out' + // } + // ) + // } else { + // menuMobile.animate( + // [ + // { height: '0px' }, + // { height: `${menuMobile.clientHeight}px` } + // ], + // { + // duration: 500, + // easing: 'ease-out' + // } + // ) + // } } closeAllAccordionMenuItems() // set margin on page wapper @@ -160,12 +206,31 @@ menuIsOpen ? mobileMenuIsOpen = true : mobileMenuIsOpen = false } + let previousClickedItem function toggleDesktopMenu(clickedItem = null){ + + if (clickedItem == null) { + toggleMenuSharedElements() + openSubMenu() + + } else if (clickedItem == previousClickedItem || previousClickedItem == null || !desktopMenuIsOpen) { + // if desktop menu is not toggled or you are toggling menu item + toggleMenuSharedElements() + openSubMenu(clickedItem) + } else if (clickedItem != previousClickedItem && clickedItem != null){ + // if you are swapping submenu + openSubMenu(clickedItem, false) + } + // assign previous clicked item to currently clicked item + previousClickedItem = clickedItem + + // toggle/remove class on all menu items menuItems.forEach((item) => { - if (item == clickedItem) { - item.classList.add('is-toggled') + const itemListItem = item.parentElement + if (itemListItem != clickedItem) { + itemListItem.classList.remove('is-toggled') } else { - item.classList.remove('is-toggled') + itemListItem.classList.toggle('is-toggled') } }) // set margin on page wapper @@ -189,85 +254,84 @@ } } - function animateMenuItemsOverlay(e, itemOverlay, mouseenter = true){ - - // Get the bounding rectangle of target - const target = e.target - const rect = target.getBoundingClientRect() - let height = rect.height - // Mouse position - const y = e.clientY - rect.top - - const inOutFromTop = (y < height / 2) ? true : false - - let itemOverlayAnimations - let itemTransform - - if (inOutFromTop && mouseenter) { - itemOverlayAnimations = itemOverlay.animate([ - {transform: 'translate3d(0, -101%, 0)'}, - {transform: 'translate3d(0, 0, 0)'} - ], 250) - itemTransform = '0%' - } else if (inOutFromTop && !mouseenter) { - itemOverlayAnimations = itemOverlay.animate([ - {transform: 'translate3d(0, 0, 0)'}, - {transform: 'translate3d(0, -101%, 0)'} - ], 250) - itemTransform = '-101%' - } else if (!inOutFromTop && mouseenter) { - itemOverlayAnimations = itemOverlay.animate([ - {transform: 'translate3d(0, 101%, 0)'}, - {transform: 'translate3d(0, 0, 0)'} - ], 250) - itemTransform = '0%' - } else if (!inOutFromTop && !mouseenter) { - itemTransform = '101%' - itemOverlayAnimations = itemOverlay.animate([ - {transform: 'translate3d(0, 0, 0)'}, - {transform: 'translate3d(0, 101%, 0)'} - ], 250) - } - - itemOverlayAnimations.addEventListener('finish', function() { - itemOverlay.style.transform = `translate3d(0, ${itemTransform}, 0)`; - }) - } - - function openSubMenu(event){ - const item = event.target.closest('li') - event.preventDefault() - if (item.classList.contains('is-toggled')) { - toggleMenuSharedElements() - toggleDesktopMenu() - } else if (desktopMenuIsOpen){ - toggleDesktopMenu(this) + // animate desktop dropdown and toggle + function openSubMenu(clickedItem, animate = true){ + let submenu + if (clickedItem) { + //if there's a clicked item get submenu descendante + submenu = clickedItem.querySelector('.site-header-navbar-submenu-0') } else { - toggleMenuSharedElements() - toggleDesktopMenu(this) + // if there isn't a clicked item (eg: X button), select visible menus + submenu = document.querySelector('.site-header-navbar-submenu-0.is-visible') + clickedItem = document.querySelector('#site-header-main-nav .menu-item-has-children.is-toggled') + console.log(clickedItem) + } + if (clickedItem.classList.contains('is-toggled')) { + // if desktop menu is already open and click on already toggled item + // remove classes and animate submenu to 0px height + mainNav.classList.remove('is-toggled') + submenu.classList.add('is-closing') + submenu.animate( + [ + { height: `${submenu.clientHeight}px` }, + { height: 0 } + ], + { + duration: 250, + delay: 250, + easing: 'ease-out' + } + ) + // timeout animation + setTimeout(() => { + submenu.classList.remove('is-visible') + submenu.classList.remove('is-closing') + }, 500); + } else if (!animate){ + // if desktop menu is open and click on item not yet toggled + // swap submenu container without animations + [...document.querySelectorAll('.site-header-navbar-submenu-0')].forEach(s=>{ + if(submenu != s){ + s.classList.remove('is-visible') + } else { + submenu.classList.add('is-visible') + } + }) + } else { + // if desktop menu is not open and click on item + // show and animate submenu + submenu.classList.add('is-visible') + submenu.animate( + [ + { height: 0 }, + { height: `${submenu.clientHeight}px` } + ], + { + duration: 250, + easing: 'ease-out' + } + ) + setTimeout(() => { + mainNav.classList.add('is-toggled') + }, 500); } } + + function cbToggleDesktopMenu(event){ + const item = event.target.parentElement + toggleDesktopMenu(item) + } + + // Throttle the fetchData function with a delay of 5000 ms + const throttledtoggleDesktopMenu = throttle(cbToggleDesktopMenu, 500) menuItems.forEach(item => { - item.addEventListener('click', openSubMenu) - }) - - menuSubItems.forEach(subItem => { - const subItemOverlay = subItem.querySelector('.menu-item-overlay') - subItemOverlay.style.transform = 'translate3d(0, -101%, 0)' - - subItem.addEventListener('mouseenter', function (e) { - animateMenuItemsOverlay(e, subItemOverlay) - }) - - subItem.addEventListener('mouseleave', function (e) { - animateMenuItemsOverlay(e, subItemOverlay, false) - }) + item.addEventListener('click', throttledtoggleDesktopMenu) }) menuBtn.addEventListener('click', function(){ - toggleMenuSharedElements() if (isDesktop.matches) { + console.log('test') toggleDesktopMenu() } else { toggleMobileMenu() @@ -295,13 +359,23 @@ closeAllAccordionMenuItems() } else { // when you click on item, close other items on same nesting level - [...document.querySelectorAll(`[data-toggle-menu-items="${nesting}"]`)].forEach(i=>{if(this != i){i.parentElement.parentElement.classList.remove('is-toggled')}}) + // [...document.querySelectorAll(`[data-toggle-menu-items="${nesting}"]`)].forEach(i=>{if(this != i){i.parentElement.parentElement.classList.remove('is-toggled')}}) // toggle clicked item clickedItem.classList.toggle('is-toggled') } }) }) + // if click on overlay close menu + overlay.addEventListener('click', function(){ + // toggleMenuSharedElements() + if (isDesktop.matches) { + toggleDesktopMenu() + } else { + toggleMobileMenu() + } + }) + /** * Back to top */ diff --git a/src/assets/js/vendor/swiper/LICENSE b/src/assets/js/vendor/swiper/LICENSE new file mode 100644 index 0000000..a7876ca --- /dev/null +++ b/src/assets/js/vendor/swiper/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/assets/js/vendor/swiper/README.md b/src/assets/js/vendor/swiper/README.md new file mode 100644 index 0000000..d4e726c --- /dev/null +++ b/src/assets/js/vendor/swiper/README.md @@ -0,0 +1,11 @@ +Swiper +========== + +Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps. + +Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity. + +# Getting Started + * [Getting Started Guide](https://swiperjs.com/get-started/) + * [API](https://swiperjs.com/swiper-api/) + * [Demos](https://swiperjs.com/demos/) diff --git a/src/assets/js/vendor/swiper/modules/a11y-element.css b/src/assets/js/vendor/swiper/modules/a11y-element.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/a11y-element.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/src/assets/js/vendor/swiper/modules/a11y-element.min.css b/src/assets/js/vendor/swiper/modules/a11y-element.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/a11y-element.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/a11y.css b/src/assets/js/vendor/swiper/modules/a11y.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/a11y.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/src/assets/js/vendor/swiper/modules/a11y.less b/src/assets/js/vendor/swiper/modules/a11y.less new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/a11y.less @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/src/assets/js/vendor/swiper/modules/a11y.min.css b/src/assets/js/vendor/swiper/modules/a11y.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/a11y.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/a11y.min.mjs b/src/assets/js/vendor/swiper/modules/a11y.min.mjs new file mode 100644 index 0000000..8d00e2e --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/a11y.min.mjs @@ -0,0 +1,2 @@ +import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElement,g as elementIndex}from"../shared/utils.min.mjs";function A11y(e){let{swiper:a,extendParams:t,on:i}=e;t({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null}}),a.a11y={clicked:!1};let n=null;function s(e){const a=n;0!==a.length&&(a.innerHTML="",a.innerHTML=e)}const r=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function o(e){(e=r(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function l(e){(e=r(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function c(e,a){(e=r(e)).forEach((e=>{e.setAttribute("role",a)}))}function d(e,a){(e=r(e)).forEach((e=>{e.setAttribute("aria-roledescription",a)}))}function p(e,a){(e=r(e)).forEach((e=>{e.setAttribute("aria-label",a)}))}function g(e){(e=r(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function u(e){(e=r(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function f(e){if(13!==e.keyCode&&32!==e.keyCode)return;const t=a.params.a11y,i=e.target;a.pagination&&a.pagination.el&&(i===a.pagination.el||a.pagination.el.contains(e.target))&&!e.target.matches(classesToSelector(a.params.pagination.bulletClass))||(a.navigation&&a.navigation.nextEl&&i===a.navigation.nextEl&&(a.isEnd&&!a.params.loop||a.slideNext(),a.isEnd?s(t.lastSlideMessage):s(t.nextSlideMessage)),a.navigation&&a.navigation.prevEl&&i===a.navigation.prevEl&&(a.isBeginning&&!a.params.loop||a.slidePrev(),a.isBeginning?s(t.firstSlideMessage):s(t.prevSlideMessage)),a.pagination&&i.matches(classesToSelector(a.params.pagination.bulletClass))&&i.click())}function m(){return a.pagination&&a.pagination.bullets&&a.pagination.bullets.length}function v(){return m()&&a.params.pagination.clickable}const E=(e,a,t)=>{o(e),"BUTTON"!==e.tagName&&(c(e,"button"),e.addEventListener("keydown",f)),p(e,t),function(e,a){(e=r(e)).forEach((e=>{e.setAttribute("aria-controls",a)}))}(e,a)},b=()=>{a.a11y.clicked=!0},h=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{a.destroyed||(a.a11y.clicked=!1)}))}))},y=e=>{if(a.a11y.clicked)return;const t=e.target.closest(`.${a.params.slideClass}, swiper-slide`);if(!t||!a.slides.includes(t))return;const i=a.slides.indexOf(t)===a.activeIndex,n=a.params.watchSlidesProgress&&a.visibleSlides&&a.visibleSlides.includes(t);i||n||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(a.isHorizontal()?a.el.scrollLeft=0:a.el.scrollTop=0,a.slideTo(a.slides.indexOf(t),0))},M=()=>{const e=a.params.a11y;e.itemRoleDescriptionMessage&&d(a.slides,e.itemRoleDescriptionMessage),e.slideRole&&c(a.slides,e.slideRole);const t=a.slides.length;e.slideLabelMessage&&a.slides.forEach(((i,n)=>{const s=a.params.loop?parseInt(i.getAttribute("data-swiper-slide-index"),10):n;p(i,e.slideLabelMessage.replace(/\{\{index\}\}/,s+1).replace(/\{\{slidesLength\}\}/,t))}))},x=()=>{const e=a.params.a11y;a.el.append(n);const t=a.el;e.containerRoleDescriptionMessage&&d(t,e.containerRoleDescriptionMessage),e.containerMessage&&p(t,e.containerMessage);const i=a.wrapperEl,s=e.id||i.getAttribute("id")||`swiper-wrapper-${o=16,void 0===o&&(o=16),"x".repeat(o).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var o;const l=a.params.autoplay&&a.params.autoplay.enabled?"off":"polite";var c;c=s,r(i).forEach((e=>{e.setAttribute("id",c)})),function(e,a){(e=r(e)).forEach((e=>{e.setAttribute("aria-live",a)}))}(i,l),M();let{nextEl:g,prevEl:u}=a.navigation?a.navigation:{};if(g=r(g),u=r(u),g&&g.forEach((a=>E(a,s,e.nextSlideMessage))),u&&u.forEach((a=>E(a,s,e.prevSlideMessage))),v()){r(a.pagination.el).forEach((e=>{e.addEventListener("keydown",f)}))}a.el.addEventListener("focus",y,!0),a.el.addEventListener("pointerdown",b,!0),a.el.addEventListener("pointerup",h,!0)};i("beforeInit",(()=>{n=createElement("span",a.params.a11y.notificationClass),n.setAttribute("aria-live","assertive"),n.setAttribute("aria-atomic","true")})),i("afterInit",(()=>{a.params.a11y.enabled&&x()})),i("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{a.params.a11y.enabled&&M()})),i("fromEdge toEdge afterInit lock unlock",(()=>{a.params.a11y.enabled&&function(){if(a.params.loop||a.params.rewind||!a.navigation)return;const{nextEl:e,prevEl:t}=a.navigation;t&&(a.isBeginning?(g(t),l(t)):(u(t),o(t))),e&&(a.isEnd?(g(e),l(e)):(u(e),o(e)))}()})),i("paginationUpdate",(()=>{a.params.a11y.enabled&&function(){const e=a.params.a11y;m()&&a.pagination.bullets.forEach((t=>{a.params.pagination.clickable&&(o(t),a.params.pagination.renderBullet||(c(t,"button"),p(t,e.paginationBulletMessage.replace(/\{\{index\}\}/,elementIndex(t)+1)))),t.matches(classesToSelector(a.params.pagination.bulletActiveClass))?t.setAttribute("aria-current","true"):t.removeAttribute("aria-current")}))}()})),i("destroy",(()=>{a.params.a11y.enabled&&function(){n&&n.remove();let{nextEl:e,prevEl:t}=a.navigation?a.navigation:{};e=r(e),t=r(t),e&&e.forEach((e=>e.removeEventListener("keydown",f))),t&&t.forEach((e=>e.removeEventListener("keydown",f))),v()&&r(a.pagination.el).forEach((e=>{e.removeEventListener("keydown",f)}));a.el.removeEventListener("focus",y,!0),a.el.removeEventListener("pointerdown",b,!0),a.el.removeEventListener("pointerup",h,!0)}()}))}export{A11y as default}; +//# sourceMappingURL=a11y.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/a11y.min.mjs.map b/src/assets/js/vendor/swiper/modules/a11y.min.mjs.map new file mode 100644 index 0000000..aacddae --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/a11y.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"a11y.mjs.mjs","names":["classesToSelector","createElement","elementIndex","A11y","_ref","swiper","extendParams","on","a11y","enabled","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","id","clicked","liveRegion","notify","message","notification","length","innerHTML","makeElementsArray","el","Array","isArray","filter","e","makeElFocusable","forEach","subEl","setAttribute","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","label","disableEl","enableEl","onEnterOrSpaceKey","keyCode","params","targetEl","target","pagination","contains","matches","bulletClass","navigation","nextEl","isEnd","loop","slideNext","prevEl","isBeginning","slidePrev","click","hasPagination","bullets","hasClickablePagination","clickable","initNavEl","wrapperId","tagName","addEventListener","controls","addElControls","handlePointerDown","handlePointerUp","requestAnimationFrame","destroyed","handleFocus","slideEl","closest","slideClass","slides","includes","isActive","indexOf","activeIndex","isVisible","watchSlidesProgress","visibleSlides","sourceCapabilities","firesTouchEvents","isHorizontal","scrollLeft","scrollTop","slideTo","initSlides","slidesLength","index","slideIndex","parseInt","getAttribute","replace","init","append","containerEl","wrapperEl","size","repeat","Math","round","random","toString","live","autoplay","addElLive","rewind","updateNavigation","bulletEl","renderBullet","bulletActiveClass","removeAttribute","updatePagination","remove","removeEventListener","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/a11y.mjs b/src/assets/js/vendor/swiper/modules/a11y.mjs new file mode 100644 index 0000000..fd8ef73 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/a11y.mjs @@ -0,0 +1,343 @@ +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElement, g as elementIndex } from '../shared/utils.mjs'; + +function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = () => { + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const handleFocus = e => { + if (swiper.a11y.clicked) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); +} + +export { A11y as default }; diff --git a/src/assets/js/vendor/swiper/modules/a11y.scss b/src/assets/js/vendor/swiper/modules/a11y.scss new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/a11y.scss @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/src/assets/js/vendor/swiper/modules/autoplay-element.css b/src/assets/js/vendor/swiper/modules/autoplay-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/autoplay-element.css diff --git a/src/assets/js/vendor/swiper/modules/autoplay-element.min.css b/src/assets/js/vendor/swiper/modules/autoplay-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/autoplay-element.min.css diff --git a/src/assets/js/vendor/swiper/modules/autoplay.css b/src/assets/js/vendor/swiper/modules/autoplay.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/autoplay.css diff --git a/src/assets/js/vendor/swiper/modules/autoplay.less b/src/assets/js/vendor/swiper/modules/autoplay.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/autoplay.less diff --git a/src/assets/js/vendor/swiper/modules/autoplay.min.css b/src/assets/js/vendor/swiper/modules/autoplay.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/autoplay.min.css diff --git a/src/assets/js/vendor/swiper/modules/autoplay.min.mjs b/src/assets/js/vendor/swiper/modules/autoplay.min.mjs new file mode 100644 index 0000000..a5b77e5 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/autoplay.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";function Autoplay(e){let a,t,{swiper:n,extendParams:r,on:i,emit:o,params:s}=e;n.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let p,l,u,d,y,m,c,g,v=s&&s.autoplay?s.autoplay.delay:3e3,T=s&&s.autoplay?s.autoplay.delay:3e3,f=(new Date).getTime();function w(e){n&&!n.destroyed&&n.wrapperEl&&e.target===n.wrapperEl&&(n.wrapperEl.removeEventListener("transitionend",w),g||S())}const E=()=>{if(n.destroyed||!n.autoplay.running)return;n.autoplay.paused?l=!0:l&&(T=p,l=!1);const e=n.autoplay.paused?p:f+T-(new Date).getTime();n.autoplay.timeLeft=e,o("autoplayTimeLeft",e,e/v),t=requestAnimationFrame((()=>{E()}))},b=e=>{if(n.destroyed||!n.autoplay.running)return;cancelAnimationFrame(t),E();let r=void 0===e?n.params.autoplay.delay:e;v=n.params.autoplay.delay,T=n.params.autoplay.delay;const i=(()=>{let e;if(e=n.virtual&&n.params.virtual.enabled?n.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:n.slides[n.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(i)&&i>0&&void 0===e&&(r=i,v=i,T=i),p=r;const s=n.params.speed,l=()=>{n&&!n.destroyed&&(n.params.autoplay.reverseDirection?!n.isBeginning||n.params.loop||n.params.rewind?(n.slidePrev(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(n.slides.length-1,s,!0,!0),o("autoplay")):!n.isEnd||n.params.loop||n.params.rewind?(n.slideNext(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(0,s,!0,!0),o("autoplay")),n.params.cssMode&&(f=(new Date).getTime(),requestAnimationFrame((()=>{b()}))))};return r>0?(clearTimeout(a),a=setTimeout((()=>{l()}),r)):requestAnimationFrame((()=>{l()})),r},L=()=>{f=(new Date).getTime(),n.autoplay.running=!0,b(),o("autoplayStart")},D=()=>{n.autoplay.running=!1,clearTimeout(a),cancelAnimationFrame(t),o("autoplayStop")},O=(e,t)=>{if(n.destroyed||!n.autoplay.running)return;clearTimeout(a),e||(c=!0);const r=()=>{o("autoplayPause"),n.params.autoplay.waitForTransition?n.wrapperEl.addEventListener("transitionend",w):S()};if(n.autoplay.paused=!0,t)return m&&(p=n.params.autoplay.delay),m=!1,void r();const i=p||n.params.autoplay.delay;p=i-((new Date).getTime()-f),n.isEnd&&p<0&&!n.params.loop||(p<0&&(p=0),r())},S=()=>{n.isEnd&&p<0&&!n.params.loop||n.destroyed||!n.autoplay.running||(f=(new Date).getTime(),c?(c=!1,b(p)):b(),n.autoplay.paused=!1,o("autoplayResume"))},A=()=>{if(n.destroyed||!n.autoplay.running)return;const e=getDocument();"hidden"===e.visibilityState&&(c=!0,O(!0)),"visible"===e.visibilityState&&S()},F=e=>{"mouse"===e.pointerType&&(c=!0,g=!0,n.animating||n.autoplay.paused||O(!0))},M=e=>{"mouse"===e.pointerType&&(g=!1,n.autoplay.paused&&S())};i("init",(()=>{n.params.autoplay.enabled&&(n.params.autoplay.pauseOnMouseEnter&&(n.el.addEventListener("pointerenter",F),n.el.addEventListener("pointerleave",M)),getDocument().addEventListener("visibilitychange",A),L())})),i("destroy",(()=>{n.el.removeEventListener("pointerenter",F),n.el.removeEventListener("pointerleave",M),getDocument().removeEventListener("visibilitychange",A),n.autoplay.running&&D()})),i("_freeModeStaticRelease",(()=>{(d||c)&&S()})),i("_freeModeNoMomentumRelease",(()=>{n.params.autoplay.disableOnInteraction?D():O(!0,!0)})),i("beforeTransitionStart",((e,a,t)=>{!n.destroyed&&n.autoplay.running&&(t||!n.params.autoplay.disableOnInteraction?O(!0,!0):D())})),i("sliderFirstMove",(()=>{!n.destroyed&&n.autoplay.running&&(n.params.autoplay.disableOnInteraction?D():(u=!0,d=!1,c=!1,y=setTimeout((()=>{c=!0,d=!0,O(!0)}),200)))})),i("touchEnd",(()=>{if(!n.destroyed&&n.autoplay.running&&u){if(clearTimeout(y),clearTimeout(a),n.params.autoplay.disableOnInteraction)return d=!1,void(u=!1);d&&n.params.cssMode&&S(),d=!1,u=!1}})),i("slideChange",(()=>{!n.destroyed&&n.autoplay.running&&(m=!0)})),Object.assign(n.autoplay,{start:L,stop:D,pause:O,resume:S})}export{Autoplay as default}; +//# sourceMappingURL=autoplay.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/autoplay.min.mjs.map b/src/assets/js/vendor/swiper/modules/autoplay.min.mjs.map new file mode 100644 index 0000000..0f086c1 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/autoplay.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"autoplay.mjs.mjs","names":["getDocument","Autoplay","_ref","timeout","raf","swiper","extendParams","on","emit","params","autoplay","running","paused","timeLeft","enabled","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","Date","getTime","onTransitionEnd","e","destroyed","wrapperEl","target","removeEventListener","resume","calcTimeLeft","requestAnimationFrame","run","delayForce","cancelAnimationFrame","currentSlideDelay","activeSlideEl","virtual","slides","filter","slideEl","classList","contains","activeIndex","parseInt","getAttribute","getSlideDelay","Number","isNaN","speed","proceed","isBeginning","loop","rewind","slidePrev","slideTo","length","isEnd","slideNext","cssMode","clearTimeout","setTimeout","start","stop","pause","internal","reset","addEventListener","onVisibilityChange","document","visibilityState","onPointerEnter","pointerType","animating","onPointerLeave","el","_s","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/autoplay.mjs b/src/assets/js/vendor/swiper/modules/autoplay.mjs new file mode 100644 index 0000000..5e54974 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/autoplay.mjs @@ -0,0 +1,302 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; + +/* eslint no-underscore-dangle: "off" */ +/* eslint no-use-before-define: "off" */ +function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); +} + +export { Autoplay as default }; diff --git a/src/assets/js/vendor/swiper/modules/autoplay.scss b/src/assets/js/vendor/swiper/modules/autoplay.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/autoplay.scss diff --git a/src/assets/js/vendor/swiper/modules/controller-element.css b/src/assets/js/vendor/swiper/modules/controller-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/controller-element.css diff --git a/src/assets/js/vendor/swiper/modules/controller-element.min.css b/src/assets/js/vendor/swiper/modules/controller-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/controller-element.min.css diff --git a/src/assets/js/vendor/swiper/modules/controller.css b/src/assets/js/vendor/swiper/modules/controller.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/controller.css diff --git a/src/assets/js/vendor/swiper/modules/controller.less b/src/assets/js/vendor/swiper/modules/controller.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/controller.less diff --git a/src/assets/js/vendor/swiper/modules/controller.min.css b/src/assets/js/vendor/swiper/modules/controller.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/controller.min.css diff --git a/src/assets/js/vendor/swiper/modules/controller.min.mjs b/src/assets/js/vendor/swiper/modules/controller.min.mjs new file mode 100644 index 0000000..4e17d53 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/controller.min.mjs @@ -0,0 +1,2 @@ +import{n as nextTick,j as elementTransitionEnd}from"../shared/utils.min.mjs";function Controller(t){let{swiper:e,extendParams:n,on:r}=t;function o(t,e){const n=function(){let t,e,n;return(r,o)=>{for(e=-1,t=r.length;t-e>1;)n=t+e>>1,r[n]<=o?e=n:t=n;return t}}();let r,o;return this.x=t,this.y=e,this.lastIndex=t.length-1,this.interpolate=function(t){return t?(o=n(this.x,t),r=o-1,(t-this.x[r])*(this.y[o]-this.y[r])/(this.x[o]-this.x[r])+this.y[r]):0},this}function l(){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)}n({controller:{control:void 0,inverse:!1,by:"slide"}}),e.controller={control:void 0},r("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof e.params.controller.control||e.params.controller.control instanceof HTMLElement)){const t=document.querySelector(e.params.controller.control);if(t&&t.swiper)e.controller.control=t.swiper;else if(t){const n=r=>{e.controller.control=r.detail[0],e.update(),t.removeEventListener("init",n)};t.addEventListener("init",n)}}else e.controller.control=e.params.controller.control})),r("update",(()=>{l()})),r("resize",(()=>{l()})),r("observerUpdate",(()=>{l()})),r("setTranslate",((t,n,r)=>{e.controller.control&&!e.controller.control.destroyed&&e.controller.setTranslate(n,r)})),r("setTransition",((t,n,r)=>{e.controller.control&&!e.controller.control.destroyed&&e.controller.setTransition(n,r)})),Object.assign(e.controller,{setTranslate:function(t,n){const r=e.controller.control;let l,s;const i=e.constructor;function a(t){if(t.destroyed)return;const n=e.rtlTranslate?-e.translate:e.translate;"slide"===e.params.controller.by&&(!function(t){e.controller.spline=e.params.loop?new o(e.slidesGrid,t.slidesGrid):new o(e.snapGrid,t.snapGrid)}(t),s=-e.controller.spline.interpolate(-n)),s&&"container"!==e.params.controller.by||(l=(t.maxTranslate()-t.minTranslate())/(e.maxTranslate()-e.minTranslate()),!Number.isNaN(l)&&Number.isFinite(l)||(l=1),s=(n-e.minTranslate())*l+t.minTranslate()),e.params.controller.inverse&&(s=t.maxTranslate()-s),t.updateProgress(s),t.setTranslate(s,e),t.updateActiveIndex(),t.updateSlidesClasses()}if(Array.isArray(r))for(let t=0;t{n.updateAutoHeight()})),elementTransitionEnd(n.wrapperEl,(()=>{o&&n.transitionEnd()}))))}if(Array.isArray(o))for(l=0;l>"] }] */ +function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElement = document.querySelector(swiper.params.controller.control); + if (controlElement && controlElement.swiper) { + swiper.controller.control = controlElement.swiper; + } else if (controlElement) { + const onControllerSwiper = e => { + swiper.controller.control = e.detail[0]; + swiper.update(); + controlElement.removeEventListener('init', onControllerSwiper); + }; + controlElement.addEventListener('init', onControllerSwiper); + } + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); +} + +export { Controller as default }; diff --git a/src/assets/js/vendor/swiper/modules/controller.scss b/src/assets/js/vendor/swiper/modules/controller.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/controller.scss diff --git a/src/assets/js/vendor/swiper/modules/effect-cards-element.css b/src/assets/js/vendor/swiper/modules/effect-cards-element.css new file mode 100644 index 0000000..f831010 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cards-element.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards ::slotted(swiper-slide) { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/src/assets/js/vendor/swiper/modules/effect-cards-element.min.css b/src/assets/js/vendor/swiper/modules/effect-cards-element.min.css new file mode 100644 index 0000000..97c6648 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cards-element.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-cards.css b/src/assets/js/vendor/swiper/modules/effect-cards.css new file mode 100644 index 0000000..4b9f64b --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cards.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/src/assets/js/vendor/swiper/modules/effect-cards.less b/src/assets/js/vendor/swiper/modules/effect-cards.less new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cards.less @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/src/assets/js/vendor/swiper/modules/effect-cards.min.css b/src/assets/js/vendor/swiper/modules/effect-cards.min.css new file mode 100644 index 0000000..1769ef2 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cards.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-cards.min.mjs b/src/assets/js/vendor/swiper/modules/effect-cards.min.mjs new file mode 100644 index 0000000..fe35634 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cards.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{l as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCards(e){let{swiper:t,extendParams:a,on:s}=e;a({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}});effectInit({effect:"cards",swiper:t,on:s,setTranslate:()=>{const{slides:e,activeIndex:a,rtlTranslate:s}=t,r=t.params.cardsEffect,{startTranslate:i,isTouched:n}=t.touchEventsData,o=s?-t.translate:t.translate;for(let l=0;l0&&c<1&&(n||t.params.cssMode)&&o-1&&(n||t.params.cssMode)&&o>i;if(E||T){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;w+=-28*c*e,u+=-.5*e,S+=96*e,h=-25*e*Math.abs(c)+"%"}if(p=c<0?`calc(${p}px ${s?"-":"+"} (${S*Math.abs(c)}%))`:c>0?`calc(${p}px ${s?"-":"+"} (-${S*Math.abs(c)}%))`:`${p}px`,!t.isHorizontal()){const e=h;h=p,p=e}const x=c<0?""+(1+(1-u)*c):""+(1-(1-u)*c),b=`\n translate3d(${p}, ${h}, ${M}px)\n rotateZ(${r.rotate?s?-w:w:0}deg)\n scale(${x})\n `;if(r.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=createShadow("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(f))+e.length;effectTarget(r,d).style.transform=b}},setTransition:e=>{const a=t.slides.map((e=>getSlideTransformEl(e)));a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:a})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCards as default}; +//# sourceMappingURL=effect-cards.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-cards.min.mjs.map b/src/assets/js/vendor/swiper/modules/effect-cards.min.mjs.map new file mode 100644 index 0000000..e23f337 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cards.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cards.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCards","_ref","swiper","extendParams","on","cardsEffect","slideShadows","rotate","perSlideRotate","perSlideOffset","effect","setTranslate","slides","activeIndex","rtlTranslate","rtl","params","startTranslate","isTouched","touchEventsData","currentTranslate","translate","i","length","slideEl","slideProgress","progress","Math","min","max","offset","swiperSlideOffset","centeredSlides","cssMode","wrapperEl","style","transform","minTranslate","tX","tY","tZ","abs","scale","tXAdd","slideIndex","virtual","enabled","from","isSwipeToNext","isSwipeToPrev","subProgress","isHorizontal","prevY","scaleString","shadowEl","querySelector","opacity","zIndex","round","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","perspective","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-cards.mjs b/src/assets/js/vendor/swiper/modules/effect-cards.mjs new file mode 100644 index 0000000..1c3b18c --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cards.mjs @@ -0,0 +1,125 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { l as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCards as default }; diff --git a/src/assets/js/vendor/swiper/modules/effect-cards.scss b/src/assets/js/vendor/swiper/modules/effect-cards.scss new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cards.scss @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/src/assets/js/vendor/swiper/modules/effect-coverflow-element.css b/src/assets/js/vendor/swiper/modules/effect-coverflow-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-coverflow-element.css diff --git a/src/assets/js/vendor/swiper/modules/effect-coverflow-element.min.css b/src/assets/js/vendor/swiper/modules/effect-coverflow-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-coverflow-element.min.css diff --git a/src/assets/js/vendor/swiper/modules/effect-coverflow.css b/src/assets/js/vendor/swiper/modules/effect-coverflow.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-coverflow.css diff --git a/src/assets/js/vendor/swiper/modules/effect-coverflow.less b/src/assets/js/vendor/swiper/modules/effect-coverflow.less new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-coverflow.less @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/src/assets/js/vendor/swiper/modules/effect-coverflow.min.css b/src/assets/js/vendor/swiper/modules/effect-coverflow.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-coverflow.min.css diff --git a/src/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs b/src/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs new file mode 100644 index 0000000..67b2ad5 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{l as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCoverflow(e){let{swiper:t,extendParams:s,on:r}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}});effectInit({effect:"coverflow",swiper:t,on:r,setTranslate:()=>{const{width:e,height:s,slides:r,slidesSizesGrid:a}=t,o=t.params.coverflowEffect,i=t.isHorizontal(),l=t.translate,f=i?e/2-l:s/2-l,d=i?o.rotate:-o.rotate,h=o.depth;for(let e=0,s=r.length;e0?n:0),t&&(t.style.opacity=-n>0?-n:0)}}},setTransition:e=>{t.slides.map((e=>getSlideTransformEl(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}export{EffectCoverflow as default}; +//# sourceMappingURL=effect-coverflow.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs.map b/src/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs.map new file mode 100644 index 0000000..1f1997b --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-coverflow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-coverflow.mjs.mjs","names":["createShadow","effectInit","effectTarget","getSlideTransformEl","EffectCoverflow","_ref","swiper","extendParams","on","coverflowEffect","rotate","stretch","depth","scale","modifier","slideShadows","effect","setTranslate","width","swiperWidth","height","swiperHeight","slides","slidesSizesGrid","params","isHorizontal","transform","translate","center","i","length","slideEl","slideSize","centerOffset","swiperSlideOffset","offsetMultiplier","rotateY","rotateX","translateZ","Math","abs","indexOf","parseFloat","translateY","translateX","browser","isSafari","slideTransform","style","zIndex","round","shadowBeforeEl","querySelector","shadowAfterEl","opacity","setTransition","duration","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","perspective","overwriteParams","watchSlidesProgress"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-coverflow.mjs b/src/assets/js/vendor/swiper/modules/effect-coverflow.mjs new file mode 100644 index 0000000..bde25f4 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-coverflow.mjs @@ -0,0 +1,111 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { l as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); +} + +export { EffectCoverflow as default }; diff --git a/src/assets/js/vendor/swiper/modules/effect-coverflow.scss b/src/assets/js/vendor/swiper/modules/effect-coverflow.scss new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-coverflow.scss @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/src/assets/js/vendor/swiper/modules/effect-creative-element.css b/src/assets/js/vendor/swiper/modules/effect-creative-element.css new file mode 100644 index 0000000..6ccf22b --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-creative-element.css @@ -0,0 +1,6 @@ +.swiper-creative ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/src/assets/js/vendor/swiper/modules/effect-creative-element.min.css b/src/assets/js/vendor/swiper/modules/effect-creative-element.min.css new file mode 100644 index 0000000..70fb705 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-creative-element.min.css @@ -0,0 +1 @@ +.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-creative.css b/src/assets/js/vendor/swiper/modules/effect-creative.css new file mode 100644 index 0000000..2082494 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-creative.css @@ -0,0 +1,6 @@ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/src/assets/js/vendor/swiper/modules/effect-creative.less b/src/assets/js/vendor/swiper/modules/effect-creative.less new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-creative.less @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/src/assets/js/vendor/swiper/modules/effect-creative.min.css b/src/assets/js/vendor/swiper/modules/effect-creative.min.css new file mode 100644 index 0000000..404da2c --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-creative.min.css @@ -0,0 +1 @@ +.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-creative.min.mjs b/src/assets/js/vendor/swiper/modules/effect-creative.min.mjs new file mode 100644 index 0000000..0b1a3ff --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-creative.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{l as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCreative(e){let{swiper:t,extendParams:r,on:s}=e;r({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;effectInit({effect:"creative",swiper:t,on:s,setTranslate:()=>{const{slides:e,wrapperEl:r,slidesSizesGrid:s}=t,i=t.params.creativeEffect,{progressMultiplier:o}=i,l=t.params.centeredSlides;if(l){const e=s[0]/2-t.params.slidesOffsetBefore||0;r.style.transform=`translateX(calc(50% - ${e}px))`}for(let r=0;r0&&(g=i.prev,h=!0),p.forEach(((e,t)=>{p[t]=`calc(${e}px + (${a(g.translate[t])} * ${Math.abs(c*o)}))`})),d.forEach(((e,r)=>{let s=g.rotate[r]*Math.abs(c*o);t.browser&&t.browser.isSafari&&Math.abs(s)/90%2==1&&(s+=.001),d[r]=s})),s.style.zIndex=-Math.abs(Math.round(n))+e.length;const w=p.join(", "),y=`rotateX(${d[0]}deg) rotateY(${d[1]}deg) rotateZ(${d[2]}deg)`,M=f<0?`scale(${1+(1-g.scale)*f*o})`:`scale(${1-(1-g.scale)*f*o})`,u=f<0?1+(1-g.opacity)*f*o:1-(1-g.opacity)*f*o,v=`translate3d(${w}) ${y} ${M}`;if(h&&g.shadow||!h){let e=s.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=createShadow("creative",s)),e){const t=i.shadowPerProgress?c*(1/i.limitProgress):c;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=effectTarget(i,s);E.style.transform=v,E.style.opacity=u,g.origin&&(E.style.transformOrigin=g.origin)}},setTransition:e=>{const r=t.slides.map((e=>getSlideTransformEl(e)));r.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:r,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCreative as default}; +//# sourceMappingURL=effect-creative.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-creative.min.mjs.map b/src/assets/js/vendor/swiper/modules/effect-creative.min.mjs.map new file mode 100644 index 0000000..cdac947 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-creative.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-creative.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCreative","_ref","swiper","extendParams","on","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","perspective","prev","translate","rotate","opacity","scale","next","getTranslateValue","value","effect","setTranslate","slides","wrapperEl","slidesSizesGrid","params","multiplier","isCenteredSlides","centeredSlides","margin","slidesOffsetBefore","style","transform","i","length","slideEl","slideProgress","progress","Math","min","max","originalProgress","offset","swiperSlideOffset","t","cssMode","r","custom","isHorizontal","data","forEach","index","abs","val","browser","isSafari","zIndex","round","translateString","join","rotateString","scaleString","opacityString","shadow","shadowEl","querySelector","shadowOpacity","targetEl","origin","transformOrigin","setTransition","duration","transformElements","map","el","transitionDuration","querySelectorAll","allSlides","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-creative.mjs b/src/assets/js/vendor/swiper/modules/effect-creative.mjs new file mode 100644 index 0000000..1351a2b --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-creative.mjs @@ -0,0 +1,148 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { l as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + if (swiper.browser && swiper.browser.isSafari && Math.abs(val) / 90 % 2 === 1) { + val += 0.001; + } + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCreative as default }; diff --git a/src/assets/js/vendor/swiper/modules/effect-creative.scss b/src/assets/js/vendor/swiper/modules/effect-creative.scss new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-creative.scss @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/src/assets/js/vendor/swiper/modules/effect-cube-element.css b/src/assets/js/vendor/swiper/modules/effect-cube-element.css new file mode 100644 index 0000000..af13615 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cube-element.css @@ -0,0 +1,53 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-cube.swiper-rtl ::slotted(swiper-slide) { + transform-origin: 100% 0; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-next), +.swiper-cube ::slotted(.swiper-slide-prev) { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube ::slotted(.swiper-slide-next) + ::slotted(swiper-slide) { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start *//* Cube slide shadows end */ diff --git a/src/assets/js/vendor/swiper/modules/effect-cube-element.min.css b/src/assets/js/vendor/swiper/modules/effect-cube-element.min.css new file mode 100644 index 0000000..afc6ca2 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cube-element.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-cube.css b/src/assets/js/vendor/swiper/modules/effect-cube.css new file mode 100644 index 0000000..14b5d08 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cube.css @@ -0,0 +1,62 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ diff --git a/src/assets/js/vendor/swiper/modules/effect-cube.less b/src/assets/js/vendor/swiper/modules/effect-cube.less new file mode 100644 index 0000000..54bdc01 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cube.less @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/src/assets/js/vendor/swiper/modules/effect-cube.min.css b/src/assets/js/vendor/swiper/modules/effect-cube.min.css new file mode 100644 index 0000000..e91764c --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cube.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-cube.min.mjs b/src/assets/js/vendor/swiper/modules/effect-cube.min.mjs new file mode 100644 index 0000000..ce9efc1 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cube.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{c as createElement}from"../shared/utils.min.mjs";function EffectCube(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const r=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),r||(r=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(r)),a&&(a.style.opacity=Math.max(-t,0)),r&&(r.style.opacity=Math.max(t,0))};effectInit({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:o,height:i,rtlTranslate:l,size:d,browser:n}=t,p=t.params.cubeEffect,c=t.isHorizontal(),w=t.virtual&&t.params.virtual.enabled;let h,f=0;p.shadow&&(c?(h=t.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=createElement("div","swiper-cube-shadow"),t.wrapperEl.append(h)),h.style.height=`${o}px`):(h=e.querySelector(".swiper-cube-shadow"),h||(h=createElement("div","swiper-cube-shadow"),e.append(h))));for(let e=0;e-1&&(f=90*o+90*h,l&&(f=90*-o-90*h),t.browser&&t.browser.isSafari&&Math.abs(f)/90%2==1&&(f+=.001)),s.style.transform=y,p.slideShadows&&r(s,h,c)}if(s.style.transformOrigin=`50% 50% -${d/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${d/2}px`,p.shadow)if(c)h.style.transform=`translate3d(0px, ${o/2+p.shadowOffset}px, ${-o/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,r=p.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${i/2+r}px, ${-i/2/a}px) rotateX(-89.99deg)`}const m=(n.isSafari||n.isWebView)&&n.needPerspectiveFix?-d/2:0;s.style.transform=`translate3d(0px,0,${m}px) rotateX(${t.isHorizontal()?0:f}deg) rotateY(${t.isHorizontal()?-f:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${m}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);r(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}export{EffectCube as default}; +//# sourceMappingURL=effect-cube.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-cube.min.mjs.map b/src/assets/js/vendor/swiper/modules/effect-cube.min.mjs.map new file mode 100644 index 0000000..a62937d --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cube.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cube.mjs.mjs","names":["effectInit","createElement","EffectCube","_ref","swiper","extendParams","on","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","createSlideShadows","slideEl","progress","isHorizontal","shadowBefore","querySelector","shadowAfter","split","append","style","opacity","Math","max","effect","setTranslate","el","wrapperEl","slides","width","swiperWidth","height","swiperHeight","rtlTranslate","rtl","size","swiperSize","browser","params","isVirtual","virtual","enabled","cubeShadowEl","wrapperRotate","i","length","slideIndex","parseInt","getAttribute","slideAngle","round","floor","min","tx","ty","tz","transform","isSafari","abs","transformOrigin","shadowAngle","multiplier","sin","PI","cos","scale1","scale2","offset","zFactor","isWebView","needPerspectiveFix","setProperty","setTransition","duration","forEach","transitionDuration","querySelectorAll","subEl","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","resistanceRatio","spaceBetween","centeredSlides","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-cube.mjs b/src/assets/js/vendor/swiper/modules/effect-cube.mjs new file mode 100644 index 0000000..31589db --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cube.mjs @@ -0,0 +1,176 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { c as createElement } from '../shared/utils.mjs'; + +function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + if (swiper.browser && swiper.browser.isSafari && Math.abs(wrapperRotate) / 90 % 2 === 1) { + wrapperRotate += 0.001; + } + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); +} + +export { EffectCube as default }; diff --git a/src/assets/js/vendor/swiper/modules/effect-cube.scss b/src/assets/js/vendor/swiper/modules/effect-cube.scss new file mode 100644 index 0000000..54bdc01 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-cube.scss @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/src/assets/js/vendor/swiper/modules/effect-fade-element.css b/src/assets/js/vendor/swiper/modules/effect-fade-element.css new file mode 100644 index 0000000..76242c6 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-fade-element.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide) { + transition-timing-function: ease-out; +} +.swiper-fade ::slotted(swiper-slide) { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-fade ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} diff --git a/src/assets/js/vendor/swiper/modules/effect-fade-element.min.css b/src/assets/js/vendor/swiper/modules/effect-fade-element.min.css new file mode 100644 index 0000000..6fb7280 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-fade-element.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-fade.css b/src/assets/js/vendor/swiper/modules/effect-fade.css new file mode 100644 index 0000000..ac7449e --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-fade.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} diff --git a/src/assets/js/vendor/swiper/modules/effect-fade.less b/src/assets/js/vendor/swiper/modules/effect-fade.less new file mode 100644 index 0000000..0fadca4 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-fade.less @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + pointer-events: auto; + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/src/assets/js/vendor/swiper/modules/effect-fade.min.css b/src/assets/js/vendor/swiper/modules/effect-fade.min.css new file mode 100644 index 0000000..e535e7e --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-fade.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-fade.min.mjs b/src/assets/js/vendor/swiper/modules/effect-fade.min.mjs new file mode 100644 index 0000000..ca33c38 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-fade.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{l as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectFade(e){let{swiper:t,extendParams:s,on:a}=e;s({fadeEffect:{crossFade:!1}});effectInit({effect:"fade",swiper:t,on:a,setTranslate:()=>{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFade as default}; +//# sourceMappingURL=effect-fade.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-fade.min.mjs.map b/src/assets/js/vendor/swiper/modules/effect-fade.min.mjs.map new file mode 100644 index 0000000..91e91f1 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-fade.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-fade.mjs.mjs","names":["effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectFade","_ref","swiper","extendParams","on","fadeEffect","crossFade","effect","setTranslate","slides","params","i","length","slideEl","tx","swiperSlideOffset","virtualTranslate","translate","ty","isHorizontal","slideOpacity","Math","max","abs","progress","min","targetEl","style","opacity","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","allSlides","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","cssMode"],"sources":["0"],"mappings":"YAAcA,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,wBAA2B,0BAEzC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,WAAW,KAoCfV,WAAW,CACTW,OAAQ,OACRL,SACAE,KACAI,aArCmB,KACnB,MAAMC,OACJA,GACEP,EACEQ,EAASR,EAAOQ,OAAOL,WAC7B,IAAK,IAAIM,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,GAAK,EAAG,CACzC,MAAME,EAAUX,EAAOO,OAAOE,GAE9B,IAAIG,GADWD,EAAQE,kBAElBb,EAAOQ,OAAOM,mBAAkBF,GAAMZ,EAAOe,WAClD,IAAIC,EAAK,EACJhB,EAAOiB,iBACVD,EAAKJ,EACLA,EAAK,GAEP,MAAMM,EAAelB,EAAOQ,OAAOL,WAAWC,UAAYe,KAAKC,IAAI,EAAID,KAAKE,IAAIV,EAAQW,UAAW,GAAK,EAAIH,KAAKI,IAAIJ,KAAKC,IAAIT,EAAQW,UAAW,GAAI,GAC/IE,EAAW7B,aAAaa,EAAQG,GACtCa,EAASC,MAAMC,QAAUR,EACzBM,EAASC,MAAME,UAAY,eAAef,QAASI,WACrD,GAmBAY,cAjBoBC,IACpB,MAAMC,EAAoB9B,EAAOO,OAAOwB,KAAIpB,GAAWd,oBAAoBc,KAC3EmB,EAAkBE,SAAQC,IACxBA,EAAGR,MAAMS,mBAAqB,GAAGL,KAAY,IAE/CjC,2BAA2B,CACzBI,SACA6B,WACAC,oBACAK,WAAW,GACX,EAQFC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACd1B,kBAAmBd,EAAOQ,OAAOiC,WAGvC,QAES3C"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-fade.mjs b/src/assets/js/vendor/swiper/modules/effect-fade.mjs new file mode 100644 index 0000000..cc796c0 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-fade.mjs @@ -0,0 +1,66 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { l as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFade as default }; diff --git a/src/assets/js/vendor/swiper/modules/effect-fade.scss b/src/assets/js/vendor/swiper/modules/effect-fade.scss new file mode 100644 index 0000000..bb059dd --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-fade.scss @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/src/assets/js/vendor/swiper/modules/effect-flip-element.css b/src/assets/js/vendor/swiper/modules/effect-flip-element.css new file mode 100644 index 0000000..4ae8338 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-flip-element.css @@ -0,0 +1,17 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-flip ::slotted(.swiper-slide-active), +.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +/* Flip slide shadows start *//* Flip slide shadows end */ diff --git a/src/assets/js/vendor/swiper/modules/effect-flip-element.min.css b/src/assets/js/vendor/swiper/modules/effect-flip-element.min.css new file mode 100644 index 0000000..40d852b --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-flip-element.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-flip.css b/src/assets/js/vendor/swiper/modules/effect-flip.css new file mode 100644 index 0000000..f4b1d34 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-flip.css @@ -0,0 +1,26 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ diff --git a/src/assets/js/vendor/swiper/modules/effect-flip.less b/src/assets/js/vendor/swiper/modules/effect-flip.less new file mode 100644 index 0000000..6c16d11 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-flip.less @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/src/assets/js/vendor/swiper/modules/effect-flip.min.css b/src/assets/js/vendor/swiper/modules/effect-flip.min.css new file mode 100644 index 0000000..b7656ff --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-flip.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-flip.min.mjs b/src/assets/js/vendor/swiper/modules/effect-flip.min.mjs new file mode 100644 index 0000000..70536c6 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-flip.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{l as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectFlip(e){let{swiper:t,extendParams:s,on:r}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(e,s)=>{let r=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");r||(r=createShadow("flip",e,t.isHorizontal()?"left":"top")),a||(a=createShadow("flip",e,t.isHorizontal()?"right":"bottom")),r&&(r.style.opacity=Math.max(-s,0)),a&&(a.style.opacity=Math.max(s,0))};effectInit({effect:"flip",swiper:t,on:r,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,r=t.params.flipEffect;for(let i=0;i{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),a(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFlip as default}; +//# sourceMappingURL=effect-flip.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-flip.min.mjs.map b/src/assets/js/vendor/swiper/modules/effect-flip.min.mjs.map new file mode 100644 index 0000000..9987ca6 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-flip.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-flip.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectFlip","_ref","swiper","extendParams","on","flipEffect","slideShadows","limitRotation","createSlideShadows","slideEl","progress","shadowBefore","isHorizontal","querySelector","shadowAfter","style","opacity","Math","max","effect","setTranslate","slides","rtlTranslate","rtl","params","i","length","min","offset","swiperSlideOffset","rotateY","rotateX","tx","cssMode","translate","ty","browser","isSafari","abs","zIndex","round","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","virtualTranslate"],"sources":["0"],"mappings":"YAAcA,iBAAoB,8CACpBC,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,wBAA2B,0BAEzC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,cAAc,EACdC,eAAe,KAGnB,MAAMC,EAAqB,CAACC,EAASC,KACnC,IAAIC,EAAeT,EAAOU,eAAiBH,EAAQI,cAAc,6BAA+BJ,EAAQI,cAAc,4BAClHC,EAAcZ,EAAOU,eAAiBH,EAAQI,cAAc,8BAAgCJ,EAAQI,cAAc,+BACjHF,IACHA,EAAehB,aAAa,OAAQc,EAASP,EAAOU,eAAiB,OAAS,QAE3EE,IACHA,EAAcnB,aAAa,OAAQc,EAASP,EAAOU,eAAiB,QAAU,WAE5ED,IAAcA,EAAaI,MAAMC,QAAUC,KAAKC,KAAKR,EAAU,IAC/DI,IAAaA,EAAYC,MAAMC,QAAUC,KAAKC,IAAIR,EAAU,GAAE,EAsEpEd,WAAW,CACTuB,OAAQ,OACRjB,SACAE,KACAgB,aA7DmB,KACnB,MAAMC,OACJA,EACAC,aAAcC,GACZrB,EACEsB,EAAStB,EAAOsB,OAAOnB,WAC7B,IAAK,IAAIoB,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,GAAK,EAAG,CACzC,MAAMhB,EAAUY,EAAOI,GACvB,IAAIf,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKU,IAAIlB,EAAQC,SAAU,IAAK,IAEtD,MAAMkB,EAASnB,EAAQoB,kBAEvB,IAAIC,GADY,IAAMpB,EAElBqB,EAAU,EACVC,EAAK9B,EAAOsB,OAAOS,SAAWL,EAAS1B,EAAOgC,WAAaN,EAC3DO,EAAK,EACJjC,EAAOU,eAKDW,IACTO,GAAWA,IALXK,EAAKH,EACLA,EAAK,EACLD,GAAWD,EACXA,EAAU,GAIR5B,EAAOkC,SAAWlC,EAAOkC,QAAQC,WAC/BpB,KAAKqB,IAAIR,GAAW,GAAK,GAAM,IACjCA,GAAW,MAETb,KAAKqB,IAAIP,GAAW,GAAK,GAAM,IACjCA,GAAW,OAGftB,EAAQM,MAAMwB,QAAUtB,KAAKqB,IAAIrB,KAAKuB,MAAM9B,IAAaW,EAAOK,OAC5DF,EAAOlB,cACTE,EAAmBC,EAASC,GAE9B,MAAM+B,EAAY,eAAeT,QAASG,qBAAsBJ,iBAAuBD,QACtEjC,aAAa2B,EAAQf,GAC7BM,MAAM0B,UAAYA,CAC7B,GAqBAC,cAnBoBC,IACpB,MAAMC,EAAoB1C,EAAOmB,OAAOwB,KAAIpC,GAAWV,oBAAoBU,KAC3EmC,EAAkBE,SAAQC,IACxBA,EAAGhC,MAAMiC,mBAAqB,GAAGL,MACjCI,EAAGE,iBAAiB,gHAAgHH,SAAQI,IAC1IA,EAASnC,MAAMiC,mBAAqB,GAAGL,KAAY,GACnD,IAEJ7C,2BAA2B,CACzBI,SACAyC,WACAC,qBACA,EAQFO,gBA1EsB,KAEtBjD,EAAOsB,OAAOnB,WACdH,EAAOmB,OAAOyB,SAAQrC,IACpB,IAAIC,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKU,IAAIlB,EAAQC,SAAU,IAAK,IAEtDF,EAAmBC,EAASC,EAAS,GACrC,EAkEF0C,gBAAiB,IAAMlD,EAAOsB,OAAOnB,WACrCgD,YAAa,KAAM,EACnBC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACdC,kBAAmBzD,EAAOsB,OAAOS,WAGvC,QAESjC"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/effect-flip.mjs b/src/assets/js/vendor/swiper/modules/effect-flip.mjs new file mode 100644 index 0000000..adf174a --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-flip.mjs @@ -0,0 +1,118 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { l as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFlip as default }; diff --git a/src/assets/js/vendor/swiper/modules/effect-flip.scss b/src/assets/js/vendor/swiper/modules/effect-flip.scss new file mode 100644 index 0000000..6c16d11 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/effect-flip.scss @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/src/assets/js/vendor/swiper/modules/free-mode-element.css b/src/assets/js/vendor/swiper/modules/free-mode-element.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/free-mode-element.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/src/assets/js/vendor/swiper/modules/free-mode-element.min.css b/src/assets/js/vendor/swiper/modules/free-mode-element.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/free-mode-element.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/free-mode.css b/src/assets/js/vendor/swiper/modules/free-mode.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/free-mode.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/src/assets/js/vendor/swiper/modules/free-mode.less b/src/assets/js/vendor/swiper/modules/free-mode.less new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/free-mode.less @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/src/assets/js/vendor/swiper/modules/free-mode.min.css b/src/assets/js/vendor/swiper/modules/free-mode.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/free-mode.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/free-mode.min.mjs b/src/assets/js/vendor/swiper/modules/free-mode.min.mjs new file mode 100644 index 0000000..e6a4df1 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/free-mode.min.mjs @@ -0,0 +1,2 @@ +import{d as now,j as elementTransitionEnd}from"../shared/utils.min.mjs";function freeMode(e){let{swiper:t,extendParams:o,emit:n,once:s}=e;o({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:o}=t;0===e.velocities.length&&e.velocities.push({position:o[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:o[t.isHorizontal()?"currentX":"currentY"],time:now()})},onTouchEnd:function(e){let{currentPos:o}=e;if(t.params.cssMode)return;const{params:i,wrapperEl:a,rtlTranslate:r,snapGrid:l,touchEventsData:m}=t,c=now()-m.touchStartTime;if(o<-t.minTranslate())t.slideTo(t.activeIndex);else if(o>-t.maxTranslate())t.slides.length1){const e=m.velocities.pop(),o=m.velocities.pop(),n=e.position-o.position,s=e.time-o.time;t.velocity=n/s,t.velocity/=2,Math.abs(t.velocity)150||now()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=i.freeMode.momentumVelocityRatio,m.velocities.length=0;let e=1e3*i.freeMode.momentumRatio;const o=t.velocity*e;let c=t.translate+o;r&&(c=-c);let d,u=!1;const f=20*Math.abs(t.velocity)*i.freeMode.momentumBounceRatio;let p;if(ct.minTranslate())i.freeMode.momentumBounce?(c-t.minTranslate()>f&&(c=t.minTranslate()+f),d=t.minTranslate(),u=!0,m.allowMomentumBounce=!0):c=t.minTranslate(),i.loop&&i.centeredSlides&&(p=!0);else if(i.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(l[e]-c){t.loopFix()})),0!==t.velocity){if(e=r?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),i.freeMode.sticky){const o=Math.abs((r?-c:c)-t.translate),n=t.slidesSizesGrid[t.activeIndex];e=o{t&&!t.destroyed&&m.allowMomentumBounce&&(n("momentumBounce"),t.setTransition(i.speed),setTimeout((()=>{t.setTranslate(d),elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(n("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(i.freeMode.sticky)return void t.slideToClosest();i.freeMode&&n("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||c>=i.longSwipesMs)&&(n("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})}export{freeMode as default}; +//# sourceMappingURL=free-mode.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/free-mode.min.mjs.map b/src/assets/js/vendor/swiper/modules/free-mode.min.mjs.map new file mode 100644 index 0000000..97162ea --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/free-mode.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"free-mode.mjs.mjs","names":["now","elementTransitionEnd","freeMode","_ref","swiper","extendParams","emit","once","enabled","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","Object","assign","onTouchStart","params","cssMode","translate","getTranslate","setTranslate","setTransition","touchEventsData","velocities","length","onTouchEnd","currentPos","rtl","onTouchMove","data","touches","push","position","isHorizontal","time","touchStartTime","_ref2","wrapperEl","rtlTranslate","snapGrid","timeDiff","minTranslate","slideTo","activeIndex","maxTranslate","slides","lastMoveEvent","pop","velocityEvent","distance","velocity","Math","abs","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","allowMomentumBounce","loop","centeredSlides","nextSlide","j","swipeDirection","loopFix","moveDistance","currentSlideSize","slidesSizesGrid","speed","slideToClosest","updateProgress","transitionStart","animating","destroyed","setTimeout","transitionEnd","updateActiveIndex","updateSlidesClasses","longSwipesMs"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/free-mode.mjs b/src/assets/js/vendor/swiper/modules/free-mode.mjs new file mode 100644 index 0000000..b04d7ac --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/free-mode.mjs @@ -0,0 +1,237 @@ +import { d as now, j as elementTransitionEnd } from '../shared/utils.mjs'; + +function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); +} + +export { freeMode as default }; diff --git a/src/assets/js/vendor/swiper/modules/free-mode.scss b/src/assets/js/vendor/swiper/modules/free-mode.scss new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/free-mode.scss @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/src/assets/js/vendor/swiper/modules/grid-element.css b/src/assets/js/vendor/swiper/modules/grid-element.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/grid-element.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/src/assets/js/vendor/swiper/modules/grid-element.min.css b/src/assets/js/vendor/swiper/modules/grid-element.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/grid-element.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/grid.css b/src/assets/js/vendor/swiper/modules/grid.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/grid.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/src/assets/js/vendor/swiper/modules/grid.less b/src/assets/js/vendor/swiper/modules/grid.less new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/grid.less @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/src/assets/js/vendor/swiper/modules/grid.min.css b/src/assets/js/vendor/swiper/modules/grid.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/grid.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/grid.min.mjs b/src/assets/js/vendor/swiper/modules/grid.min.mjs new file mode 100644 index 0000000..84f1b4e --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/grid.min.mjs @@ -0,0 +1,2 @@ +function Grid(e){let i,r,a,t,{swiper:s,extendParams:l,on:o}=e;l({grid:{rows:1,fill:"column"}});const n=()=>{let e=s.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*s.size:"string"==typeof e&&(e=parseFloat(e)),e};o("init",(()=>{t=s.params.grid&&s.params.grid.rows>1})),o("update",(()=>{const{params:e,el:i}=s,r=e.grid&&e.grid.rows>1;t&&!r?(i.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,s.emitContainerClasses()):!t&&r&&(i.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&i.classList.add(`${e.containerModifierClass}grid-column`),s.emitContainerClasses()),t=r})),s.grid={initSlides:e=>{const{slidesPerView:t}=s.params,{rows:l,fill:o}=s.params.grid,n=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:e.length;a=Math.floor(n/l),i=Math.floor(n/l)===n/l?n:Math.ceil(n/l)*l,"auto"!==t&&"row"===o&&(i=Math.max(i,t*l)),r=i/l},unsetSlides:()=>{s.slides&&s.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[s.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,t,l)=>{const{slidesPerGroup:o}=s.params,d=n(),{rows:p,fill:c}=s.params.grid,g=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:l.length;let u,h,m;if("row"===c&&o>1){const r=Math.floor(e/(o*p)),a=e-p*o*r,s=0===r?o:Math.min(Math.ceil((g-r*p*o)/p),o);m=Math.floor(a/s),h=a-m*s+r*o,u=h+m*i/p,t.style.order=u}else"column"===c?(h=Math.floor(e/p),m=e-h*p,(h>a||h===a&&m===p-1)&&(m+=1,m>=p&&(m=0,h+=1))):(m=Math.floor(e/r),h=e-m*r);t.row=m,t.column=h,t.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,t.style[s.getDirectionLabel("margin-top")]=0!==m?d&&`${d}px`:"",t.swiperSlideGridSet=!0},updateWrapperSize:(e,r)=>{const{centeredSlides:a,roundLengths:t}=s.params,l=n(),{rows:o}=s.params.grid;if(s.virtualSize=(e+l)*i,s.virtualSize=Math.ceil(s.virtualSize/o)-l,s.params.cssMode||(s.wrapperEl.style[s.getDirectionLabel("width")]=`${s.virtualSize+l}px`),a){const e=[];for(let i=0;i { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; +} + +export { Grid as default }; diff --git a/src/assets/js/vendor/swiper/modules/grid.scss b/src/assets/js/vendor/swiper/modules/grid.scss new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/grid.scss @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/src/assets/js/vendor/swiper/modules/hash-navigation-element.css b/src/assets/js/vendor/swiper/modules/hash-navigation-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/hash-navigation-element.css diff --git a/src/assets/js/vendor/swiper/modules/hash-navigation-element.min.css b/src/assets/js/vendor/swiper/modules/hash-navigation-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/hash-navigation-element.min.css diff --git a/src/assets/js/vendor/swiper/modules/hash-navigation.css b/src/assets/js/vendor/swiper/modules/hash-navigation.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/hash-navigation.css diff --git a/src/assets/js/vendor/swiper/modules/hash-navigation.less b/src/assets/js/vendor/swiper/modules/hash-navigation.less new file mode 100644 index 0000000..be8912a --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/hash-navigation.less @@ -0,0 +1,2 @@ +@import url('../swiper-vars.less'); + diff --git a/src/assets/js/vendor/swiper/modules/hash-navigation.min.css b/src/assets/js/vendor/swiper/modules/hash-navigation.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/hash-navigation.min.css diff --git a/src/assets/js/vendor/swiper/modules/hash-navigation.min.mjs b/src/assets/js/vendor/swiper/modules/hash-navigation.min.mjs new file mode 100644 index 0000000..0c58eff --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/hash-navigation.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren}from"../shared/utils.min.mjs";function HashNavigation(a){let{swiper:e,extendParams:t,emit:s,on:i}=a,n=!1;const r=getDocument(),h=getWindow();t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(a,t){if(e.virtual&&e.params.virtual.enabled){const a=e.slides.filter((a=>a.getAttribute("data-hash")===t))[0];if(!a)return 0;return parseInt(a.getAttribute("data-swiper-slide-index"),10)}return e.getSlideIndex(elementChildren(e.slidesEl,`.${e.params.slideClass}[data-hash="${t}"], swiper-slide[data-hash="${t}"]`)[0])}}});const d=()=>{s("hashChange");const a=r.location.hash.replace("#",""),t=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex];if(a!==(t?t.getAttribute("data-hash"):"")){const t=e.params.hashNavigation.getSlideIndex(e,a);if(void 0===t||Number.isNaN(t))return;e.slideTo(t)}},l=()=>{if(!n||!e.params.hashNavigation.enabled)return;const a=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],t=a?a.getAttribute("data-hash")||a.getAttribute("data-history"):"";e.params.hashNavigation.replaceState&&h.history&&h.history.replaceState?(h.history.replaceState(null,null,`#${t}`||""),s("hashSet")):(r.location.hash=t||"",s("hashSet"))};i("init",(()=>{e.params.hashNavigation.enabled&&(()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;n=!0;const a=r.location.hash.replace("#","");if(a){const t=0,s=e.params.hashNavigation.getSlideIndex(e,a);e.slideTo(s||0,t,e.params.runCallbacksOnInit,!0)}e.params.hashNavigation.watchState&&h.addEventListener("hashchange",d)})()})),i("destroy",(()=>{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&h.removeEventListener("hashchange",d)})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{n&&l()})),i("slideChange",(()=>{n&&e.params.cssMode&&l()}))}export{HashNavigation as default}; +//# sourceMappingURL=hash-navigation.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/hash-navigation.min.mjs.map b/src/assets/js/vendor/swiper/modules/hash-navigation.min.mjs.map new file mode 100644 index 0000000..373df60 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/hash-navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"hash-navigation.mjs.mjs","names":["getDocument","getWindow","elementChildren","HashNavigation","_ref","swiper","extendParams","emit","on","initialized","document","window","hashNavigation","enabled","replaceState","watchState","getSlideIndex","_s","hash","virtual","params","slideWithHash","slides","filter","slideEl","getAttribute","parseInt","slidesEl","slideClass","onHashChange","newHash","location","replace","activeSlideEl","querySelector","activeIndex","newIndex","Number","isNaN","slideTo","setHash","activeSlideHash","history","speed","index","runCallbacksOnInit","addEventListener","init","removeEventListener","cssMode"],"sources":["0"],"mappings":"YAAcA,iBAAkBC,cAAiB,+CACnCC,oBAAuB,0BAErC,SAASC,eAAeC,GACtB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,KACZA,EAAIC,GACJA,GACEJ,EACAK,GAAc,EAClB,MAAMC,EAAWV,cACXW,EAASV,YACfK,EAAa,CACXM,eAAgB,CACdC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZ,aAAAC,CAAcC,EAAIC,GAChB,GAAIb,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAS,CACnD,MAAMQ,EAAgBhB,EAAOiB,OAAOC,QAAOC,GAAWA,EAAQC,aAAa,eAAiBP,IAAM,GAClG,IAAKG,EAAe,OAAO,EAE3B,OADcK,SAASL,EAAcI,aAAa,2BAA4B,GAEhF,CACA,OAAOpB,EAAOW,cAAcd,gBAAgBG,EAAOsB,SAAU,IAAItB,EAAOe,OAAOQ,yBAAyBV,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMW,EAAe,KACnBtB,EAAK,cACL,MAAMuB,EAAUpB,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IAC9CC,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAElL,GAAIL,KADoBG,EAAgBA,EAAcR,aAAa,aAAe,IACjD,CAC/B,MAAMW,EAAW/B,EAAOe,OAAOR,eAAeI,cAAcX,EAAQyB,GACpE,QAAwB,IAAbM,GAA4BC,OAAOC,MAAMF,GAAW,OAC/D/B,EAAOkC,QAAQH,EACjB,GAEII,EAAU,KACd,IAAK/B,IAAgBJ,EAAOe,OAAOR,eAAeC,QAAS,OAC3D,MAAMoB,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAC5KM,EAAkBR,EAAgBA,EAAcR,aAAa,cAAgBQ,EAAcR,aAAa,gBAAkB,GAC5HpB,EAAOe,OAAOR,eAAeE,cAAgBH,EAAO+B,SAAW/B,EAAO+B,QAAQ5B,cAChFH,EAAO+B,QAAQ5B,aAAa,KAAM,KAAM,IAAI2B,KAAqB,IACjElC,EAAK,aAELG,EAASqB,SAASb,KAAOuB,GAAmB,GAC5ClC,EAAK,WACP,EAoBFC,EAAG,QAAQ,KACLH,EAAOe,OAAOR,eAAeC,SAnBtB,MACX,IAAKR,EAAOe,OAAOR,eAAeC,SAAWR,EAAOe,OAAOsB,SAAWrC,EAAOe,OAAOsB,QAAQ7B,QAAS,OACrGJ,GAAc,EACd,MAAMS,EAAOR,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IACjD,GAAId,EAAM,CACR,MAAMyB,EAAQ,EACRC,EAAQvC,EAAOe,OAAOR,eAAeI,cAAcX,EAAQa,GACjEb,EAAOkC,QAAQK,GAAS,EAAGD,EAAOtC,EAAOe,OAAOyB,oBAAoB,EACtE,CACIxC,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOmC,iBAAiB,aAAcjB,EACxC,EASEkB,EACF,IAEFvC,EAAG,WAAW,KACRH,EAAOe,OAAOR,eAAeC,SAV7BR,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOqC,oBAAoB,aAAcnB,EAW3C,IAEFrB,EAAG,4CAA4C,KACzCC,GACF+B,GACF,IAEFhC,EAAG,eAAe,KACZC,GAAeJ,EAAOe,OAAO6B,SAC/BT,GACF,GAEJ,QAESrC"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/hash-navigation.mjs b/src/assets/js/vendor/swiper/modules/hash-navigation.mjs new file mode 100644 index 0000000..cf33420 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/hash-navigation.mjs @@ -0,0 +1,93 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren } from '../shared/utils.mjs'; + +function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); +} + +export { HashNavigation as default }; diff --git a/src/assets/js/vendor/swiper/modules/hash-navigation.scss b/src/assets/js/vendor/swiper/modules/hash-navigation.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/hash-navigation.scss diff --git a/src/assets/js/vendor/swiper/modules/history-element.css b/src/assets/js/vendor/swiper/modules/history-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/history-element.css diff --git a/src/assets/js/vendor/swiper/modules/history-element.min.css b/src/assets/js/vendor/swiper/modules/history-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/history-element.min.css diff --git a/src/assets/js/vendor/swiper/modules/history.css b/src/assets/js/vendor/swiper/modules/history.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/history.css diff --git a/src/assets/js/vendor/swiper/modules/history.less b/src/assets/js/vendor/swiper/modules/history.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/history.less diff --git a/src/assets/js/vendor/swiper/modules/history.min.css b/src/assets/js/vendor/swiper/modules/history.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/history.min.css diff --git a/src/assets/js/vendor/swiper/modules/history.min.mjs b/src/assets/js/vendor/swiper/modules/history.min.mjs new file mode 100644 index 0000000..3e525fb --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/history.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";function History(e){let{swiper:t,extendParams:a,on:s}=e;a({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let r=!1,i={};const o=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),l=e=>{const t=getWindow();let a;a=e?new URL(e):t.location;const s=a.pathname.slice(1).split("/").filter((e=>""!==e)),r=s.length;return{key:s[r-2],value:s[r-1]}},n=(e,a)=>{const s=getWindow();if(!r||!t.params.history.enabled)return;let i;i=t.params.url?new URL(t.params.url):s.location;const l=t.slides[a];let n=o(l.getAttribute("data-history"));if(t.params.history.root.length>0){let a=t.params.history.root;"/"===a[a.length-1]&&(a=a.slice(0,a.length-1)),n=`${a}/${e?`${e}/`:""}${n}`}else i.pathname.includes(e)||(n=`${e?`${e}/`:""}${n}`);t.params.history.keepQuery&&(n+=i.search);const p=s.history.state;p&&p.value===n||(t.params.history.replaceState?s.history.replaceState({value:n},null,n):s.history.pushState({value:n},null,n))},p=(e,a,s)=>{if(a)for(let r=0,i=t.slides.length;r{i=l(t.params.url),p(t.params.speed,i.value,!1)};s("init",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);r=!0,i=l(t.params.url),i.key||i.value?(p(0,i.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",d)):t.params.history.replaceState||e.addEventListener("popstate",d)}})()})),s("destroy",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();t.params.history.replaceState||e.removeEventListener("popstate",d)})()})),s("transitionEnd _freeModeNoMomentumRelease",(()=>{r&&n(t.params.history.key,t.activeIndex)})),s("slideChange",(()=>{r&&t.params.cssMode&&n(t.params.history.key,t.activeIndex)}))}export{History as default}; +//# sourceMappingURL=history.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/history.min.mjs.map b/src/assets/js/vendor/swiper/modules/history.min.mjs.map new file mode 100644 index 0000000..6c5a493 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/history.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"history.mjs.mjs","names":["getWindow","History","_ref","swiper","extendParams","on","history","enabled","root","replaceState","key","keepQuery","initialized","paths","slugify","text","toString","replace","getPathValues","urlOverride","window","location","URL","pathArray","pathname","slice","split","filter","part","total","length","value","setHistory","index","params","url","slide","slides","getAttribute","includes","search","currentState","state","pushState","scrollToSlide","speed","runCallbacks","i","getSlideIndex","slideTo","setHistoryPopState","hashNavigation","runCallbacksOnInit","addEventListener","init","removeEventListener","destroy","activeIndex","cssMode"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/history.mjs b/src/assets/js/vendor/swiper/modules/history.mjs new file mode 100644 index 0000000..2228d63 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/history.mjs @@ -0,0 +1,142 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; + +function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); +} + +export { History as default }; diff --git a/src/assets/js/vendor/swiper/modules/history.scss b/src/assets/js/vendor/swiper/modules/history.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/history.scss diff --git a/src/assets/js/vendor/swiper/modules/index.min.mjs b/src/assets/js/vendor/swiper/modules/index.min.mjs new file mode 100644 index 0000000..41b89c3 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/index.min.mjs @@ -0,0 +1,2 @@ +export{default as Virtual}from"./virtual.min.mjs";export{default as Keyboard}from"./keyboard.min.mjs";export{default as Mousewheel}from"./mousewheel.min.mjs";export{default as Navigation}from"./navigation.min.mjs";export{default as Pagination}from"./pagination.min.mjs";export{default as Scrollbar}from"./scrollbar.min.mjs";export{default as Parallax}from"./parallax.min.mjs";export{default as Zoom}from"./zoom.min.mjs";export{default as Controller}from"./controller.min.mjs";export{default as A11y}from"./a11y.min.mjs";export{default as History}from"./history.min.mjs";export{default as HashNavigation}from"./hash-navigation.min.mjs";export{default as Autoplay}from"./autoplay.min.mjs";export{default as Thumbs}from"./thumbs.min.mjs";export{default as FreeMode}from"./free-mode.min.mjs";export{default as Grid}from"./grid.min.mjs";export{default as Manipulation}from"./manipulation.min.mjs";export{default as EffectFade}from"./effect-fade.min.mjs";export{default as EffectCube}from"./effect-cube.min.mjs";export{default as EffectFlip}from"./effect-flip.min.mjs";export{default as EffectCoverflow}from"./effect-coverflow.min.mjs";export{default as EffectCreative}from"./effect-creative.min.mjs";export{default as EffectCards}from"./effect-cards.min.mjs"; +//# sourceMappingURL=index.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/index.min.mjs.map b/src/assets/js/vendor/swiper/modules/index.min.mjs.map new file mode 100644 index 0000000..1492964 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/index.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs.mjs","names":[],"sources":["0"],"mappings":"OAAQ,uBAAyB,2BACzB,wBAA0B,4BAC1B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,yBAA2B,6BAC3B,wBAA0B,4BAC1B,oBAAsB,wBACtB,0BAA4B,8BAC5B,oBAAsB,wBACtB,uBAAyB,2BACzB,8BAAgC,mCAChC,wBAA0B,4BAC1B,sBAAwB,0BACxB,wBAA0B,6BAC1B,oBAAsB,wBACtB,4BAA8B,gCAC9B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,+BAAiC,oCACjC,8BAAgC,mCAChC,2BAA6B"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/index.mjs b/src/assets/js/vendor/swiper/modules/index.mjs new file mode 100644 index 0000000..3186045 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/index.mjs @@ -0,0 +1,23 @@ +export {default as Virtual} from './virtual.mjs'; +export {default as Keyboard} from './keyboard.mjs'; +export {default as Mousewheel} from './mousewheel.mjs'; +export {default as Navigation} from './navigation.mjs'; +export {default as Pagination} from './pagination.mjs'; +export {default as Scrollbar} from './scrollbar.mjs'; +export {default as Parallax} from './parallax.mjs'; +export {default as Zoom} from './zoom.mjs'; +export {default as Controller} from './controller.mjs'; +export {default as A11y} from './a11y.mjs'; +export {default as History} from './history.mjs'; +export {default as HashNavigation} from './hash-navigation.mjs'; +export {default as Autoplay} from './autoplay.mjs'; +export {default as Thumbs} from './thumbs.mjs'; +export {default as FreeMode} from './free-mode.mjs'; +export {default as Grid} from './grid.mjs'; +export {default as Manipulation} from './manipulation.mjs'; +export {default as EffectFade} from './effect-fade.mjs'; +export {default as EffectCube} from './effect-cube.mjs'; +export {default as EffectFlip} from './effect-flip.mjs'; +export {default as EffectCoverflow} from './effect-coverflow.mjs'; +export {default as EffectCreative} from './effect-creative.mjs'; +export {default as EffectCards} from './effect-cards.mjs'; \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/keyboard-element.css b/src/assets/js/vendor/swiper/modules/keyboard-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/keyboard-element.css diff --git a/src/assets/js/vendor/swiper/modules/keyboard-element.min.css b/src/assets/js/vendor/swiper/modules/keyboard-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/keyboard-element.min.css diff --git a/src/assets/js/vendor/swiper/modules/keyboard.css b/src/assets/js/vendor/swiper/modules/keyboard.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/keyboard.css diff --git a/src/assets/js/vendor/swiper/modules/keyboard.less b/src/assets/js/vendor/swiper/modules/keyboard.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/keyboard.less diff --git a/src/assets/js/vendor/swiper/modules/keyboard.min.css b/src/assets/js/vendor/swiper/modules/keyboard.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/keyboard.min.css diff --git a/src/assets/js/vendor/swiper/modules/keyboard.min.mjs b/src/assets/js/vendor/swiper/modules/keyboard.min.mjs new file mode 100644 index 0000000..f1d9d2d --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/keyboard.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{a as elementParents,b as elementOffset}from"../shared/utils.min.mjs";function Keyboard(e){let{swiper:t,extendParams:n,on:a,emit:r}=e;const l=getDocument(),i=getWindow();function o(e){if(!t.enabled)return;const{rtlTranslate:n}=t;let a=e;a.originalEvent&&(a=a.originalEvent);const o=a.keyCode||a.charCode,s=t.params.keyboard.pageUpDown,d=s&&33===o,f=s&&34===o,m=37===o,b=39===o,c=38===o,p=40===o;if(!t.allowSlideNext&&(t.isHorizontal()&&b||t.isVertical()&&p||f))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&m||t.isVertical()&&c||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||l.activeElement&&l.activeElement.nodeName&&("input"===l.activeElement.nodeName.toLowerCase()||"textarea"===l.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(d||f||m||b||c||p)){let e=!1;if(elementParents(t.el,`.${t.params.slideClass}, swiper-slide`).length>0&&0===elementParents(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,r=a.clientWidth,l=a.clientHeight,o=i.innerWidth,s=i.innerHeight,d=elementOffset(a);n&&(d.left-=a.scrollLeft);const f=[[d.left,d.top],[d.left+r,d.top],[d.left,d.top+l],[d.left+r,d.top+l]];for(let t=0;t=0&&n[0]<=o&&n[1]>=0&&n[1]<=s){if(0===n[0]&&0===n[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||f||m||b)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((f||b)&&!n||(d||m)&&n)&&t.slideNext(),((d||m)&&!n||(f||b)&&n)&&t.slidePrev()):((d||f||c||p)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(f||p)&&t.slideNext(),(d||c)&&t.slidePrev()),r("keyPress",o)}}function s(){t.keyboard.enabled||(l.addEventListener("keydown",o),t.keyboard.enabled=!0)}function d(){t.keyboard.enabled&&(l.removeEventListener("keydown",o),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},n({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&s()})),a("destroy",(()=>{t.keyboard.enabled&&d()})),Object.assign(t.keyboard,{enable:s,disable:d})}export{Keyboard as default}; +//# sourceMappingURL=keyboard.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/keyboard.min.mjs.map b/src/assets/js/vendor/swiper/modules/keyboard.min.mjs.map new file mode 100644 index 0000000..04ab4eb --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/keyboard.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"keyboard.mjs.mjs","names":["getDocument","getWindow","elementParents","elementOffset","Keyboard","_ref","swiper","extendParams","on","emit","document","window","handle","event","enabled","rtlTranslate","rtl","e","originalEvent","kc","keyCode","charCode","pageUpDown","params","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","shiftKey","altKey","ctrlKey","metaKey","activeElement","nodeName","toLowerCase","onlyInViewport","inView","el","slideClass","length","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","left","scrollLeft","swiperCoord","top","i","point","preventDefault","returnValue","slideNext","slidePrev","enable","addEventListener","disable","removeEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/keyboard.mjs b/src/assets/js/vendor/swiper/modules/keyboard.mjs new file mode 100644 index 0000000..ba62a46 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/keyboard.mjs @@ -0,0 +1,117 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { a as elementParents, b as elementOffset } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); +} + +export { Keyboard as default }; diff --git a/src/assets/js/vendor/swiper/modules/keyboard.scss b/src/assets/js/vendor/swiper/modules/keyboard.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/keyboard.scss diff --git a/src/assets/js/vendor/swiper/modules/manipulation-element.css b/src/assets/js/vendor/swiper/modules/manipulation-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/manipulation-element.css diff --git a/src/assets/js/vendor/swiper/modules/manipulation-element.min.css b/src/assets/js/vendor/swiper/modules/manipulation-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/manipulation-element.min.css diff --git a/src/assets/js/vendor/swiper/modules/manipulation.css b/src/assets/js/vendor/swiper/modules/manipulation.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/manipulation.css diff --git a/src/assets/js/vendor/swiper/modules/manipulation.less b/src/assets/js/vendor/swiper/modules/manipulation.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/manipulation.less diff --git a/src/assets/js/vendor/swiper/modules/manipulation.min.css b/src/assets/js/vendor/swiper/modules/manipulation.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/manipulation.min.css diff --git a/src/assets/js/vendor/swiper/modules/manipulation.min.mjs b/src/assets/js/vendor/swiper/modules/manipulation.min.mjs new file mode 100644 index 0000000..1b7832f --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/manipulation.min.mjs @@ -0,0 +1,2 @@ +function appendSlide(e){const l=this,{params:o,slidesEl:i}=l;o.loop&&l.loopDestroy();const t=e=>{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,i.append(l.children[0]),l.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let l=0;l{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,t.prepend(l.children[0]),l.innerHTML=""}else t.prepend(e)};if("object"==typeof e&&"length"in e){for(let l=0;l=s)return void o.appendSlide(l);let p=d>e?d+1:d;const r=[];for(let l=s-1;l>=e;l-=1){const e=o.slides[l];e.remove(),r.unshift(e)}if("object"==typeof l&&"length"in l){for(let e=0;ee?d+l.length:d}else n.append(l);for(let e=0;e { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } +} + +function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} + +function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); +} + +export { Manipulation as default }; diff --git a/src/assets/js/vendor/swiper/modules/manipulation.scss b/src/assets/js/vendor/swiper/modules/manipulation.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/manipulation.scss diff --git a/src/assets/js/vendor/swiper/modules/mousewheel-element.css b/src/assets/js/vendor/swiper/modules/mousewheel-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/mousewheel-element.css diff --git a/src/assets/js/vendor/swiper/modules/mousewheel-element.min.css b/src/assets/js/vendor/swiper/modules/mousewheel-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/mousewheel-element.min.css diff --git a/src/assets/js/vendor/swiper/modules/mousewheel.css b/src/assets/js/vendor/swiper/modules/mousewheel.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/mousewheel.css diff --git a/src/assets/js/vendor/swiper/modules/mousewheel.less b/src/assets/js/vendor/swiper/modules/mousewheel.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/mousewheel.less diff --git a/src/assets/js/vendor/swiper/modules/mousewheel.min.css b/src/assets/js/vendor/swiper/modules/mousewheel.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/mousewheel.min.css diff --git a/src/assets/js/vendor/swiper/modules/mousewheel.min.mjs b/src/assets/js/vendor/swiper/modules/mousewheel.min.mjs new file mode 100644 index 0000000..312e9b6 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/mousewheel.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{n as nextTick,d as now}from"../shared/utils.min.mjs";function Mousewheel(e){let{swiper:t,extendParams:a,on:s,emit:n}=e;const l=getWindow();let i;a({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let r,o=now();const d=[];function m(){t.enabled&&(t.mouseEntered=!0)}function p(){t.enabled&&(t.mouseEntered=!1)}function u(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&now()-o<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),n("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),n("scroll",e.raw)),o=(new l.Date).getTime(),!1)))}function h(e){let a=e,s=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const l=t.params.mousewheel;t.params.cssMode&&a.preventDefault();let o=t.el;"container"!==t.params.mousewheel.eventsTarget&&(o=document.querySelector(t.params.mousewheel.eventsTarget));const m=o&&o.contains(a.target);if(!t.mouseEntered&&!m&&!l.releaseOnEdges)return!0;a.originalEvent&&(a=a.originalEvent);let p=0;const h=t.rtlTranslate?-1:1,c=function(e){let t=0,a=0,s=0,n=0;return"detail"in e&&(a=e.detail),"wheelDelta"in e&&(a=-e.wheelDelta/120),"wheelDeltaY"in e&&(a=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=a,a=0),s=10*t,n=10*a,"deltaY"in e&&(n=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=n,n=0),(s||n)&&e.deltaMode&&(1===e.deltaMode?(s*=40,n*=40):(s*=800,n*=800)),s&&!t&&(t=s<1?-1:1),n&&!a&&(a=n<1?-1:1),{spinX:t,spinY:a,pixelX:s,pixelY:n}}(a);if(l.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(c.pixelX)>Math.abs(c.pixelY)))return!0;p=-c.pixelX*h}else{if(!(Math.abs(c.pixelY)>Math.abs(c.pixelX)))return!0;p=-c.pixelY}else p=Math.abs(c.pixelX)>Math.abs(c.pixelY)?-c.pixelX*h:-c.pixelY;if(0===p)return!0;l.invert&&(p=-p);let w=t.getTranslate()+p*l.sensitivity;if(w>=t.minTranslate()&&(w=t.minTranslate()),w<=t.maxTranslate()&&(w=t.maxTranslate()),s=!!t.params.loop||!(w===t.minTranslate()||w===t.maxTranslate()),s&&t.params.nested&&a.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:now(),delta:Math.abs(p),direction:Math.sign(p)},s=r&&e.time=t.minTranslate()&&(o=t.minTranslate()),o<=t.maxTranslate()&&(o=t.maxTranslate()),t.setTransition(0),t.setTranslate(o),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!m&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(i),i=void 0,d.length>=15&&d.shift();const a=d.length?d[d.length-1]:void 0,s=d[0];if(d.push(e),a&&(e.delta>a.delta||e.direction!==a.direction))d.splice(0);else if(d.length>=15&&e.time-s.time<500&&s.delta-e.delta>=1&&e.delta<=6){const a=p>0?.8:.2;r=e,d.splice(0),i=nextTick((()=>{t.slideToClosest(t.params.speed,!0,void 0,a)}),0)}i||(i=nextTick((()=>{r=e,d.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(s||n("scroll",a),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),l.releaseOnEdges&&(o===t.minTranslate()||o===t.maxTranslate()))return!0}}else{const a={time:now(),delta:Math.abs(p),direction:Math.sign(p),raw:e};d.length>=2&&d.shift();const s=d.length?d[d.length-1]:void 0;if(d.push(a),s?(a.direction!==s.direction||a.delta>s.delta||a.time>s.time+150)&&u(a):u(a),function(e){const a=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&a.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&a.releaseOnEdges)return!0;return!1}(a))return!0}return a.preventDefault?a.preventDefault():a.returnValue=!1,!1}function c(e){let a=t.el;"container"!==t.params.mousewheel.eventsTarget&&(a=document.querySelector(t.params.mousewheel.eventsTarget)),a[e]("mouseenter",m),a[e]("mouseleave",p),a[e]("wheel",h)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",h),!0):!t.mousewheel.enabled&&(c("addEventListener"),t.mousewheel.enabled=!0,!0)}function f(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,h),!0):!!t.mousewheel.enabled&&(c("removeEventListener"),t.mousewheel.enabled=!1,!0)}s("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&f(),t.params.mousewheel.enabled&&w()})),s("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&f()})),Object.assign(t.mousewheel,{enable:w,disable:f})}export{Mousewheel as default}; +//# sourceMappingURL=mousewheel.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/mousewheel.min.mjs.map b/src/assets/js/vendor/swiper/modules/mousewheel.min.mjs.map new file mode 100644 index 0000000..678fdba --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/mousewheel.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"mousewheel.mjs.mjs","names":["getWindow","nextTick","now","Mousewheel","_ref","swiper","extendParams","on","emit","window","timeout","mousewheel","enabled","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","params","delta","direction","isEnd","loop","animating","slideNext","raw","isBeginning","slidePrev","Date","getTime","handle","event","e","disableParentSwiper","target","closest","cssMode","preventDefault","targetEl","el","document","querySelector","targetElContainsTarget","contains","originalEvent","rtlFactor","rtlTranslate","data","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","normalize","isHorizontal","Math","abs","positions","getTranslate","minTranslate","maxTranslate","nested","stopPropagation","freeMode","time","sign","ignoreWheelEvents","undefined","position","wasBeginning","wasEnd","setTransition","setTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","loopFix","byMousewheel","sticky","clearTimeout","length","shift","prevEvent","firstEvent","push","splice","snapToThreshold","slideToClosest","speed","autoplay","autoplayDisableOnInteraction","stop","releaseScroll","returnValue","events","method","enable","wrapperEl","removeEventListener","disable","addEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/mousewheel.mjs b/src/assets/js/vendor/swiper/modules/mousewheel.mjs new file mode 100644 index 0000000..28c4d2e --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/mousewheel.mjs @@ -0,0 +1,393 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { n as nextTick, d as now } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); +} + +export { Mousewheel as default }; diff --git a/src/assets/js/vendor/swiper/modules/mousewheel.scss b/src/assets/js/vendor/swiper/modules/mousewheel.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/mousewheel.scss diff --git a/src/assets/js/vendor/swiper/modules/navigation-element.css b/src/assets/js/vendor/swiper/modules/navigation-element.css new file mode 100644 index 0000000..46a2918 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/navigation-element.css @@ -0,0 +1,63 @@ +:host { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start *//* Navigation font end */ diff --git a/src/assets/js/vendor/swiper/modules/navigation-element.min.css b/src/assets/js/vendor/swiper/modules/navigation-element.min.css new file mode 100644 index 0000000..70d1870 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/navigation-element.min.css @@ -0,0 +1 @@ +:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/navigation.css b/src/assets/js/vendor/swiper/modules/navigation.css new file mode 100644 index 0000000..a287b8a --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/navigation.css @@ -0,0 +1,86 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ diff --git a/src/assets/js/vendor/swiper/modules/navigation.less b/src/assets/js/vendor/swiper/modules/navigation.less new file mode 100644 index 0000000..5243fe6 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/navigation.less @@ -0,0 +1,86 @@ +@import url('../swiper-vars.less'); + +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +/* Navigation font end */ diff --git a/src/assets/js/vendor/swiper/modules/navigation.min.css b/src/assets/js/vendor/swiper/modules/navigation.min.css new file mode 100644 index 0000000..d93c5d8 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/navigation.min.css @@ -0,0 +1 @@ +:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/navigation.min.mjs b/src/assets/js/vendor/swiper/modules/navigation.min.mjs new file mode 100644 index 0000000..24226bd --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/navigation.min.mjs @@ -0,0 +1,2 @@ +import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";function Navigation(a){let{swiper:n,extendParams:e,on:i,emit:t}=a;e({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),n.navigation={nextEl:null,prevEl:null};const s=a=>(Array.isArray(a)?a:[a]).filter((a=>!!a));function l(a){let e;return a&&"string"==typeof a&&n.isElement&&(e=n.el.querySelector(a),e)?e:(a&&("string"==typeof a&&(e=[...document.querySelectorAll(a)]),n.params.uniqueNavElements&&"string"==typeof a&&e.length>1&&1===n.el.querySelectorAll(a).length&&(e=n.el.querySelector(a))),a&&!e?a:e)}function o(a,e){const i=n.params.navigation;(a=s(a)).forEach((a=>{a&&(a.classList[e?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===a.tagName&&(a.disabled=e),n.params.watchOverflow&&n.enabled&&a.classList[n.isLocked?"add":"remove"](i.lockClass))}))}function r(){const{nextEl:a,prevEl:e}=n.navigation;if(n.params.loop)return o(e,!1),void o(a,!1);o(e,n.isBeginning&&!n.params.rewind),o(a,n.isEnd&&!n.params.rewind)}function d(a){a.preventDefault(),(!n.isBeginning||n.params.loop||n.params.rewind)&&(n.slidePrev(),t("navigationPrev"))}function c(a){a.preventDefault(),(!n.isEnd||n.params.loop||n.params.rewind)&&(n.slideNext(),t("navigationNext"))}function p(){const a=n.params.navigation;if(n.params.navigation=createElementIfNotDefined(n,n.originalParams.navigation,n.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!a.nextEl&&!a.prevEl)return;let e=l(a.nextEl),i=l(a.prevEl);Object.assign(n.navigation,{nextEl:e,prevEl:i}),e=s(e),i=s(i);const t=(e,i)=>{e&&e.addEventListener("click","next"===i?c:d),!n.enabled&&e&&e.classList.add(...a.lockClass.split(" "))};e.forEach((a=>t(a,"next"))),i.forEach((a=>t(a,"prev")))}function v(){let{nextEl:a,prevEl:e}=n.navigation;a=s(a),e=s(e);const i=(a,e)=>{a.removeEventListener("click","next"===e?c:d),a.classList.remove(...n.params.navigation.disabledClass.split(" "))};a.forEach((a=>i(a,"next"))),e.forEach((a=>i(a,"prev")))}i("init",(()=>{!1===n.params.navigation.enabled?g():(p(),r())})),i("toEdge fromEdge lock unlock",(()=>{r()})),i("destroy",(()=>{v()})),i("enable disable",(()=>{let{nextEl:a,prevEl:e}=n.navigation;a=s(a),e=s(e),n.enabled?r():[...a,...e].filter((a=>!!a)).forEach((a=>a.classList.add(n.params.navigation.lockClass)))})),i("click",((a,e)=>{let{nextEl:i,prevEl:l}=n.navigation;i=s(i),l=s(l);const o=e.target;if(n.params.navigation.hideOnClick&&!l.includes(o)&&!i.includes(o)){if(n.pagination&&n.params.pagination&&n.params.pagination.clickable&&(n.pagination.el===o||n.pagination.el.contains(o)))return;let a;i.length?a=i[0].classList.contains(n.params.navigation.hiddenClass):l.length&&(a=l[0].classList.contains(n.params.navigation.hiddenClass)),t(!0===a?"navigationShow":"navigationHide"),[...i,...l].filter((a=>!!a)).forEach((a=>a.classList.toggle(n.params.navigation.hiddenClass)))}}));const g=()=>{n.el.classList.add(...n.params.navigation.navigationDisabledClass.split(" ")),v()};Object.assign(n.navigation,{enable:()=>{n.el.classList.remove(...n.params.navigation.navigationDisabledClass.split(" ")),p(),r()},disable:g,update:r,init:p,destroy:v})}export{Navigation as default}; +//# sourceMappingURL=navigation.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/navigation.min.mjs.map b/src/assets/js/vendor/swiper/modules/navigation.min.mjs.map new file mode 100644 index 0000000..5a0e37f --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"navigation.mjs.mjs","names":["createElementIfNotDefined","Navigation","_ref","swiper","extendParams","on","emit","navigation","nextEl","prevEl","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","el","Array","isArray","filter","e","getEl","res","isElement","querySelector","document","querySelectorAll","params","uniqueNavElements","length","toggleEl","disabled","forEach","subEl","classList","split","tagName","watchOverflow","enabled","isLocked","update","loop","isBeginning","rewind","isEnd","onPrevClick","preventDefault","slidePrev","onNextClick","slideNext","init","originalParams","Object","assign","initButton","dir","addEventListener","add","destroy","destroyButton","removeEventListener","remove","disable","_s","targetEl","target","includes","pagination","clickable","contains","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/navigation.mjs b/src/assets/js/vendor/swiper/modules/navigation.mjs new file mode 100644 index 0000000..07eb863 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/navigation.mjs @@ -0,0 +1,191 @@ +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; + +function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); +} + +export { Navigation as default }; diff --git a/src/assets/js/vendor/swiper/modules/navigation.scss b/src/assets/js/vendor/swiper/modules/navigation.scss new file mode 100644 index 0000000..8fb729d --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/navigation.scss @@ -0,0 +1,87 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ + } +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +/* Navigation font end */ diff --git a/src/assets/js/vendor/swiper/modules/pagination-element.css b/src/assets/js/vendor/swiper/modules/pagination-element.css new file mode 100644 index 0000000..cae824f --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/pagination-element.css @@ -0,0 +1,184 @@ +:host { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/src/assets/js/vendor/swiper/modules/pagination-element.min.css b/src/assets/js/vendor/swiper/modules/pagination-element.min.css new file mode 100644 index 0000000..398a345 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/pagination-element.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/pagination.css b/src/assets/js/vendor/swiper/modules/pagination.css new file mode 100644 index 0000000..20bda39 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/pagination.css @@ -0,0 +1,184 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/src/assets/js/vendor/swiper/modules/pagination.less b/src/assets/js/vendor/swiper/modules/pagination.less new file mode 100644 index 0000000..202e40c --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/pagination.less @@ -0,0 +1,187 @@ +@import url('../swiper-vars.less'); + +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/src/assets/js/vendor/swiper/modules/pagination.min.css b/src/assets/js/vendor/swiper/modules/pagination.min.css new file mode 100644 index 0000000..398a345 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/pagination.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/pagination.min.mjs b/src/assets/js/vendor/swiper/modules/pagination.min.mjs new file mode 100644 index 0000000..d0c1ac1 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/pagination.min.mjs @@ -0,0 +1,2 @@ +import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{f as elementOuterSize,g as elementIndex,a as elementParents}from"../shared/utils.min.mjs";function Pagination(a){let{swiper:e,extendParams:s,on:l,emit:t}=a;const i="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:a=>a,formatFractionTotal:a=>a,bulletClass:`${i}-bullet`,bulletActiveClass:`${i}-bullet-active`,modifierClass:`${i}-`,currentClass:`${i}-current`,totalClass:`${i}-total`,hiddenClass:`${i}-hidden`,progressbarFillClass:`${i}-progressbar-fill`,progressbarOppositeClass:`${i}-progressbar-opposite`,clickableClass:`${i}-clickable`,lockClass:`${i}-lock`,horizontalClass:`${i}-horizontal`,verticalClass:`${i}-vertical`,paginationDisabledClass:`${i}-disabled`}}),e.pagination={el:null,bullets:[]};let r=0;const o=a=>(Array.isArray(a)?a:[a]).filter((a=>!!a));function p(){return!e.params.pagination.el||!e.pagination.el||Array.isArray(e.pagination.el)&&0===e.pagination.el.length}function c(a,s){const{bulletActiveClass:l}=e.params.pagination;a&&(a=a[("prev"===s?"previous":"next")+"ElementSibling"])&&(a.classList.add(`${l}-${s}`),(a=a[("prev"===s?"previous":"next")+"ElementSibling"])&&a.classList.add(`${l}-${s}-${s}`))}function d(a){const s=a.target.closest(classesToSelector(e.params.pagination.bulletClass));if(!s)return;a.preventDefault();const l=elementIndex(s)*e.params.slidesPerGroup;if(e.params.loop){if(e.realIndex===l)return;e.slideToLoop(l)}else e.slideTo(l)}function u(){const a=e.rtl,s=e.params.pagination;if(p())return;let l,i,d=e.pagination.el;d=o(d);const u=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,m=e.params.loop?Math.ceil(u/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(i=e.previousRealIndex||0,l=e.params.slidesPerGroup>1?Math.floor(e.realIndex/e.params.slidesPerGroup):e.realIndex):void 0!==e.snapIndex?(l=e.snapIndex,i=e.previousSnapIndex):(i=e.previousIndex||0,l=e.activeIndex||0),"bullets"===s.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const t=e.pagination.bullets;let o,p,u;if(s.dynamicBullets&&(n=elementOuterSize(t[0],e.isHorizontal()?"width":"height",!0),d.forEach((a=>{a.style[e.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==i&&(r+=l-(i||0),r>s.dynamicMainBullets-1?r=s.dynamicMainBullets-1:r<0&&(r=0)),o=Math.max(l-r,0),p=o+(Math.min(t.length,s.dynamicMainBullets)-1),u=(p+o)/2),t.forEach((a=>{const e=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((a=>`${s.bulletActiveClass}${a}`))].map((a=>"string"==typeof a&&a.includes(" ")?a.split(" "):a)).flat();a.classList.remove(...e)})),d.length>1)t.forEach((a=>{const t=elementIndex(a);t===l?a.classList.add(...s.bulletActiveClass.split(" ")):e.isElement&&a.setAttribute("part","bullet"),s.dynamicBullets&&(t>=o&&t<=p&&a.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),t===o&&c(a,"prev"),t===p&&c(a,"next"))}));else{const a=t[l];if(a&&a.classList.add(...s.bulletActiveClass.split(" ")),e.isElement&&t.forEach(((a,e)=>{a.setAttribute("part",e===l?"bullet-active":"bullet")})),s.dynamicBullets){const a=t[o],e=t[p];for(let a=o;a<=p;a+=1)t[a]&&t[a].classList.add(...`${s.bulletActiveClass}-main`.split(" "));c(a,"prev"),c(e,"next")}}if(s.dynamicBullets){const l=Math.min(t.length,s.dynamicMainBullets+4),i=(n*l-n)/2-u*n,r=a?"right":"left";t.forEach((a=>{a.style[e.isHorizontal()?r:"top"]=`${i}px`}))}}d.forEach(((a,i)=>{if("fraction"===s.type&&(a.querySelectorAll(classesToSelector(s.currentClass)).forEach((a=>{a.textContent=s.formatFractionCurrent(l+1)})),a.querySelectorAll(classesToSelector(s.totalClass)).forEach((a=>{a.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let t;t=s.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const i=(l+1)/m;let n=1,r=1;"horizontal"===t?n=i:r=i,a.querySelectorAll(classesToSelector(s.progressbarFillClass)).forEach((a=>{a.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${r})`,a.style.transitionDuration=`${e.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(a.innerHTML=s.renderCustom(e,l+1,m),0===i&&t("paginationRender",a)):(0===i&&t("paginationRender",a),t("paginationUpdate",a)),e.params.watchOverflow&&e.enabled&&a.classList[e.isLocked?"add":"remove"](s.lockClass)}))}function m(){const a=e.params.pagination;if(p())return;const s=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.grid&&e.params.grid.rows>1?e.slides.length/Math.ceil(e.params.grid.rows):e.slides.length;let l=e.pagination.el;l=o(l);let i="";if("bullets"===a.type){let l=e.params.loop?Math.ceil(s/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&l>s&&(l=s);for(let s=0;s`}"fraction"===a.type&&(i=a.renderFraction?a.renderFraction.call(e,a.currentClass,a.totalClass):` / `),"progressbar"===a.type&&(i=a.renderProgressbar?a.renderProgressbar.call(e,a.progressbarFillClass):``),e.pagination.bullets=[],l.forEach((s=>{"custom"!==a.type&&(s.innerHTML=i||""),"bullets"===a.type&&e.pagination.bullets.push(...s.querySelectorAll(classesToSelector(a.bulletClass)))})),"custom"!==a.type&&t("paginationRender",l[0])}function g(){e.params.pagination=createElementIfNotDefined(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const a=e.params.pagination;if(!a.el)return;let s;"string"==typeof a.el&&e.isElement&&(s=e.el.querySelector(a.el)),s||"string"!=typeof a.el||(s=[...document.querySelectorAll(a.el)]),s||(s=a.el),s&&0!==s.length&&(e.params.uniqueNavElements&&"string"==typeof a.el&&Array.isArray(s)&&s.length>1&&(s=[...e.el.querySelectorAll(a.el)],s.length>1&&(s=s.filter((a=>elementParents(a,".swiper")[0]===e.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(e.pagination,{el:s}),s=o(s),s.forEach((s=>{"bullets"===a.type&&a.clickable&&s.classList.add(...(a.clickableClass||"").split(" ")),s.classList.add(a.modifierClass+a.type),s.classList.add(e.isHorizontal()?a.horizontalClass:a.verticalClass),"bullets"===a.type&&a.dynamicBullets&&(s.classList.add(`${a.modifierClass}${a.type}-dynamic`),r=0,a.dynamicMainBullets<1&&(a.dynamicMainBullets=1)),"progressbar"===a.type&&a.progressbarOpposite&&s.classList.add(a.progressbarOppositeClass),a.clickable&&s.addEventListener("click",d),e.enabled||s.classList.add(a.lockClass)})))}function b(){const a=e.params.pagination;if(p())return;let s=e.pagination.el;s&&(s=o(s),s.forEach((s=>{s.classList.remove(a.hiddenClass),s.classList.remove(a.modifierClass+a.type),s.classList.remove(e.isHorizontal()?a.horizontalClass:a.verticalClass),a.clickable&&(s.classList.remove(...(a.clickableClass||"").split(" ")),s.removeEventListener("click",d))}))),e.pagination.bullets&&e.pagination.bullets.forEach((e=>e.classList.remove(...a.bulletActiveClass.split(" "))))}l("changeDirection",(()=>{if(!e.pagination||!e.pagination.el)return;const a=e.params.pagination;let{el:s}=e.pagination;s=o(s),s.forEach((s=>{s.classList.remove(a.horizontalClass,a.verticalClass),s.classList.add(e.isHorizontal()?a.horizontalClass:a.verticalClass)}))})),l("init",(()=>{!1===e.params.pagination.enabled?f():(g(),m(),u())})),l("activeIndexChange",(()=>{void 0===e.snapIndex&&u()})),l("snapIndexChange",(()=>{u()})),l("snapGridLengthChange",(()=>{m(),u()})),l("destroy",(()=>{b()})),l("enable disable",(()=>{let{el:a}=e.pagination;a&&(a=o(a),a.forEach((a=>a.classList[e.enabled?"remove":"add"](e.params.pagination.lockClass))))})),l("lock unlock",(()=>{u()})),l("click",((a,s)=>{const l=s.target,i=o(e.pagination.el);if(e.params.pagination.el&&e.params.pagination.hideOnClick&&i&&i.length>0&&!l.classList.contains(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&l===e.navigation.nextEl||e.navigation.prevEl&&l===e.navigation.prevEl))return;const a=i[0].classList.contains(e.params.pagination.hiddenClass);t(!0===a?"paginationShow":"paginationHide"),i.forEach((a=>a.classList.toggle(e.params.pagination.hiddenClass)))}}));const f=()=>{e.el.classList.add(e.params.pagination.paginationDisabledClass);let{el:a}=e.pagination;a&&(a=o(a),a.forEach((a=>a.classList.add(e.params.pagination.paginationDisabledClass)))),b()};Object.assign(e.pagination,{enable:()=>{e.el.classList.remove(e.params.pagination.paginationDisabledClass);let{el:a}=e.pagination;a&&(a=o(a),a.forEach((a=>a.classList.remove(e.params.pagination.paginationDisabledClass)))),g(),m(),u()},disable:f,render:m,update:u,init:g,destroy:b})}export{Pagination as default}; +//# sourceMappingURL=pagination.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/pagination.min.mjs.map b/src/assets/js/vendor/swiper/modules/pagination.min.mjs.map new file mode 100644 index 0000000..121feda --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/pagination.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"pagination.mjs.mjs","names":["classesToSelector","createElementIfNotDefined","elementOuterSize","elementIndex","elementParents","Pagination","_ref","swiper","extendParams","on","emit","pfx","bulletSize","pagination","el","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","type","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","makeElementsArray","Array","isArray","filter","e","isPaginationDisabled","params","length","setSideBullets","bulletEl","position","classList","add","onBulletClick","target","closest","preventDefault","index","slidesPerGroup","loop","realIndex","slideToLoop","slideTo","update","rtl","current","previousIndex","slidesLength","virtual","enabled","slides","total","Math","ceil","snapGrid","previousRealIndex","floor","snapIndex","previousSnapIndex","activeIndex","firstIndex","lastIndex","midIndex","isHorizontal","forEach","subEl","style","undefined","max","min","classesToRemove","map","suffix","s","includes","split","flat","remove","bullet","bulletIndex","isElement","setAttribute","firstDisplayedBullet","lastDisplayedBullet","i","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","querySelectorAll","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","innerHTML","watchOverflow","isLocked","render","grid","rows","paginationHTML","numberOfBullets","freeMode","call","push","init","originalParams","querySelector","document","uniqueNavElements","Object","assign","addEventListener","destroy","removeEventListener","disable","_s","targetEl","contains","navigation","nextEl","prevEl","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/pagination.mjs b/src/assets/js/vendor/swiper/modules/pagination.mjs new file mode 100644 index 0000000..6d91ae0 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/pagination.mjs @@ -0,0 +1,444 @@ +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs'; + +function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); +} + +export { Pagination as default }; diff --git a/src/assets/js/vendor/swiper/modules/pagination.scss b/src/assets/js/vendor/swiper/modules/pagination.scss new file mode 100644 index 0000000..5595484 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/pagination.scss @@ -0,0 +1,188 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ + } +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + @at-root button#{&} { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/src/assets/js/vendor/swiper/modules/parallax-element.css b/src/assets/js/vendor/swiper/modules/parallax-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/parallax-element.css diff --git a/src/assets/js/vendor/swiper/modules/parallax-element.min.css b/src/assets/js/vendor/swiper/modules/parallax-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/parallax-element.min.css diff --git a/src/assets/js/vendor/swiper/modules/parallax.css b/src/assets/js/vendor/swiper/modules/parallax.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/parallax.css diff --git a/src/assets/js/vendor/swiper/modules/parallax.less b/src/assets/js/vendor/swiper/modules/parallax.less new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/parallax.less diff --git a/src/assets/js/vendor/swiper/modules/parallax.min.css b/src/assets/js/vendor/swiper/modules/parallax.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/parallax.min.css diff --git a/src/assets/js/vendor/swiper/modules/parallax.min.mjs b/src/assets/js/vendor/swiper/modules/parallax.min.mjs new file mode 100644 index 0000000..b70fbd0 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/parallax.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren}from"../shared/utils.min.mjs";function Parallax(a){let{swiper:e,extendParams:t,on:l}=a;t({parallax:{enabled:!1}});const r="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",s=(a,t)=>{const{rtl:l}=e,r=l?-1:1,s=a.getAttribute("data-swiper-parallax")||"0";let i=a.getAttribute("data-swiper-parallax-x"),p=a.getAttribute("data-swiper-parallax-y");const n=a.getAttribute("data-swiper-parallax-scale"),o=a.getAttribute("data-swiper-parallax-opacity"),d=a.getAttribute("data-swiper-parallax-rotate");if(i||p?(i=i||"0",p=p||"0"):e.isHorizontal()?(i=s,p="0"):(p=s,i="0"),i=i.indexOf("%")>=0?parseInt(i,10)*t*r+"%":i*t*r+"px",p=p.indexOf("%")>=0?parseInt(p,10)*t+"%":p*t+"px",null!=o){const e=o-(o-1)*(1-Math.abs(t));a.style.opacity=e}let x=`translate3d(${i}, ${p}, 0px)`;if(null!=n){x+=` scale(${n-(n-1)*(1-Math.abs(t))})`}if(d&&null!=d){x+=` rotate(${d*t*-1}deg)`}a.style.transform=x},i=()=>{const{el:a,slides:t,progress:l,snapGrid:i,isElement:p}=e,n=elementChildren(a,r);e.isElement&&n.push(...elementChildren(e.hostEl,r)),n.forEach((a=>{s(a,l)})),t.forEach(((a,t)=>{let p=a.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(p+=Math.ceil(t/2)-l*(i.length-1)),p=Math.min(Math.max(p,-1),1),a.querySelectorAll(`${r}, [data-swiper-parallax-rotate]`).forEach((a=>{s(a,p)}))}))};l("beforeInit",(()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)})),l("init",(()=>{e.params.parallax.enabled&&i()})),l("setTranslate",(()=>{e.params.parallax.enabled&&i()})),l("setTransition",((a,t)=>{e.params.parallax.enabled&&function(a){void 0===a&&(a=e.params.speed);const{el:t,hostEl:l}=e,s=[...t.querySelectorAll(r)];e.isElement&&s.push(...l.querySelectorAll(r)),s.forEach((e=>{let t=parseInt(e.getAttribute("data-swiper-parallax-duration"),10)||a;0===a&&(t=0),e.style.transitionDuration=`${t}ms`}))}(t)}))}export{Parallax as default}; +//# sourceMappingURL=parallax.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/parallax.min.mjs.map b/src/assets/js/vendor/swiper/modules/parallax.min.mjs.map new file mode 100644 index 0000000..395322a --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/parallax.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"parallax.mjs.mjs","names":["elementChildren","Parallax","_ref","swiper","extendParams","on","parallax","enabled","elementsSelector","setTransform","el","progress","rtl","rtlFactor","p","getAttribute","x","y","scale","opacity","rotate","isHorizontal","indexOf","parseInt","currentOpacity","Math","abs","style","transform","setTranslate","slides","snapGrid","isElement","elements","push","hostEl","forEach","subEl","slideEl","slideIndex","slideProgress","params","slidesPerGroup","slidesPerView","ceil","length","min","max","querySelectorAll","watchSlidesProgress","originalParams","_swiper","duration","speed","parallaxEl","parallaxDuration","transitionDuration","setTransition"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/parallax.mjs b/src/assets/js/vendor/swiper/modules/parallax.mjs new file mode 100644 index 0000000..1f467de --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/parallax.mjs @@ -0,0 +1,124 @@ +import { e as elementChildren } from '../shared/utils.mjs'; + +function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); +} + +export { Parallax as default }; diff --git a/src/assets/js/vendor/swiper/modules/parallax.scss b/src/assets/js/vendor/swiper/modules/parallax.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/parallax.scss diff --git a/src/assets/js/vendor/swiper/modules/scrollbar-element.css b/src/assets/js/vendor/swiper/modules/scrollbar-element.css new file mode 100644 index 0000000..b6b755e --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/scrollbar-element.css @@ -0,0 +1,58 @@ +:host { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/src/assets/js/vendor/swiper/modules/scrollbar-element.min.css b/src/assets/js/vendor/swiper/modules/scrollbar-element.min.css new file mode 100644 index 0000000..dc9860f --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/scrollbar-element.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/scrollbar.css b/src/assets/js/vendor/swiper/modules/scrollbar.css new file mode 100644 index 0000000..678451c --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/scrollbar.css @@ -0,0 +1,58 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/src/assets/js/vendor/swiper/modules/scrollbar.less b/src/assets/js/vendor/swiper/modules/scrollbar.less new file mode 100644 index 0000000..4920d9b --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/scrollbar.less @@ -0,0 +1,59 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/src/assets/js/vendor/swiper/modules/scrollbar.min.css b/src/assets/js/vendor/swiper/modules/scrollbar.min.css new file mode 100644 index 0000000..dc9860f --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/scrollbar.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/scrollbar.min.mjs b/src/assets/js/vendor/swiper/modules/scrollbar.min.mjs new file mode 100644 index 0000000..7118794 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/scrollbar.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{h as classesToTokens,c as createElement,n as nextTick,b as elementOffset}from"../shared/utils.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";function Scrollbar(s){let{swiper:l,extendParams:e,on:r,emit:a}=s;const t=getDocument();let o,n,i,c,p=!1,m=null,d=null;function b(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s,rtlTranslate:e}=l,{dragEl:r,el:a}=s,t=l.params.scrollbar,o=l.params.loop?l.progressLoop:l.progress;let c=n,p=(i-n)*o;e?(p=-p,p>0?(c=n-p,p=0):-p+n>i&&(c=i+p)):p<0?(c=n+p,p=0):p+n>i&&(c=i-p),l.isHorizontal()?(r.style.transform=`translate3d(${p}px, 0, 0)`,r.style.width=`${c}px`):(r.style.transform=`translate3d(0px, ${p}px, 0)`,r.style.height=`${c}px`),t.hide&&(clearTimeout(m),a.style.opacity=1,m=setTimeout((()=>{a.style.opacity=0,a.style.transitionDuration="400ms"}),1e3))}function u(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s}=l,{dragEl:e,el:r}=s;e.style.width="",e.style.height="",i=l.isHorizontal()?r.offsetWidth:r.offsetHeight,c=l.size/(l.virtualSize+l.params.slidesOffsetBefore-(l.params.centeredSlides?l.snapGrid[0]:0)),n="auto"===l.params.scrollbar.dragSize?i*c:parseInt(l.params.scrollbar.dragSize,10),l.isHorizontal()?e.style.width=`${n}px`:e.style.height=`${n}px`,r.style.display=c>=1?"none":"",l.params.scrollbar.hide&&(r.style.opacity=0),l.params.watchOverflow&&l.enabled&&s.el.classList[l.isLocked?"add":"remove"](l.params.scrollbar.lockClass)}function f(s){return l.isHorizontal()?s.clientX:s.clientY}function g(s){const{scrollbar:e,rtlTranslate:r}=l,{el:a}=e;let t;t=(f(s)-elementOffset(a)[l.isHorizontal()?"left":"top"]-(null!==o?o:n/2))/(i-n),t=Math.max(Math.min(t,1),0),r&&(t=1-t);const c=l.minTranslate()+(l.maxTranslate()-l.minTranslate())*t;l.updateProgress(c),l.setTranslate(c),l.updateActiveIndex(),l.updateSlidesClasses()}function y(s){const e=l.params.scrollbar,{scrollbar:r,wrapperEl:t}=l,{el:n,dragEl:i}=r;p=!0,o=s.target===i?f(s)-s.target.getBoundingClientRect()[l.isHorizontal()?"left":"top"]:null,s.preventDefault(),s.stopPropagation(),t.style.transitionDuration="100ms",i.style.transitionDuration="100ms",g(s),clearTimeout(d),n.style.transitionDuration="0ms",e.hide&&(n.style.opacity=1),l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="none"),a("scrollbarDragStart",s)}function T(s){const{scrollbar:e,wrapperEl:r}=l,{el:t,dragEl:o}=e;p&&(s.preventDefault?s.preventDefault():s.returnValue=!1,g(s),r.style.transitionDuration="0ms",t.style.transitionDuration="0ms",o.style.transitionDuration="0ms",a("scrollbarDragMove",s))}function h(s){const e=l.params.scrollbar,{scrollbar:r,wrapperEl:t}=l,{el:o}=r;p&&(p=!1,l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="",t.style.transitionDuration=""),e.hide&&(clearTimeout(d),d=nextTick((()=>{o.style.opacity=0,o.style.transitionDuration="400ms"}),1e3)),a("scrollbarDragEnd",s),e.snapOnRelease&&l.slideToClosest())}function v(s){const{scrollbar:e,params:r}=l,a=e.el;if(!a)return;const o=a,n=!!r.passiveListeners&&{passive:!1,capture:!1},i=!!r.passiveListeners&&{passive:!0,capture:!1};if(!o)return;const c="on"===s?"addEventListener":"removeEventListener";o[c]("pointerdown",y,n),t[c]("pointermove",T,n),t[c]("pointerup",h,i)}function D(){const{scrollbar:s,el:e}=l;l.params.scrollbar=createElementIfNotDefined(l,l.originalParams.scrollbar,l.params.scrollbar,{el:"swiper-scrollbar"});const r=l.params.scrollbar;if(!r.el)return;let a,o;if("string"==typeof r.el&&l.isElement&&(a=l.el.querySelector(r.el)),a||"string"!=typeof r.el)a||(a=r.el);else if(a=t.querySelectorAll(r.el),!a.length)return;l.params.uniqueNavElements&&"string"==typeof r.el&&a.length>1&&1===e.querySelectorAll(r.el).length&&(a=e.querySelector(r.el)),a.length>0&&(a=a[0]),a.classList.add(l.isHorizontal()?r.horizontalClass:r.verticalClass),a&&(o=a.querySelector(classesToSelector(l.params.scrollbar.dragClass)),o||(o=createElement("div",l.params.scrollbar.dragClass),a.append(o))),Object.assign(s,{el:a,dragEl:o}),r.draggable&&l.params.scrollbar.el&&l.scrollbar.el&&v("on"),a&&a.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))}function C(){const s=l.params.scrollbar,e=l.scrollbar.el;e&&e.classList.remove(...classesToTokens(l.isHorizontal()?s.horizontalClass:s.verticalClass)),l.params.scrollbar.el&&l.scrollbar.el&&v("off")}e({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),l.scrollbar={el:null,dragEl:null},r("init",(()=>{!1===l.params.scrollbar.enabled?E():(D(),u(),b())})),r("update resize observerUpdate lock unlock",(()=>{u()})),r("setTranslate",(()=>{b()})),r("setTransition",((s,e)=>{!function(s){l.params.scrollbar.el&&l.scrollbar.el&&(l.scrollbar.dragEl.style.transitionDuration=`${s}ms`)}(e)})),r("enable disable",(()=>{const{el:s}=l.scrollbar;s&&s.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))})),r("destroy",(()=>{C()}));const E=()=>{l.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),C()};Object.assign(l.scrollbar,{enable:()=>{l.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),D(),u(),b()},disable:E,updateSize:u,setTranslate:b,init:D,destroy:C})}export{Scrollbar as default}; +//# sourceMappingURL=scrollbar.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/scrollbar.min.mjs.map b/src/assets/js/vendor/swiper/modules/scrollbar.min.mjs.map new file mode 100644 index 0000000..2748a77 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/scrollbar.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"scrollbar.mjs.mjs","names":["getDocument","classesToTokens","createElement","nextTick","elementOffset","createElementIfNotDefined","classesToSelector","Scrollbar","_ref","swiper","extendParams","on","emit","document","dragStartPos","dragSize","trackSize","divider","isTouched","timeout","dragTimeout","setTranslate","params","scrollbar","el","rtlTranslate","rtl","dragEl","progress","loop","progressLoop","newSize","newPos","isHorizontal","style","transform","width","height","hide","clearTimeout","opacity","setTimeout","transitionDuration","updateSize","offsetWidth","offsetHeight","size","virtualSize","slidesOffsetBefore","centeredSlides","snapGrid","parseInt","display","watchOverflow","enabled","classList","isLocked","lockClass","getPointerPosition","e","clientX","clientY","setDragPosition","positionRatio","Math","max","min","position","minTranslate","maxTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","onDragStart","wrapperEl","target","getBoundingClientRect","preventDefault","stopPropagation","cssMode","onDragMove","returnValue","onDragEnd","snapOnRelease","slideToClosest","events","method","activeListener","passiveListeners","passive","capture","passiveListener","eventMethod","init","swiperEl","originalParams","isElement","querySelector","querySelectorAll","length","uniqueNavElements","add","horizontalClass","verticalClass","dragClass","append","Object","assign","draggable","destroy","remove","scrollbarDisabledClass","disable","_s","duration","setTransition","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/scrollbar.mjs b/src/assets/js/vendor/swiper/modules/scrollbar.mjs new file mode 100644 index 0000000..167be7f --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/scrollbar.mjs @@ -0,0 +1,354 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { h as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; + +function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); +} + +export { Scrollbar as default }; diff --git a/src/assets/js/vendor/swiper/modules/scrollbar.scss b/src/assets/js/vendor/swiper/modules/scrollbar.scss new file mode 100644 index 0000000..93882d3 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/scrollbar.scss @@ -0,0 +1,61 @@ +@at-root { + :root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ + } +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/src/assets/js/vendor/swiper/modules/thumbs-element.css b/src/assets/js/vendor/swiper/modules/thumbs-element.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/thumbs-element.css diff --git a/src/assets/js/vendor/swiper/modules/thumbs-element.min.css b/src/assets/js/vendor/swiper/modules/thumbs-element.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/thumbs-element.min.css diff --git a/src/assets/js/vendor/swiper/modules/thumbs.css b/src/assets/js/vendor/swiper/modules/thumbs.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/thumbs.css diff --git a/src/assets/js/vendor/swiper/modules/thumbs.less b/src/assets/js/vendor/swiper/modules/thumbs.less new file mode 100644 index 0000000..9eaa1b3 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/thumbs.less @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/src/assets/js/vendor/swiper/modules/thumbs.min.css b/src/assets/js/vendor/swiper/modules/thumbs.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/thumbs.min.css diff --git a/src/assets/js/vendor/swiper/modules/thumbs.min.mjs b/src/assets/js/vendor/swiper/modules/thumbs.min.mjs new file mode 100644 index 0000000..793c847 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/thumbs.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{k as isObject,e as elementChildren}from"../shared/utils.min.mjs";function Thumb(e){let{swiper:s,extendParams:i,on:t}=e;i({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,a=!1;function l(){const e=s.thumbs.swiper;if(!e||e.destroyed)return;const i=e.clickedIndex,t=e.clickedSlide;if(t&&t.classList.contains(s.params.thumbs.slideThumbActiveClass))return;if(null==i)return;let r;r=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):i,s.params.loop?s.slideToLoop(r):s.slideTo(r)}function n(){const{thumbs:e}=s.params;if(r)return!1;r=!0;const i=s.constructor;if(e.swiper instanceof i)s.thumbs.swiper=e.swiper,Object.assign(s.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(s.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper.update();else if(isObject(e.swiper)){const t=Object.assign({},e.swiper);Object.assign(t,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper=new i(t),a=!0}return s.thumbs.swiper.el.classList.add(s.params.thumbs.thumbsContainerClass),s.thumbs.swiper.on("tap",l),!0}function d(e){const i=s.thumbs.swiper;if(!i||i.destroyed)return;const t="auto"===i.params.slidesPerView?i.slidesPerViewDynamic():i.params.slidesPerView;let r=1;const a=s.params.thumbs.slideThumbActiveClass;if(s.params.slidesPerView>1&&!s.params.centeredSlides&&(r=s.params.slidesPerView),s.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),i.slides.forEach((e=>e.classList.remove(a))),i.params.loop||i.params.virtual&&i.params.virtual.enabled)for(let e=0;e{e.classList.add(a)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${s.realIndex}`))[0];a=i.slides.indexOf(e),d=s.activeIndex>s.previousIndex?"next":"prev"}else a=s.realIndex,d=a>s.previousIndex?"next":"prev";n&&(a+="next"===d?l:-1*l),i.visibleSlidesIndexes&&i.visibleSlidesIndexes.indexOf(a)<0&&(i.params.centeredSlides?a=a>r?a-Math.floor(t/2)+1:a+Math.floor(t/2)-1:a>r&&i.params.slidesPerGroup,i.slideTo(a,e?0:void 0))}}s.thumbs={swiper:null},t("beforeInit",(()=>{const{thumbs:e}=s.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const i=getDocument(),t=()=>{const t="string"==typeof e.swiper?i.querySelector(e.swiper):e.swiper;if(t&&t.swiper)e.swiper=t.swiper,n(),d(!0);else if(t){const i=r=>{e.swiper=r.detail[0],t.removeEventListener("init",i),n(),d(!0),e.swiper.update(),s.update()};t.addEventListener("init",i)}return t},r=()=>{if(s.destroyed)return;t()||requestAnimationFrame(r)};requestAnimationFrame(r)}else n(),d(!0)})),t("slideChange update resize observerUpdate",(()=>{d()})),t("setTransition",((e,i)=>{const t=s.thumbs.swiper;t&&!t.destroyed&&t.setTransition(i)})),t("beforeDestroy",(()=>{const e=s.thumbs.swiper;e&&!e.destroyed&&a&&e.destroy()})),Object.assign(s.thumbs,{init:n,update:d})}export{Thumb as default}; +//# sourceMappingURL=thumbs.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/thumbs.min.mjs.map b/src/assets/js/vendor/swiper/modules/thumbs.min.mjs.map new file mode 100644 index 0000000..6d3de20 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/thumbs.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"thumbs.mjs.mjs","names":["getDocument","isObject","elementChildren","Thumb","_ref","swiper","extendParams","on","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","onThumbClick","thumbsSwiper","destroyed","clickedIndex","clickedSlide","classList","contains","params","slideToIndex","loop","parseInt","getAttribute","slideToLoop","slideTo","init","thumbsParams","SwiperClass","constructor","Object","assign","originalParams","watchSlidesProgress","slideToClickedSlide","update","thumbsSwiperParams","el","add","initial","slidesPerView","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","centeredSlides","Math","floor","slides","forEach","slideEl","remove","virtual","enabled","i","slidesEl","realIndex","useOffset","currentThumbsIndex","activeIndex","newThumbsIndex","direction","newThumbsSlide","filter","indexOf","previousIndex","visibleSlidesIndexes","slidesPerGroup","undefined","HTMLElement","document","getThumbsElementAndInit","thumbsElement","querySelector","onThumbsSwiper","e","detail","removeEventListener","addEventListener","watchForThumbsToAppear","requestAnimationFrame","_s","duration","setTransition","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/thumbs.mjs b/src/assets/js/vendor/swiper/modules/thumbs.mjs new file mode 100644 index 0000000..2d61771 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/thumbs.mjs @@ -0,0 +1,192 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { k as isObject, e as elementChildren } from '../shared/utils.mjs'; + +function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener('init', onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener('init', onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); +} + +export { Thumb as default }; diff --git a/src/assets/js/vendor/swiper/modules/thumbs.scss b/src/assets/js/vendor/swiper/modules/thumbs.scss new file mode 100644 index 0000000..9eaa1b3 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/thumbs.scss @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/src/assets/js/vendor/swiper/modules/virtual-element.css b/src/assets/js/vendor/swiper/modules/virtual-element.css new file mode 100644 index 0000000..432b52b --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/virtual-element.css @@ -0,0 +1,19 @@ +.swiper-virtual ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/src/assets/js/vendor/swiper/modules/virtual-element.min.css b/src/assets/js/vendor/swiper/modules/virtual-element.min.css new file mode 100644 index 0000000..d0e6043 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/virtual-element.min.css @@ -0,0 +1 @@ +.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/virtual.css b/src/assets/js/vendor/swiper/modules/virtual.css new file mode 100644 index 0000000..60ebeea --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/virtual.css @@ -0,0 +1,19 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/src/assets/js/vendor/swiper/modules/virtual.less b/src/assets/js/vendor/swiper/modules/virtual.less new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/virtual.less @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/src/assets/js/vendor/swiper/modules/virtual.min.css b/src/assets/js/vendor/swiper/modules/virtual.min.css new file mode 100644 index 0000000..dbb4007 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/virtual.min.css @@ -0,0 +1 @@ +.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/virtual.min.mjs b/src/assets/js/vendor/swiper/modules/virtual.min.mjs new file mode 100644 index 0000000..761b2d7 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/virtual.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{s as setCSSProperty,e as elementChildren,c as createElement}from"../shared/utils.min.mjs";function Virtual(e){let s,{swiper:t,extendParams:r,on:i,emit:a}=e;r({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=getDocument();t.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const d=l.createElement("div");function n(e,s){const r=t.params.virtual;if(r.cache&&t.virtual.cache[s])return t.virtual.cache[s];let i;return r.renderSlide?(i=r.renderSlide.call(t,e,s),"string"==typeof i&&(d.innerHTML=i,i=d.children[0])):i=t.isElement?createElement("swiper-slide"):createElement("div",t.params.slideClass),i.setAttribute("data-swiper-slide-index",s),r.renderSlide||(i.innerHTML=e),r.cache&&(t.virtual.cache[s]=i),i}function c(e){const{slidesPerView:s,slidesPerGroup:r,centeredSlides:i,loop:l}=t.params,{addSlidesBefore:d,addSlidesAfter:c}=t.params.virtual,{from:o,to:u,slides:p,slidesGrid:h,offset:f}=t.virtual;t.params.cssMode||t.updateActiveIndex();const v=t.activeIndex||0;let m,g,E;m=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",i?(g=Math.floor(s/2)+r+c,E=Math.floor(s/2)+r+d):(g=s+(r-1)+c,E=(l?s:r)+d);let x=v-E,w=v+g;l||(x=Math.max(x,0),w=Math.min(w,p.length-1));let S=(t.slidesGrid[x]||0)-(t.slidesGrid[0]||0);function b(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),a("virtualUpdate")}if(l&&v>=E?(x-=E,i||(S+=t.slidesGrid[0])):l&&v{e.style[m]=S-Math.abs(t.cssOverflowAdjustment())+"px"})),t.updateProgress(),void a("virtualUpdate");if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:S,from:x,to:w,slides:function(){const e=[];for(let s=x;s<=w;s+=1)e.push(p[s]);return e}()}),void(t.params.virtual.renderExternalUpdate?b():a("virtualUpdate"));const A=[],M=[],y=e=>{let s=e;return e<0?s=p.length+e:s>=p.length&&(s-=p.length),s};if(e)t.slides.filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=o;e<=u;e+=1)if(ew){const s=y(e);t.slides.filter((e=>e.matches(`.${t.params.slideClass}[data-swiper-slide-index="${s}"], swiper-slide[data-swiper-slide-index="${s}"]`))).forEach((e=>{e.remove()}))}const P=l?-p.length:0,j=l?2*p.length:p.length;for(let s=P;s=x&&s<=w){const t=y(s);void 0===u||e?M.push(t):(s>u&&M.push(t),s{t.slidesEl.append(n(p[e],e))})),l)for(let e=A.length-1;e>=0;e-=1){const s=A[e];t.slidesEl.prepend(n(p[s],s))}else A.sort(((e,s)=>s-e)),A.forEach((e=>{t.slidesEl.prepend(n(p[e],e))}));elementChildren(t.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[m]=S-Math.abs(t.cssOverflowAdjustment())+"px"})),b()}i("beforeInit",(()=>{if(!t.params.virtual.enabled)return;let e;if(void 0===t.passedParams.virtual.slides){const s=[...t.slidesEl.children].filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`)));s&&s.length&&(t.virtual.slides=[...s],e=!0,s.forEach(((e,s)=>{e.setAttribute("data-swiper-slide-index",s),t.virtual.cache[s]=e,e.remove()})))}e||(t.virtual.slides=t.params.virtual.slides),t.classNames.push(`${t.params.containerModifierClass}virtual`),t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0,c()})),i("setTranslate",(()=>{t.params.virtual.enabled&&(t.params.cssMode&&!t._immediateVirtual?(clearTimeout(s),s=setTimeout((()=>{c()}),100)):c())})),i("init update resize",(()=>{t.params.virtual.enabled&&t.params.cssMode&&setCSSProperty(t.wrapperEl,"--swiper-virtual-size",`${t.virtualSize}px`)})),Object.assign(t.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let s=0;s{const r=e[t],a=r.getAttribute("data-swiper-slide-index");a&&r.setAttribute("data-swiper-slide-index",parseInt(a,10)+i),s[parseInt(t,10)+i]=r})),t.virtual.cache=s}c(!0),t.slideTo(r,0)},removeSlide:function(e){if(null==e)return;let s=t.activeIndex;if(Array.isArray(e))for(let r=e.length-1;r>=0;r-=1)t.params.virtual.cache&&(delete t.virtual.cache[e[r]],Object.keys(t.virtual.cache).forEach((s=>{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e[r],1),e[r]{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e,1),e= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); +} + +export { Virtual as default }; diff --git a/src/assets/js/vendor/swiper/modules/virtual.scss b/src/assets/js/vendor/swiper/modules/virtual.scss new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/virtual.scss @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/src/assets/js/vendor/swiper/modules/zoom-element.css b/src/assets/js/vendor/swiper/modules/zoom-element.css new file mode 100644 index 0000000..f81a92b --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/zoom-element.css @@ -0,0 +1,5 @@ +/* Zoom container styles start *//* Zoom container styles end */ +::slotted(.swiper-slide-zoomed) { + cursor: move; + touch-action: none; +} diff --git a/src/assets/js/vendor/swiper/modules/zoom-element.min.css b/src/assets/js/vendor/swiper/modules/zoom-element.min.css new file mode 100644 index 0000000..17d073f --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/zoom-element.min.css @@ -0,0 +1 @@ +::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/zoom.css b/src/assets/js/vendor/swiper/modules/zoom.css new file mode 100644 index 0000000..40f5b10 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/zoom.css @@ -0,0 +1,21 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/src/assets/js/vendor/swiper/modules/zoom.less b/src/assets/js/vendor/swiper/modules/zoom.less new file mode 100644 index 0000000..d226ae9 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/zoom.less @@ -0,0 +1,23 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} +/* Zoom container styles end */ + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/src/assets/js/vendor/swiper/modules/zoom.min.css b/src/assets/js/vendor/swiper/modules/zoom.min.css new file mode 100644 index 0000000..e55cd9a --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/zoom.min.css @@ -0,0 +1 @@ +.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/zoom.min.mjs b/src/assets/js/vendor/swiper/modules/zoom.min.mjs new file mode 100644 index 0000000..cf83989 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/zoom.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren,a as elementParents,b as elementOffset,i as getTranslate}from"../shared/utils.min.mjs";function Zoom(e){let{swiper:t,extendParams:i,on:a,emit:r}=e;const s=getWindow();i({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let o,n,l=1,m=!1;const c=[],d={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},u={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},p={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let g=1;function h(){if(c.length<2)return 1;const e=c[0].pageX,t=c[0].pageY,i=c[1].pageX,a=c[1].pageY;return Math.sqrt((i-e)**2+(a-t)**2)}function E(e){const i=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(i)||t.slides.filter((t=>t.contains(e.target))).length>0}function v(e){if("mouse"===e.pointerType&&c.splice(0,c.length),!E(e))return;const i=t.params.zoom;if(o=!1,n=!1,c.push(e),!(c.length<2)){if(o=!0,d.scaleStart=h(),!d.slideEl){d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),d.slideEl||(d.slideEl=t.slides[t.activeIndex]);let a=d.slideEl.querySelector(`.${i.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=a,d.imageWrapEl=a?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0,!d.imageWrapEl)return void(d.imageEl=void 0);d.maxRatio=d.imageWrapEl.getAttribute("data-swiper-zoom")||i.maxRatio}if(d.imageEl){const[e,t]=function(){if(c.length<2)return{x:null,y:null};const e=d.imageEl.getBoundingClientRect();return[(c[0].pageX+(c[1].pageX-c[0].pageX)/2-e.x-s.scrollX)/l,(c[0].pageY+(c[1].pageY-c[0].pageY)/2-e.y-s.scrollY)/l]}();d.originX=e,d.originY=t,d.imageEl.style.transitionDuration="0ms"}m=!0}}function f(e){if(!E(e))return;const i=t.params.zoom,a=t.zoom,r=c.findIndex((t=>t.pointerId===e.pointerId));r>=0&&(c[r]=e),c.length<2||(n=!0,d.scaleMove=h(),d.imageEl&&(a.scale=d.scaleMove/d.scaleStart*l,a.scale>d.maxRatio&&(a.scale=d.maxRatio-1+(a.scale-d.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));r>=0&&c.splice(r,1),o&&n&&(o=!1,n=!1,d.imageEl&&(a.scale=Math.max(Math.min(a.scale,d.maxRatio),i.minRatio),d.imageEl.style.transitionDuration=`${t.params.speed}ms`,d.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,l=a.scale,m=!1,a.scale>1&&d.slideEl?d.slideEl.classList.add(`${i.zoomedSlideClass}`):a.scale<=1&&d.slideEl&&d.slideEl.classList.remove(`${i.zoomedSlideClass}`),1===a.scale&&(d.originX=0,d.originY=0,d.slideEl=void 0)))}function X(e){if(!E(e)||!function(e){const i=`.${t.params.zoom.containerClass}`;return!!e.target.matches(i)||[...t.hostEl.querySelectorAll(i)].filter((t=>t.contains(e.target))).length>0}(e))return;const i=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!d.slideEl)return;u.isMoved||(u.width=d.imageEl.offsetWidth,u.height=d.imageEl.offsetHeight,u.startX=getTranslate(d.imageWrapEl,"x")||0,u.startY=getTranslate(d.imageWrapEl,"y")||0,d.slideWidth=d.slideEl.offsetWidth,d.slideHeight=d.slideEl.offsetHeight,d.imageWrapEl.style.transitionDuration="0ms");const a=u.width*i.scale,r=u.height*i.scale;if(a0?c[0].pageX:e.pageX,u.touchesCurrent.y=c.length>0?c[0].pageY:e.pageY;if(Math.max(Math.abs(u.touchesCurrent.x-u.touchesStart.x),Math.abs(u.touchesCurrent.y-u.touchesStart.y))>5&&(t.allowClick=!1),!u.isMoved&&!m){if(t.isHorizontal()&&(Math.floor(u.minX)===Math.floor(u.startX)&&u.touchesCurrent.xu.touchesStart.x))return void(u.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(u.minY)===Math.floor(u.startY)&&u.touchesCurrent.yu.touchesStart.y))return void(u.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),u.isMoved=!0;const s=(i.scale-l)/(d.maxRatio-t.params.zoom.minRatio),{originX:o,originY:n}=d;u.currentX=u.touchesCurrent.x-u.touchesStart.x+u.startX+s*(u.width-2*o),u.currentY=u.touchesCurrent.y-u.touchesStart.y+u.startY+s*(u.height-2*n),u.currentXu.maxX&&(u.currentX=u.maxX-1+(u.currentX-u.maxX+1)**.8),u.currentYu.maxY&&(u.currentY=u.maxY-1+(u.currentY-u.maxY+1)**.8),p.prevPositionX||(p.prevPositionX=u.touchesCurrent.x),p.prevPositionY||(p.prevPositionY=u.touchesCurrent.y),p.prevTime||(p.prevTime=Date.now()),p.x=(u.touchesCurrent.x-p.prevPositionX)/(Date.now()-p.prevTime)/2,p.y=(u.touchesCurrent.y-p.prevPositionY)/(Date.now()-p.prevTime)/2,Math.abs(u.touchesCurrent.x-p.prevPositionX)<2&&(p.x=0),Math.abs(u.touchesCurrent.y-p.prevPositionY)<2&&(p.y=0),p.prevPositionX=u.touchesCurrent.x,p.prevPositionY=u.touchesCurrent.y,p.prevTime=Date.now(),d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}function Y(){const e=t.zoom;d.slideEl&&t.activeIndex!==t.slides.indexOf(d.slideEl)&&(d.imageEl&&(d.imageEl.style.transform="translate3d(0,0,0) scale(1)"),d.imageWrapEl&&(d.imageWrapEl.style.transform="translate3d(0,0,0)"),d.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,l=1,d.slideEl=void 0,d.imageEl=void 0,d.imageWrapEl=void 0,d.originX=0,d.originY=0)}function y(e){const i=t.zoom,a=t.params.zoom;if(!d.slideEl){e&&e.target&&(d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),d.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex]);let i=d.slideEl.querySelector(`.${a.containerClass}`);i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=i,d.imageWrapEl=i?elementParents(d.imageEl,`.${a.containerClass}`)[0]:void 0}if(!d.imageEl||!d.imageWrapEl)return;let r,o,n,m,c,p,g,h,E,v,f,x,X,Y,y,z,C,w;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),d.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===u.touchesStart.x&&e?(r=e.pageX,o=e.pageY):(r=u.touchesStart.x,o=u.touchesStart.y);const M="number"==typeof e?e:null;1===l&&M&&(r=void 0,o=void 0),i.scale=M||d.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,l=M||d.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,!e||1===l&&M?(g=0,h=0):(C=d.slideEl.offsetWidth,w=d.slideEl.offsetHeight,n=elementOffset(d.slideEl).left+s.scrollX,m=elementOffset(d.slideEl).top+s.scrollY,c=n+C/2-r,p=m+w/2-o,E=d.imageEl.offsetWidth,v=d.imageEl.offsetHeight,f=E*i.scale,x=v*i.scale,X=Math.min(C/2-f/2,0),Y=Math.min(w/2-x/2,0),y=-X,z=-Y,g=c*i.scale,h=p*i.scale,gy&&(g=y),hz&&(h=z)),M&&1===i.scale&&(d.originX=0,d.originY=0),d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform=`translate3d(${g}px, ${h}px,0)`,d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`}function z(){const e=t.zoom,i=t.params.zoom;if(!d.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex];let e=d.slideEl.querySelector(`.${i.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=e,d.imageWrapEl=e?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0}d.imageEl&&d.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,l=1,d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform="translate3d(0,0,0)",d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform="translate3d(0,0,0) scale(1)",d.slideEl.classList.remove(`${i.zoomedSlideClass}`),d.slideEl=void 0,d.originX=0,d.originY=0)}function C(e){const i=t.zoom;i.scale&&1!==i.scale?z():y(e)}function w(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function M(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:i,activeListenerWithCapture:a}=w();t.wrapperEl.addEventListener("pointerdown",v,i),t.wrapperEl.addEventListener("pointermove",f,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,x,i)})),t.wrapperEl.addEventListener("pointermove",X,a)}function W(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:i,activeListenerWithCapture:a}=w();t.wrapperEl.removeEventListener("pointerdown",v,i),t.wrapperEl.removeEventListener("pointermove",f,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,x,i)})),t.wrapperEl.removeEventListener("pointermove",X,a)}Object.defineProperty(t.zoom,"scale",{get:()=>g,set(e){if(g!==e){const t=d.imageEl,i=d.slideEl;r("zoomChange",e,t,i)}g=e}}),a("init",(()=>{t.params.zoom.enabled&&M()})),a("destroy",(()=>{W()})),a("touchStart",((e,i)=>{t.zoom.enabled&&function(e){const i=t.device;if(!d.imageEl)return;if(u.isTouched)return;i.android&&e.cancelable&&e.preventDefault(),u.isTouched=!0;const a=c.length>0?c[0]:e;u.touchesStart.x=a.pageX,u.touchesStart.y=a.pageY}(i)})),a("touchEnd",((e,i)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!u.isMoved)return u.isTouched=!1,void(u.isMoved=!1);u.isTouched=!1,u.isMoved=!1;let i=300,a=300;const r=p.x*i,s=u.currentX+r,o=p.y*a,n=u.currentY+o;0!==p.x&&(i=Math.abs((s-u.currentX)/p.x)),0!==p.y&&(a=Math.abs((n-u.currentY)/p.y));const l=Math.max(i,a);u.currentX=s,u.currentY=n;const m=u.width*e.scale,c=u.height*e.scale;u.minX=Math.min(d.slideWidth/2-m/2,0),u.maxX=-u.minX,u.minY=Math.min(d.slideHeight/2-c/2,0),u.maxY=-u.minY,u.currentX=Math.max(Math.min(u.currentX,u.maxX),u.minX),u.currentY=Math.max(Math.min(u.currentY,u.maxY),u.minY),d.imageWrapEl.style.transitionDuration=`${l}ms`,d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}()})),a("doubleTap",((e,i)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&C(i)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&Y()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&Y()})),Object.assign(t.zoom,{enable:M,disable:W,in:y,out:z,toggle:C})}export{Zoom as default}; +//# sourceMappingURL=zoom.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/zoom.min.mjs.map b/src/assets/js/vendor/swiper/modules/zoom.min.mjs.map new file mode 100644 index 0000000..89bd7ac --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/zoom.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"zoom.mjs.mjs","names":["getWindow","elementChildren","elementParents","elementOffset","getTranslate","Zoom","_ref","swiper","extendParams","on","emit","window","zoom","enabled","maxRatio","minRatio","toggle","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideEl","undefined","slideWidth","slideHeight","imageEl","imageWrapEl","image","isTouched","isMoved","currentX","currentY","minX","minY","maxX","maxY","width","height","startX","startY","touchesStart","touchesCurrent","velocity","x","y","prevPositionX","prevPositionY","prevTime","scale","getDistanceBetweenTouches","length","x1","pageX","y1","pageY","x2","y2","Math","sqrt","eventWithinSlide","e","slideSelector","isElement","params","slideClass","target","matches","slides","filter","contains","onGestureStart","pointerType","splice","push","scaleStart","closest","activeIndex","querySelector","querySelectorAll","getAttribute","box","getBoundingClientRect","scrollX","scrollY","getScaleOrigin","style","transitionDuration","onGestureChange","pointerIndex","findIndex","cachedEv","pointerId","scaleMove","transform","onGestureEnd","type","max","min","speed","classList","add","remove","onTouchMove","selector","hostEl","containerEl","eventWithinZoomContainer","offsetWidth","offsetHeight","scaledWidth","scaledHeight","abs","allowClick","isHorizontal","floor","cancelable","preventDefault","stopPropagation","scaleRatio","Date","now","onTransitionEnd","indexOf","zoomIn","virtual","slidesEl","slideActiveClass","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","cssMode","wrapperEl","overflow","touchAction","forceZoomRatio","left","top","zoomOut","zoomToggle","getListeners","passiveListener","passiveListeners","passive","capture","activeListenerWithCapture","enable","addEventListener","forEach","eventName","disable","removeEventListener","Object","defineProperty","get","set","value","_s","device","android","event","onTouchStart","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTouchEnd","animating","assign","in","out"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/modules/zoom.mjs b/src/assets/js/vendor/swiper/modules/zoom.mjs new file mode 100644 index 0000000..47dfc21 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/zoom.mjs @@ -0,0 +1,591 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren, a as elementParents, b as elementOffset, i as getTranslate } from '../shared/utils.mjs'; + +function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !gesture.slideEl) return; + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth; + image.height = gesture.imageEl.offsetHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth; + imageHeight = gesture.imageEl.offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); +} + +export { Zoom as default }; diff --git a/src/assets/js/vendor/swiper/modules/zoom.scss b/src/assets/js/vendor/swiper/modules/zoom.scss new file mode 100644 index 0000000..1f56449 --- /dev/null +++ b/src/assets/js/vendor/swiper/modules/zoom.scss @@ -0,0 +1,21 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/src/assets/js/vendor/swiper/package.json b/src/assets/js/vendor/swiper/package.json new file mode 100644 index 0000000..1591986 --- /dev/null +++ b/src/assets/js/vendor/swiper/package.json @@ -0,0 +1,208 @@ +{ + "name": "swiper", + "version": "11.0.5", + "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", + "typings": "swiper.d.ts", + "type": "module", + "main": "./swiper.mjs", + "module": "./swiper.mjs", + "exports": { + ".": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./core": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./bundle": { + "types": "./swiper.d.ts", + "default": "./swiper-bundle.mjs" + }, + "./css": "./swiper.css", + "./css/bundle": "./swiper-bundle.css", + "./swiper-bundle.css": "./swiper-bundle.css", + "./css/a11y": "./modules/a11y.css", + "./css/autoplay": "./modules/autoplay.css", + "./css/controller": "./modules/controller.css", + "./css/effect-coverflow": "./modules/effect-coverflow.css", + "./css/effect-cube": "./modules/effect-cube.css", + "./css/effect-fade": "./modules/effect-fade.css", + "./css/effect-flip": "./modules/effect-flip.css", + "./css/effect-creative": "./modules/effect-creative.css", + "./css/effect-cards": "./modules/effect-cards.css", + "./css/free-mode": "./modules/free-mode.css", + "./css/grid": "./modules/grid.css", + "./css/hash-navigation": "./modules/hash-navigation.css", + "./css/history": "./modules/history.css", + "./css/keyboard": "./modules/keyboard.css", + "./css/manipulation": "./modules/manipulation.css", + "./css/mousewheel": "./modules/mousewheel.css", + "./css/navigation": "./modules/navigation.css", + "./css/pagination": "./modules/pagination.css", + "./css/parallax": "./modules/parallax.css", + "./css/scrollbar": "./modules/scrollbar.css", + "./css/thumbs": "./modules/thumbs.css", + "./css/virtual": "./modules/virtual.css", + "./css/zoom": "./modules/zoom.css", + "./less": "./swiper.less", + "./less/a11y": "./modules/a11y.less", + "./less/autoplay": "./modules/autoplay.less", + "./less/controller": "./modules/controller.less", + "./less/effect-coverflow": "./modules/effect-coverflow.less", + "./less/effect-cube": "./modules/effect-cube.less", + "./less/effect-fade": "./modules/effect-fade.less", + "./less/effect-flip": "./modules/effect-flip.less", + "./less/effect-creative": "./modules/effect-creative.less", + "./less/effect-cards": "./modules/effect-cards.less", + "./less/free-mode": "./modules/free-mode.less", + "./less/grid": "./modules/grid.less", + "./less/hash-navigation": "./modules/hash-navigation.less", + "./less/history": "./modules/history.less", + "./less/keyboard": "./modules/keyboard.less", + "./less/manipulation": "./modules/manipulation.less", + "./less/mousewheel": "./modules/mousewheel.less", + "./less/navigation": "./modules/navigation.less", + "./less/pagination": "./modules/pagination.less", + "./less/parallax": "./modules/parallax.less", + "./less/scrollbar": "./modules/scrollbar.less", + "./less/thumbs": "./modules/thumbs.less", + "./less/virtual": "./modules/virtual.less", + "./less/zoom": "./modules/zoom.less", + "./scss": "./swiper.scss", + "./scss/a11y": "./modules/a11y.scss", + "./scss/autoplay": "./modules/autoplay.scss", + "./scss/controller": "./modules/controller.scss", + "./scss/effect-coverflow": "./modules/effect-coverflow.scss", + "./scss/effect-cube": "./modules/effect-cube.scss", + "./scss/effect-fade": "./modules/effect-fade.scss", + "./scss/effect-flip": "./modules/effect-flip.scss", + "./scss/effect-creative": "./modules/effect-creative.scss", + "./scss/effect-cards": "./modules/effect-cards.scss", + "./scss/free-mode": "./modules/free-mode.scss", + "./scss/grid": "./modules/grid.scss", + "./scss/hash-navigation": "./modules/hash-navigation.scss", + "./scss/history": "./modules/history.scss", + "./scss/keyboard": "./modules/keyboard.scss", + "./scss/manipulation": "./modules/manipulation.scss", + "./scss/mousewheel": "./modules/mousewheel.scss", + "./scss/navigation": "./modules/navigation.scss", + "./scss/pagination": "./modules/pagination.scss", + "./scss/parallax": "./modules/parallax.scss", + "./scss/scrollbar": "./modules/scrollbar.scss", + "./scss/thumbs": "./modules/thumbs.scss", + "./scss/virtual": "./modules/virtual.scss", + "./scss/zoom": "./modules/zoom.scss", + "./element": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element.mjs" + }, + "./element/bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element-bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element/css/a11y": "./modules/a11y-element.css", + "./element/css/autoplay": "./modules/autoplay-element.css", + "./element/css/controller": "./modules/controller-element.css", + "./element/css/effect-coverflow": "./modules/effect-coverflow-element.css", + "./element/css/effect-cube": "./modules/effect-cube-element.css", + "./element/css/effect-fade": "./modules/effect-fade-element.css", + "./element/css/effect-flip": "./modules/effect-flip-element.css", + "./element/css/effect-creative": "./modules/effect-creative-element.css", + "./element/css/effect-cards": "./modules/effect-cards-element.css", + "./element/css/free-mode": "./modules/free-mode-element.css", + "./element/css/grid": "./modules/grid-element.css", + "./element/css/hash-navigation": "./modules/hash-navigation-element.css", + "./element/css/history": "./modules/history-element.css", + "./element/css/keyboard": "./modules/keyboard-element.css", + "./element/css/manipulation": "./modules/manipulation-element.css", + "./element/css/mousewheel": "./modules/mousewheel-element.css", + "./element/css/navigation": "./modules/navigation-element.css", + "./element/css/pagination": "./modules/pagination-element.css", + "./element/css/parallax": "./modules/parallax-element.css", + "./element/css/scrollbar": "./modules/scrollbar-element.css", + "./element/css/thumbs": "./modules/thumbs-element.css", + "./element/css/virtual": "./modules/virtual-element.css", + "./element/css/zoom": "./modules/zoom-element.css", + "./react": { + "types": "./swiper-react.d.ts", + "default": "./swiper-react.mjs" + }, + "./vue": { + "types": "./swiper-vue.d.ts", + "default": "./swiper-vue.mjs" + }, + "./modules": { + "types": "./types/modules/index.d.ts", + "default": "./modules/index.mjs" + }, + "./types": "./types/index.d.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "modules": [ + "./types/modules/index.d.ts" + ], + "element": [ + "./swiper-element.d.ts" + ], + "element/bundle": [ + "./swiper-element.d.ts" + ], + "react": [ + "./swiper-react.d.ts" + ], + "vue": [ + "./swiper-vue.d.ts" + ] + } + }, + "repository": { + "type": "git", + "url": "https://github.com/nolimits4web/Swiper.git" + }, + "keywords": [ + "swiper", + "swipe", + "slider", + "touch", + "ios", + "mobile", + "cordova", + "phonegap", + "app", + "framework", + "framework7", + "carousel", + "gallery", + "plugin", + "react", + "vue", + "slideshow" + ], + "author": "Vladimir Kharlampidi", + "license": "MIT", + "bugs": { + "url": "https://github.com/nolimits4web/swiper/issues" + }, + "homepage": "https://swiperjs.com", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + }, + "releaseDate": "November 22, 2023" +} diff --git a/src/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs b/src/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs new file mode 100644 index 0000000..f177f5b --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs @@ -0,0 +1,2 @@ +function classesToSelector(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}export{classesToSelector as c}; +//# sourceMappingURL=classes-to-selector.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs.map b/src/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs.map new file mode 100644 index 0000000..d817369 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/classes-to-selector.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"classes-to-selector.mjs.mjs","names":["classesToSelector","classes","trim","replace"],"sources":["0"],"mappings":"AAAA,SAASA,kBAAkBC,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEL,IAAIA,EAAQC,OAAOC,QAAQ,eAAgB,QACjDA,QAAQ,KAAM,MACjB,QAESH"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/classes-to-selector.mjs b/src/assets/js/vendor/swiper/shared/classes-to-selector.mjs new file mode 100644 index 0000000..dd142d5 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/classes-to-selector.mjs @@ -0,0 +1,9 @@ +function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; +} + +export { classesToSelector as c }; diff --git a/src/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs b/src/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs new file mode 100644 index 0000000..f92d40d --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren,c as createElement}from"./utils.min.mjs";function createElementIfNotDefined(e,t,n,a){return e.params.createElements&&Object.keys(a).forEach((l=>{if(!n[l]&&!0===n.auto){let r=elementChildren(e.el,`.${a[l]}`)[0];r||(r=createElement("div",a[l]),r.className=a[l],e.el.append(r)),n[l]=r,t[l]=r}})),n}export{createElementIfNotDefined as c}; +//# sourceMappingURL=create-element-if-not-defined.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs.map b/src/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs.map new file mode 100644 index 0000000..85a319b --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/create-element-if-not-defined.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-element-if-not-defined.mjs.mjs","names":["elementChildren","createElement","createElementIfNotDefined","swiper","originalParams","params","checkProps","createElements","Object","keys","forEach","key","auto","element","el","className","append"],"sources":["0"],"mappings":"YAAcA,qBAAsBC,kBAAqB,kBAEzD,SAASC,0BAA0BC,EAAQC,EAAgBC,EAAQC,GAejE,OAdIH,EAAOE,OAAOE,gBAChBC,OAAOC,KAAKH,GAAYI,SAAQC,IAC9B,IAAKN,EAAOM,KAAwB,IAAhBN,EAAOO,KAAe,CACxC,IAAIC,EAAUb,gBAAgBG,EAAOW,GAAI,IAAIR,EAAWK,MAAQ,GAC3DE,IACHA,EAAUZ,cAAc,MAAOK,EAAWK,IAC1CE,EAAQE,UAAYT,EAAWK,GAC/BR,EAAOW,GAAGE,OAAOH,IAEnBR,EAAOM,GAAOE,EACdT,EAAeO,GAAOE,CACxB,KAGGR,CACT,QAESH"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/create-element-if-not-defined.mjs b/src/assets/js/vendor/swiper/shared/create-element-if-not-defined.mjs new file mode 100644 index 0000000..10b283f --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/create-element-if-not-defined.mjs @@ -0,0 +1,21 @@ +import { e as elementChildren, c as createElement } from './utils.mjs'; + +function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; +} + +export { createElementIfNotDefined as c }; diff --git a/src/assets/js/vendor/swiper/shared/create-shadow.min.mjs b/src/assets/js/vendor/swiper/shared/create-shadow.min.mjs new file mode 100644 index 0000000..5d337da --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/create-shadow.min.mjs @@ -0,0 +1,2 @@ +import{l as getSlideTransformEl,c as createElement}from"./utils.min.mjs";function createShadow(e,t,r){const s=`swiper-slide-shadow${r?`-${r}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=getSlideTransformEl(t);let i=a.querySelector(`.${s.split(" ").join(".")}`);return i||(i=createElement("div",s.split(" ")),a.append(i)),i}export{createShadow as c}; +//# sourceMappingURL=create-shadow.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/create-shadow.min.mjs.map b/src/assets/js/vendor/swiper/shared/create-shadow.min.mjs.map new file mode 100644 index 0000000..4505556 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/create-shadow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-shadow.mjs.mjs","names":["getSlideTransformEl","createElement","createShadow","suffix","slideEl","side","shadowClass","shadowContainer","shadowEl","querySelector","split","join","append"],"sources":["0"],"mappings":"YAAcA,yBAA0BC,kBAAqB,kBAE7D,SAASC,aAAaC,EAAQC,EAASC,GACrC,MAAMC,EAAc,sBAAsBD,EAAO,IAAIA,IAAS,KAAKF,EAAS,wBAAwBA,IAAW,KACzGI,EAAkBP,oBAAoBI,GAC5C,IAAII,EAAWD,EAAgBE,cAAc,IAAIH,EAAYI,MAAM,KAAKC,KAAK,QAK7E,OAJKH,IACHA,EAAWP,cAAc,MAAOK,EAAYI,MAAM,MAClDH,EAAgBK,OAAOJ,IAElBA,CACT,QAESN"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/create-shadow.mjs b/src/assets/js/vendor/swiper/shared/create-shadow.mjs new file mode 100644 index 0000000..66e7f05 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/create-shadow.mjs @@ -0,0 +1,14 @@ +import { l as getSlideTransformEl, c as createElement } from './utils.mjs'; + +function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; +} + +export { createShadow as c }; diff --git a/src/assets/js/vendor/swiper/shared/effect-init.min.mjs b/src/assets/js/vendor/swiper/shared/effect-init.min.mjs new file mode 100644 index 0000000..feed86e --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/effect-init.min.mjs @@ -0,0 +1,2 @@ +function effectInit(e){const{effect:s,swiper:a,on:t,setTranslate:r,setTransition:i,overwriteParams:n,perspective:o,recreateShadows:f,getEffectParams:l}=e;let c;t("beforeInit",(()=>{if(a.params.effect!==s)return;a.classNames.push(`${a.params.containerModifierClass}${s}`),o&&o()&&a.classNames.push(`${a.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(a.params,e),Object.assign(a.originalParams,e)})),t("setTranslate",(()=>{a.params.effect===s&&r()})),t("setTransition",((e,t)=>{a.params.effect===s&&i(t)})),t("transitionEnd",(()=>{if(a.params.effect===s&&f){if(!l||!l().slideShadows)return;a.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),f()}})),t("virtualUpdate",(()=>{a.params.effect===s&&(a.slides.length||(c=!0),requestAnimationFrame((()=>{c&&a.slides&&a.slides.length&&(r(),c=!1)})))}))}export{effectInit as e}; +//# sourceMappingURL=effect-init.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/effect-init.min.mjs.map b/src/assets/js/vendor/swiper/shared/effect-init.min.mjs.map new file mode 100644 index 0000000..7250e5b --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/effect-init.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-init.mjs.mjs","names":["effectInit","params","effect","swiper","on","setTranslate","setTransition","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","push","containerModifierClass","overwriteParamsResult","Object","assign","originalParams","_s","duration","slideShadows","slides","forEach","slideEl","querySelectorAll","shadowEl","remove","length","requestAnimationFrame"],"sources":["0"],"mappings":"AAAA,SAASA,WAAWC,GAClB,MAAMC,OACJA,EAAMC,OACNA,EAAMC,GACNA,EAAEC,aACFA,EAAYC,cACZA,EAAaC,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACET,EA+BJ,IAAIU,EA9BJP,EAAG,cAAc,KACf,GAAID,EAAOF,OAAOC,SAAWA,EAAQ,OACrCC,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,yBAAyBZ,KAC7DM,GAAeA,KACjBL,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,4BAE1C,MAAMC,EAAwBR,EAAkBA,IAAoB,CAAC,EACrES,OAAOC,OAAOd,EAAOF,OAAQc,GAC7BC,OAAOC,OAAOd,EAAOe,eAAgBH,EAAsB,IAE7DX,EAAG,gBAAgB,KACbD,EAAOF,OAAOC,SAAWA,GAC7BG,GAAc,IAEhBD,EAAG,iBAAiB,CAACe,EAAIC,KACnBjB,EAAOF,OAAOC,SAAWA,GAC7BI,EAAcc,EAAS,IAEzBhB,EAAG,iBAAiB,KAClB,GAAID,EAAOF,OAAOC,SAAWA,GACzBO,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBW,aAAc,OAEzDlB,EAAOmB,OAAOC,SAAQC,IACpBA,EAAQC,iBAAiB,gHAAgHF,SAAQG,GAAYA,EAASC,UAAS,IAGjLlB,GACF,KAGFL,EAAG,iBAAiB,KACdD,EAAOF,OAAOC,SAAWA,IACxBC,EAAOmB,OAAOM,SACjBjB,GAAyB,GAE3BkB,uBAAsB,KAChBlB,GAA0BR,EAAOmB,QAAUnB,EAAOmB,OAAOM,SAC3DvB,IACAM,GAAyB,EAC3B,IACA,GAEN,QAESX"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/effect-init.mjs b/src/assets/js/vendor/swiper/shared/effect-init.mjs new file mode 100644 index 0000000..d418687 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/effect-init.mjs @@ -0,0 +1,58 @@ +function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); +} + +export { effectInit as e }; diff --git a/src/assets/js/vendor/swiper/shared/effect-target.min.mjs b/src/assets/js/vendor/swiper/shared/effect-target.min.mjs new file mode 100644 index 0000000..82d30c6 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/effect-target.min.mjs @@ -0,0 +1,2 @@ +import{l as getSlideTransformEl}from"./utils.min.mjs";function effectTarget(e,i){const t=getSlideTransformEl(i);return t!==i&&(t.style.backfaceVisibility="hidden",t.style["-webkit-backface-visibility"]="hidden"),t}export{effectTarget as e}; +//# sourceMappingURL=effect-target.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/effect-target.min.mjs.map b/src/assets/js/vendor/swiper/shared/effect-target.min.mjs.map new file mode 100644 index 0000000..9d0c540 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/effect-target.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-target.mjs.mjs","names":["getSlideTransformEl","effectTarget","effectParams","slideEl","transformEl","style","backfaceVisibility"],"sources":["0"],"mappings":"YAAcA,wBAA2B,kBAEzC,SAASC,aAAaC,EAAcC,GAClC,MAAMC,EAAcJ,oBAAoBG,GAKxC,OAJIC,IAAgBD,IAClBC,EAAYC,MAAMC,mBAAqB,SACvCF,EAAYC,MAAM,+BAAiC,UAE9CD,CACT,QAESH"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/effect-target.mjs b/src/assets/js/vendor/swiper/shared/effect-target.mjs new file mode 100644 index 0000000..ba17d5b --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/effect-target.mjs @@ -0,0 +1,12 @@ +import { l as getSlideTransformEl } from './utils.mjs'; + +function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; +} + +export { effectTarget as e }; diff --git a/src/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs b/src/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs new file mode 100644 index 0000000..270263b --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs @@ -0,0 +1,2 @@ +import{j as elementTransitionEnd}from"./utils.min.mjs";function effectVirtualTransitionEnd(e){let{swiper:t,duration:n,transformElements:r,allSlides:i}=e;const{activeIndex:a}=t;if(t.params.virtualTranslate&&0!==n){let e,n=!1;e=i?r:r.filter((e=>{const n=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(n)===a})),e.forEach((e=>{elementTransitionEnd(e,(()=>{if(n)return;if(!t||t.destroyed)return;n=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}export{effectVirtualTransitionEnd as e}; +//# sourceMappingURL=effect-virtual-transition-end.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs.map b/src/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs.map new file mode 100644 index 0000000..da4e095 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/effect-virtual-transition-end.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-virtual-transition-end.mjs.mjs","names":["elementTransitionEnd","effectVirtualTransitionEnd","_ref","swiper","duration","transformElements","allSlides","activeIndex","params","virtualTranslate","transitionEndTarget","eventTriggered","filter","transformEl","el","classList","contains","parentElement","slides","slideEl","shadowRoot","parentNode","getSlide","getSlideIndex","forEach","destroyed","animating","evt","window","CustomEvent","bubbles","cancelable","wrapperEl","dispatchEvent"],"sources":["0"],"mappings":"YAAcA,yBAA4B,kBAE1C,SAASC,2BAA2BC,GAClC,IAAIC,OACFA,EAAMC,SACNA,EAAQC,kBACRA,EAAiBC,UACjBA,GACEJ,EACJ,MAAMK,YACJA,GACEJ,EASJ,GAAIA,EAAOK,OAAOC,kBAAiC,IAAbL,EAAgB,CACpD,IACIM,EADAC,GAAiB,EAGnBD,EADEJ,EACoBD,EAEAA,EAAkBO,QAAOC,IAC7C,MAAMC,EAAKD,EAAYE,UAAUC,SAAS,0BAf/BF,KACf,IAAKA,EAAGG,cAGN,OADcd,EAAOe,OAAON,QAAOO,GAAWA,EAAQC,YAAcD,EAAQC,aAAeN,EAAGO,aAAY,GAG5G,OAAOP,EAAGG,aAAa,EASmDK,CAAST,GAAeA,EAC9F,OAAOV,EAAOoB,cAAcT,KAAQP,CAAW,IAGnDG,EAAoBc,SAAQV,IAC1Bd,qBAAqBc,GAAI,KACvB,GAAIH,EAAgB,OACpB,IAAKR,GAAUA,EAAOsB,UAAW,OACjCd,GAAiB,EACjBR,EAAOuB,WAAY,EACnB,MAAMC,EAAM,IAAIC,OAAOC,YAAY,gBAAiB,CAClDC,SAAS,EACTC,YAAY,IAEd5B,EAAO6B,UAAUC,cAAcN,EAAI,GACnC,GAEN,CACF,QAES1B"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/effect-virtual-transition-end.mjs b/src/assets/js/vendor/swiper/shared/effect-virtual-transition-end.mjs new file mode 100644 index 0000000..42109a3 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/effect-virtual-transition-end.mjs @@ -0,0 +1,48 @@ +import { j as elementTransitionEnd } from './utils.mjs'; + +function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } +} + +export { effectVirtualTransitionEnd as e }; diff --git a/src/assets/js/vendor/swiper/shared/get-element-params.min.mjs b/src/assets/js/vendor/swiper/shared/get-element-params.min.mjs new file mode 100644 index 0000000..8a456d3 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/get-element-params.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,i as isObject,c as attrToProp,p as paramsList}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";const formatValue=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let a;try{a=JSON.parse(e)}catch(t){a=e}return a}return e}},modulesParamsList=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function getParams(e,a,t){const r={},n={};extend(r,defaults);const i=[...paramsList,"on"],o=i.map((e=>e.replace(/_/,"")));i.forEach((a=>{a=a.replace("_",""),void 0!==e[a]&&(n[a]=e[a])}));const s=[...e.attributes];return"string"==typeof a&&void 0!==t&&s.push({name:a,value:isObject(t)?{...t}:t}),s.forEach((e=>{const a=modulesParamsList.filter((a=>0===e.name.indexOf(`${a}-`)))[0];if(a){const t=attrToProp(a),r=attrToProp(e.name.split(`${a}-`)[1]);void 0===n[t]&&(n[t]={}),!0===n[t]&&(n[t]={enabled:!0}),n[t][r]=formatValue(e.value)}else{const a=attrToProp(e.name);if(!o.includes(a))return;const t=formatValue(e.value);n[a]&&modulesParamsList.includes(e.name)&&!isObject(t)?(n[a].constructor!==Object&&(n[a]={}),n[a].enabled=!!t):n[a]=t}})),extend(r,n),r.navigation?r.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==r.navigation?r.navigation:{}}:!1===r.navigation&&delete r.navigation,r.scrollbar?r.scrollbar={el:".swiper-scrollbar",...!0!==r.scrollbar?r.scrollbar:{}}:!1===r.scrollbar&&delete r.scrollbar,r.pagination?r.pagination={el:".swiper-pagination",...!0!==r.pagination?r.pagination:{}}:!1===r.pagination&&delete r.pagination,{params:r,passedParams:n}}export{getParams as g}; +//# sourceMappingURL=get-element-params.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/get-element-params.min.mjs.map b/src/assets/js/vendor/swiper/shared/get-element-params.min.mjs.map new file mode 100644 index 0000000..883b699 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/get-element-params.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"get-element-params.mjs.mjs","names":["extend","isObject","attrToProp","paramsList","defaults","formatValue","val","parseFloat","Number","includes","v","JSON","parse","err","modulesParamsList","getParams","element","propName","propValue","params","passedParams","localParamsList","allowedParams","map","key","replace","forEach","paramName","attrsList","attributes","push","name","value","attr","moduleParam","filter","mParam","indexOf","parentObjName","subObjName","split","enabled","constructor","Object","navigation","prevEl","nextEl","scrollbar","el","pagination"],"sources":["0"],"mappings":"YAAcA,YAAaC,cAAeC,gBAAiBC,eAAkB,sCAC/DC,aAAgB,wBAE9B,MAAMC,YAAcC,IAClB,GAAIC,WAAWD,KAASE,OAAOF,GAAM,OAAOE,OAAOF,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,iBAARA,GAAoBA,EAAIG,SAAS,MAAQH,EAAIG,SAAS,MAAQH,EAAIG,SAAS,KAAM,CAC1F,IAAIC,EACJ,IACEA,EAAIC,KAAKC,MAAMN,EACjB,CAAE,MAAOO,GACPH,EAAIJ,CACN,CACA,OAAOI,CACT,CACA,OAAOJ,CAVkC,CAU/B,EAENQ,kBAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,UAAUC,EAASC,EAAUC,GACpC,MAAMC,EAAS,CAAC,EACVC,EAAe,CAAC,EACtBpB,OAAOmB,EAAQf,UACf,MAAMiB,EAAkB,IAAIlB,WAAY,MAClCmB,EAAgBD,EAAgBE,KAAIC,GAAOA,EAAIC,QAAQ,IAAK,MAGlEJ,EAAgBK,SAAQC,IACtBA,EAAYA,EAAUF,QAAQ,IAAK,SACD,IAAvBT,EAAQW,KACjBP,EAAaO,GAAaX,EAAQW,GACpC,IAIF,MAAMC,EAAY,IAAIZ,EAAQa,YA6D9B,MA5DwB,iBAAbZ,QAA8C,IAAdC,GACzCU,EAAUE,KAAK,CACbC,KAAMd,EACNe,MAAO/B,SAASiB,GAAa,IACxBA,GACDA,IAGRU,EAAUF,SAAQO,IAChB,MAAMC,EAAcpB,kBAAkBqB,QAAOC,GAA8C,IAApCH,EAAKF,KAAKM,QAAQ,GAAGD,QAAkB,GAC9F,GAAIF,EAAa,CACf,MAAMI,EAAgBpC,WAAWgC,GAC3BK,EAAarC,WAAW+B,EAAKF,KAAKS,MAAM,GAAGN,MAAgB,SACtB,IAAhCd,EAAakB,KAAgClB,EAAakB,GAAiB,CAAC,IACnD,IAAhClB,EAAakB,KACflB,EAAakB,GAAiB,CAC5BG,SAAS,IAGbrB,EAAakB,GAAeC,GAAclC,YAAY4B,EAAKD,MAC7D,KAAO,CACL,MAAMD,EAAO7B,WAAW+B,EAAKF,MAC7B,IAAKT,EAAcb,SAASsB,GAAO,OACnC,MAAMC,EAAQ3B,YAAY4B,EAAKD,OAC3BZ,EAAaW,IAASjB,kBAAkBL,SAASwB,EAAKF,QAAU9B,SAAS+B,IACvEZ,EAAaW,GAAMW,cAAgBC,SACrCvB,EAAaW,GAAQ,CAAC,GAExBX,EAAaW,GAAMU,UAAYT,GAE/BZ,EAAaW,GAAQC,CAEzB,KAEFhC,OAAOmB,EAAQC,GACXD,EAAOyB,WACTzB,EAAOyB,WAAa,CAClBC,OAAQ,sBACRC,OAAQ,0BACkB,IAAtB3B,EAAOyB,WAAsBzB,EAAOyB,WAAa,CAAC,IAEzB,IAAtBzB,EAAOyB,mBACTzB,EAAOyB,WAEZzB,EAAO4B,UACT5B,EAAO4B,UAAY,CACjBC,GAAI,wBACqB,IAArB7B,EAAO4B,UAAqB5B,EAAO4B,UAAY,CAAC,IAExB,IAArB5B,EAAO4B,kBACT5B,EAAO4B,UAEZ5B,EAAO8B,WACT9B,EAAO8B,WAAa,CAClBD,GAAI,yBACsB,IAAtB7B,EAAO8B,WAAsB9B,EAAO8B,WAAa,CAAC,IAEzB,IAAtB9B,EAAO8B,mBACT9B,EAAO8B,WAET,CACL9B,SACAC,eAEJ,QAESL"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/get-element-params.mjs b/src/assets/js/vendor/swiper/shared/get-element-params.mjs new file mode 100644 index 0000000..eb00b03 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/get-element-params.mjs @@ -0,0 +1,106 @@ +import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; +}; +const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; +function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; +} + +export { getParams as g }; diff --git a/src/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs b/src/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs new file mode 100644 index 0000000..4ee44c8 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs @@ -0,0 +1,2 @@ +function isObject(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((n=>{void 0===e[n]?e[n]=t[n]:isObject(t[n])&&isObject(e[n])&&Object.keys(t[n]).length>0&&extend(e[n],t[n])}))}const ssrDocument={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function getDocument(){const e="undefined"!=typeof document?document:{};return extend(e,ssrDocument),e}const ssrWindow={document:ssrDocument,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function getWindow(){const e="undefined"!=typeof window?window:{};return extend(e,ssrWindow),e}export{getWindow as a,getDocument as g}; +//# sourceMappingURL=ssr-window.esm.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs.map b/src/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs.map new file mode 100644 index 0000000..2a3d646 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/ssr-window.esm.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"ssr-window.esm.mjs.mjs","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window"],"sources":["0"],"mappings":"AAYA,SAASA,SAASC,GAChB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,OAAOC,EAAQC,QACP,IAAXD,IACFA,EAAS,CAAC,QAEA,IAARC,IACFA,EAAM,CAAC,GAETH,OAAOI,KAAKD,GAAKE,SAAQC,SACI,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcT,SAASM,EAAIG,KAAST,SAASK,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GACpJN,OAAOC,EAAOI,GAAMH,EAAIG,GAC1B,GAEJ,CACA,MAAME,YAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChBC,qBAAoB,IACX,KAIbC,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,cACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EAE1D,OADAtC,OAAOqC,EAAK9B,aACL8B,CACT,CACA,MAAME,UAAY,CAChBD,SAAU/B,YACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAvC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBuC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEVC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9B,oBAAAC,CAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,YACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADA/D,OAAO8D,EAAKvB,WACLuB,CACT,QAESD,eAAgBzB"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/ssr-window.esm.mjs b/src/assets/js/vendor/swiper/shared/ssr-window.esm.mjs new file mode 100644 index 0000000..874f0e9 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/ssr-window.esm.mjs @@ -0,0 +1,145 @@ +/** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ +/* eslint-disable no-param-reassign */ +function isObject(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; +} +function extend(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + extend(target[key], src[key]); + } + }); +} +const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } +}; +function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend(doc, ssrDocument); + return doc; +} +const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } +}; +function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend(win, ssrWindow); + return win; +} + +export { getWindow as a, getDocument as g }; diff --git a/src/assets/js/vendor/swiper/shared/swiper-core.min.mjs b/src/assets/js/vendor/swiper/shared/swiper-core.min.mjs new file mode 100644 index 0000000..b67ba34 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/swiper-core.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";import{a as elementParents,m as elementStyle,e as elementChildren,s as setCSSProperty,f as elementOuterSize,o as elementNextAll,p as elementPrevAll,i as getTranslate,q as animateCSSModeScroll,n as nextTick,r as showWarning,c as createElement,d as now,t as extend,g as elementIndex,u as deleteProps}from"./utils.min.mjs";let support,deviceCached,browser;function calcSupport(){const e=getWindow(),t=getDocument();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice(e){let{userAgent:t}=void 0===e?{}:e;const s=getSupport(),i=getWindow(),r=i.navigator.platform,n=t||i.navigator.userAgent,a={ios:!1,android:!1},l=i.screen.width,o=i.screen.height,d=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const p=n.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===r;let m="MacIntel"===r;return!c&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${o}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),m=!1),d&&!h&&(a.os="android",a.android=!0),(c||u||p)&&(a.os="ios",a.ios=!0),a}function getDevice(e){return void 0===e&&(e={}),deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){const e=getWindow();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,i]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&i<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}function getBrowser(){return browser||(browser=calcBrowser()),browser}function Resize(e){let{swiper:t,on:s,emit:i}=e;const r=getWindow();let n=null,a=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},o=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{a=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),n.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",o))})),s("destroy",(()=>{a&&r.cancelAnimationFrame(a),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",o)}))}function Observer(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=[],a=getWindow(),l=function(e,s){void 0===s&&(s={});const i=new(a.MutationObserver||a.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};a.requestAnimationFrame?a.requestAnimationFrame(s):a.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=elementParents(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}var eventsEmitter={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};function updateSize(){const e=this;let t,s;const i=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:i.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:i.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(elementStyle(i,"padding-left")||0,10)-parseInt(elementStyle(i,"padding-right")||0,10),s=s-parseInt(elementStyle(i,"padding-top")||0,10)-parseInt(elementStyle(i,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this;function t(t,s){return parseFloat(t.getPropertyValue(e.getDirectionLabel(s))||0)}const s=e.params,{wrapperEl:i,slidesEl:r,size:n,rtlTranslate:a,wrongRTL:l}=e,o=e.virtual&&s.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=elementChildren(r,`.${e.params.slideClass}, swiper-slide`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=s.slidesOffsetBefore;"function"==typeof f&&(f=s.slidesOffsetBefore.call(e));let v=s.slidesOffsetAfter;"function"==typeof v&&(v=s.slidesOffsetAfter.call(e));const g=e.snapGrid.length,w=e.slidesGrid.length;let S=s.spaceBetween,T=-f,b=0,x=0;if(void 0===n)return;"string"==typeof S&&S.indexOf("%")>=0?S=parseFloat(S.replace("%",""))/100*n:"string"==typeof S&&(S=parseFloat(S)),e.virtualSize=-S,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(setCSSProperty(i,"--swiper-centered-offset-before",""),setCSSProperty(i,"--swiper-centered-offset-after",""));const y=s.grid&&s.grid.rows>1&&e.grid;let E;y?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const C="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-n)}if(o&&s.loop){const t=m[0]+S;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${S}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(S||0)})),e-=S;const t=e-n;u=u.map((e=>e<=0?-f:e>t?t+v:e))}if(s.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(S||0)})),e-=S,e{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){setCSSProperty(i,"--swiper-centered-offset-before",-u[0]+"px"),setCSSProperty(i,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==g&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==w&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}}function updateAutoHeight(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)}function updateSlidesOffset(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&h<=t.size||u<=0&&h>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),m&&i[e].classList.add(s.slideFullyVisibleClass),o.progress=r?-c:c,o.originalProgress=r?-p:p}}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:l}=t;const o=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=l||r>=1,s&&(r=0),l&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=r?(o-r)/a:(o+a-n)/a,l>1&&(l-=1)}Object.assign(t,{progress:r,progressLoop:l,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!o&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(o&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)}function updateSlidesClasses(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,l=e=>elementChildren(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${r}"]`);else a?(o=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):o=t[r];o&&(o.classList.add(s.slideActiveClass),a?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=elementNextAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=elementPrevAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()}const processLazyPreloader=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},unlazy=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},preload=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&unlazy(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&unlazy(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=getActiveIndexByTranslate(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/r.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===n&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&preload(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))}function updateClickedSlide(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;eo?o:i&&ea?"next":n=o.length&&(v=o.length-1);const g=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(u?g>n.translate&&g>n.minTranslate():gn.translate&&g>n.maxTranslate()&&(p||0)!==a)return!1}let w;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(g),w=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return animateCSSModeScroll({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(g),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,w),0===t?n.transitionEnd(s,w):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,w))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0}function slideToLoop(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this,n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let i=r.params.slidesPerView;"auto"===i?i=r.slidesPerViewDynamic():(i=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r}function slideNext(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r)return i;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)}function slidePrev(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:l,enabled:o,animating:d}=i;if(!o)return i;const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?i.translate:-i.translate),h=n.map((e=>p(e)));let m=n[h.indexOf(u)-1];if(void 0===m&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(m=n[e>0?e-1:e])}let f=0;if(void 0!==m&&(f=a.indexOf(m),f<0&&(f=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)}function slideReset(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);return this.slideTo(this.activeIndex,e,t,s)}function slideToClosest(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),l=a+Math.floor((n-a)/r.params.slidesPerGroup),o=r.rtlTranslate?r.translate:-r.translate;if(o>=r.snapGrid[l]){const e=r.snapGrid[l];o-e>(r.snapGrid[l+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[l-1];o-e<=(r.snapGrid[l]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)}function slideToClickedSlide(){const e=this,{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const a=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{elementChildren(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),l=t.slides.length%a!=0,o=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):b=n;const x="next"===i||!i,y="prev"===i||!i;let E=0,C=0;const P=w?Math.ceil(d.length/h.grid.rows):d.length,M=(w?d[n].column:n)+(m&&void 0===r?-f/2+.5:0);if(M=0;t-=1)d[t].column===e&&S.push(t)}else S.push(P-t-1)}}else if(M+f>P-g){C=Math.max(M-(P-2*g),v);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),y&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===h.slidesPerView?o.updateSlides():w&&(S.length>0&&y||T.length>0&&x)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),h.watchSlidesProgress&&o.updateSlidesOffset(),s)if(S.length>0&&y){if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b+E]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b+E,0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(r){const e=w?S.length/h.grid.rows:S.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(T.length>0&&x)if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b-C,0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=w?T.length/h.grid.rows:T.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===h.slidesPerView&&s})}o.emit("loopFix")}function loopDestroy(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))}function unsetGrabCursor(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function closestElement(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===getDocument()||s===getWindow())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}function preventEdgeSwipe(e,t,s){const i=getWindow(),{params:r}=e,n=r.edgeSwipeDetection,a=r.edgeSwipeThreshold;return!n||!(s<=a||s>=i.innerWidth-a)||"prevent"===n&&(t.preventDefault(),!0)}function onTouchStart(e){const t=this,s=getDocument();let i=e;i.originalEvent&&(i=i.originalEvent);const r=t.touchEventsData;if("pointerdown"===i.type){if(null!==r.pointerId&&r.pointerId!==i.pointerId)return;r.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(r.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void preventEdgeSwipe(t,i,i.targetTouches[0].pageX);const{params:n,touches:a,enabled:l}=t;if(!l)return;if(!n.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&n.preventInteractionOnTransition)return;!t.animating&&n.cssMode&&n.loop&&t.loopFix();let o=i.target;if("wrapper"===n.touchEventsTarget&&!t.wrapperEl.contains(o))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(r.isTouched&&r.isMoved)return;const d=!!n.noSwipingClass&&""!==n.noSwipingClass,c=i.composedPath?i.composedPath():i.path;d&&i.target&&i.target.shadowRoot&&c&&(o=c[0]);const p=n.noSwipingSelector?n.noSwipingSelector:`.${n.noSwipingClass}`,u=!(!i.target||!i.target.shadowRoot);if(n.noSwiping&&(u?closestElement(p,o):o.closest(p)))return void(t.allowClick=!0);if(n.swipeHandler&&!o.closest(n.swipeHandler))return;a.currentX=i.pageX,a.currentY=i.pageY;const h=a.currentX,m=a.currentY;if(!preventEdgeSwipe(t,i,h))return;Object.assign(r,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),a.startX=h,a.startY=m,r.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,n.threshold>0&&(r.allowThresholdMove=!1);let f=!0;o.matches(r.focusableElements)&&(f=!1,"SELECT"===o.nodeName&&(r.isTouched=!1)),s.activeElement&&s.activeElement.matches(r.focusableElements)&&s.activeElement!==o&&s.activeElement.blur();const v=f&&t.allowTouchMove&&n.touchStartPreventDefault;!n.touchStartForcePreventDefault&&!v||o.isContentEditable||i.preventDefault(),n.freeMode&&n.freeMode.enabled&&t.freeMode&&t.animating&&!n.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function onTouchMove(e){const t=getDocument(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:a,enabled:l}=s;if(!l)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let o,d=e;if(d.originalEvent&&(d=d.originalEvent),"pointermove"===d.type){if(null!==i.touchId)return;if(d.pointerId!==i.pointerId)return}if("touchmove"===d.type){if(o=[...d.changedTouches].filter((e=>e.identifier===i.touchId))[0],!o||o.identifier!==i.touchId)return}else o=d;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",d));const c=o.pageX,p=o.pageY;if(d.preventedByNestedSwiper)return n.startX=c,void(n.startY=p);if(!s.allowTouchMove)return d.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p}),i.touchStartTime=now()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(pn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(cn.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&d.target===t.activeElement&&d.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",d),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=c,n.currentY=p;const u=n.currentX-n.startX,h=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(u**2+h**2)=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",d),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&d.cancelable&&d.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&d.stopPropagation();let m=s.isHorizontal()?u:h,f=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(m=Math.abs(m)*(a?1:-1),f=Math.abs(f)*(a?1:-1)),n.diff=m,m*=r.touchRatio,a&&(m=-m,f=-f);const v=s.touchesDirection;s.swipeDirection=m>0?"prev":"next",s.touchesDirection=f>0?"prev":"next";const g=s.params.loop&&!r.cssMode,w="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(g&&w&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",d)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&v!==s.touchesDirection&&g&&w&&Math.abs(m)>=1)return Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",d),i.isMoved=!0,i.currentTranslate=m+i.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),m>0?(g&&w&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+m)**T))):m<0&&(g&&w&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(m)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:a,rtlTranslate:l,slidesGrid:o,enabled:d}=t;if(!d)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const c=now(),p=c-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),p<300&&c-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=now(),nextTick((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===a.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let u;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,u=n.followFinger?l?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:u});const h=u>=-t.maxTranslate()&&!t.params.loop;let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=o[e]&&u=o[e])&&(m=e,f=o[o.length-1]-o[o.length-2])}let v=null,g=null;n.rewind&&(t.isBeginning?g=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const w=(u-o[m])/f,S=mn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?v:m+S):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-n.longSwipesRatio?t.slideTo(m+S):null!==g&&w<0&&Math.abs(w)>n.longSwipesRatio?t.slideTo(g):t.slideTo(m))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(m+S):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==v?v:m+S),"prev"===t.swipeDirection&&t.slideTo(null!==g?g:m))}}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function onClick(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function onScroll(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function onLoad(e){const t=this;processLazyPreloader(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function onDocumentTouchStart(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const events=(e,t)=>{const s=getDocument(),{params:i,el:r,wrapperEl:n,device:a}=e,l=!!i.nested,o="on"===t?"addEventListener":"removeEventListener",d=t;s[o]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),r[o]("touchstart",e.onTouchStart,{passive:!1}),r[o]("pointerdown",e.onTouchStart,{passive:!1}),s[o]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[o]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[o]("touchend",e.onTouchEnd,{passive:!0}),s[o]("pointerup",e.onTouchEnd,{passive:!0}),s[o]("pointercancel",e.onTouchEnd,{passive:!0}),s[o]("touchcancel",e.onTouchEnd,{passive:!0}),s[o]("pointerout",e.onTouchEnd,{passive:!0}),s[o]("pointerleave",e.onTouchEnd,{passive:!0}),s[o]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[o]("click",e.onClick,!0),i.cssMode&&n[o]("scroll",e.onScroll),i.updateOnWindowResize?e[d](a.ios||a.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e[d]("observerUpdate",onResize,!0),r[o]("load",e.onLoad,{capture:!0})};function attachEvents(){const e=this,{params:t}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),e.onDocumentTouchStart=onDocumentTouchStart.bind(e),t.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),e.onLoad=onLoad.bind(e),events(e,"on")}function detachEvents(){events(this,"off")}var events$1={attachEvents:attachEvents,detachEvents:detachEvents};const isGridEnabled=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;function setBreakpoint(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const l=(a in n?n[a]:void 0)||e.originalParams,o=isGridEnabled(e,i),d=isGridEnabled(e,l),c=i.enabled;o&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,r=l[t]&&l[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const p=l.direction&&l.direction!==i.direction,u=i.loop&&(l.slidesPerView!==i.slidesPerView||p),h=i.loop;p&&s&&e.changeDirection(),extend(e.params,l);const m=e.params.enabled,f=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),c&&!m?e.disable():!c&&m&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",l),s&&(u?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&f?(e.loopCreate(t),e.updateSlides()):h&&!f&&e.loopDestroy()),e.emit("breakpoint",l)}function getBreakpoint(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=getWindow(),n="window"===t?r.innerHeight:s.clientHeight,a=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));a.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=prepareClasses(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()}function removeClasses(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}var classes={addClasses:addClasses,removeClasses:removeClasses};function checkOverflow(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:i}=s;if(i){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*i;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function moduleExtendParams(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),extend(t,s)):extend(t,s)):extend(t,s)}}const prototypes={eventsEmitter:eventsEmitter,update:update,translate:translate,transition:transition,slide:slide,loop:loop,grabCursor:grabCursor,events:events$1,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes},extendedDefaults={};class Swiper{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=extend({},t,{el:s});e.push(new Swiper(i))})),e}const a=this;a.__swiper__=!0,a.support=getSupport(),a.device=getDevice({userAgent:t.userAgent}),a.browser=getBrowser(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],t.modules&&Array.isArray(t.modules)&&a.modules.push(...t.modules);const l={};a.modules.forEach((e=>{e({params:t,swiper:a,extendParams:moduleExtendParams(t,l),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})}));const o=extend({},defaults,l);return a.params=extend({},o,extendedDefaults,t),a.originalParams=extend({},a.params),a.passedParams=extend({},t),a.params&&a.params.on&&Object.keys(a.params.on).forEach((e=>{a.on(e,a.params.on[e])})),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===a.params.direction,isVertical:()=>"vertical"===a.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=elementChildren(t,`.${s.slideClass}, swiper-slide`),r=elementIndex(i[0]);return elementIndex(e)-r}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=elementChildren(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?i[l].swiperSlideSize:0;for(let s=l+1;sa&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>a&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){r[l]-r[e]{t.complete&&processLazyPreloader(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return elementChildren(s,i())[0]})();return!r&&t.params.createElements&&(r=createElement("div",t.params.wrapperClass),s.append(r),elementChildren(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction")),wrongRTL:"-webkit-box"===elementStyle(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?processLazyPreloader(t,e):e.addEventListener("load",(e=>{processLazyPreloader(t,e.target)}))})),preload(t),t.initialized=!0,preload(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttribute("style"),n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,deleteProps(s)),s.destroyed=!0),null}static extendDefaults(e){extend(extendedDefaults,e)}static get extendedDefaults(){return extendedDefaults}static get defaults(){return defaults}static installModule(e){Swiper.prototype.__modules__||(Swiper.prototype.__modules__=[]);const t=Swiper.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Swiper.installModule(e))),Swiper):(Swiper.installModule(e),Swiper)}}Object.keys(prototypes).forEach((e=>{Object.keys(prototypes[e]).forEach((t=>{Swiper.prototype[t]=prototypes[e][t]}))})),Swiper.use([Resize,Observer]);export{Swiper as S,defaults as d}; +//# sourceMappingURL=swiper-core.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/swiper-core.min.mjs.map b/src/assets/js/vendor/swiper/shared/swiper-core.min.mjs.map new file mode 100644 index 0000000..7a44a6f --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/swiper-core.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-core.mjs.mjs","names":["getWindow","getDocument","elementParents","elementStyle","elementChildren","setCSSProperty","elementOuterSize","elementNextAll","elementPrevAll","getTranslate","animateCSSModeScroll","nextTick","showWarning","createElement","now","extend","elementIndex","deleteProps","support","deviceCached","browser","calcSupport","window","document","smoothScroll","documentElement","style","touch","DocumentTouch","getSupport","calcDevice","_temp","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","indexOf","os","getDevice","overrides","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","split","map","num","Number","isWebView","test","getBrowser","Resize","_ref","swiper","on","emit","observer","animationFrame","resizeHandler","destroyed","initialized","orientationChangeHandler","params","resizeObserver","ResizeObserver","entries","requestAnimationFrame","newWidth","newHeight","forEach","_ref2","contentBoxSize","contentRect","target","el","inlineSize","blockSize","observe","addEventListener","cancelAnimationFrame","unobserve","removeEventListener","Observer","extendParams","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","length","observerUpdate","setTimeout","attributes","childList","characterData","push","observeParents","observeSlideChildren","containerParents","hostEl","i","wrapperEl","disconnect","splice","eventsEmitter","events","handler","priority","self","this","eventsListeners","method","event","once","onceHandler","off","__emitterProxy","_len","arguments","args","Array","_key","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","_len2","_key2","isArray","slice","unshift","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","Object","assign","size","updateSlides","getDirectionPropertyValue","node","label","parseFloat","getPropertyValue","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","call","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","replace","virtualSize","slideEl","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slidesPerView","breakpoints","keys","filter","key","slide","updateSlide","slideStyles","getComputedStyle","currentTransform","transform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","offsetWidth","Math","floor","swiperSlideSize","abs","slidesPerGroup","min","slidesPerGroupSkip","max","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","loop","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","classList","contains","maxBackfaceHiddenSlides","add","remove","updateAutoHeight","speed","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","isElement","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","progress","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","selector","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","column","emitSlidesClasses","processLazyPreloader","imageEl","closest","lazyEl","querySelector","lazyPreloaderClass","shadowRoot","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","len","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","matches","slideFound","clickedSlide","undefined","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","axis","virtualTranslate","currentTranslate","setTranslate","byController","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","targetPosition","side","scrollTo","behavior","onTranslateToWrapperTransitionEnd","e","duration","transitionDuration","transitionDelay","transitionEmit","direction","step","dir","transitionStart","transitionEnd","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","scrollSnapType","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","setAttribute","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","c","constructor","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","host","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","pointerType","targetEl","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","nodeName","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","PI","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","CustomEvent","bubbles","dispatchEvent","allowMomentumBounce","Date","getTime","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","clearTimeout","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","prop","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","a","b","matchMedia","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","autoheight","centered","removeClasses","classes","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","init","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","obj","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","prototype","toString","querySelectorAll","swipers","newParams","__swiper__","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","current","cls","className","join","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","element","mounted","parentNode","getWrapperSelector","trim","getWrapper","slideSlots","lazyElements","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/swiper-core.mjs b/src/assets/js/vendor/swiper/shared/swiper-core.mjs new file mode 100644 index 0000000..8bf1e07 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/swiper-core.mjs @@ -0,0 +1,3880 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; +import { a as elementParents, m as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, o as elementNextAll, p as elementPrevAll, i as getTranslate, q as animateCSSModeScroll, n as nextTick, r as showWarning, c as createElement, d as now, t as extend, g as elementIndex, u as deleteProps } from './utils.mjs'; + +let support; +function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; +} +function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; +} + +let deviceCached; +function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; +} +function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; +} + +let browser; +function calcBrowser() { + const window = getWindow(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + return { + isSafari: needPerspectiveFix || isSafari(), + needPerspectiveFix, + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; +} +function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; +} + +function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); +} + +function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); +} + +/* eslint-disable no-underscore-dangle */ + +var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } +}; + +function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); +} + +function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } +} + +function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; +} + +function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } +} + +function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } +} + +function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); +} + +function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); +} + +const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } +}; +const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); +}; +const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } +}; + +function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; +} +function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } +} + +function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide +}; + +function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; +} + +function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate() { + return -this.snapGrid[0]; +} + +function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; +} + +function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; +} + +var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo +}; + +function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); +} + +function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } +} + +function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); +} + +function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); +} + +var transition = { + setTransition, + transitionStart, + transitionEnd +}; + +function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; +} + +function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; +} + +/* eslint no-unused-vars: "off" */ +function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide +}; + +function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); +} + +function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + slidesPrepended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); +} + +function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy +}; + +function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor +}; + +// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd +function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); +} +function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; +} +function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); +} + +function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); +} + +function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); +} + +function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } +} + +const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); +}; +function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); +} +function detachEvents() { + const swiper = this; + events(swiper, 'off'); +} +var events$1 = { + attachEvents, + detachEvents +}; + +const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; +}; +function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); +} + +function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} + +var breakpoints = { + setBreakpoint, + getBreakpoint +}; + +function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; +} +function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); +} + +function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); +} + +var classes = { + addClasses, + removeClasses +}; + +function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } +} +var checkOverflow$1 = { + checkOverflow +}; + +var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false +}; + +function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; +} + +/* eslint no-param-reassign: "off" */ +const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes +}; +const extendedDefaults = {}; +class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } +} +Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); +}); +Swiper.use([Resize, Observer]); + +export { Swiper as S, defaults as d }; diff --git a/src/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs b/src/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs new file mode 100644 index 0000000..54c8e04 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,p as paramsList,i as isObject,n as needsNavigation,a as needsPagination,b as needsScrollbar}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";function getParams(a,e){void 0===a&&(a={}),void 0===e&&(e=!0);const s={on:{}},n={},t={};extend(s,defaults),s._emitClasses=!0,s.init=!1;const r={},i=paramsList.map((a=>a.replace(/_/,""))),l=Object.assign({},a);return Object.keys(l).forEach((l=>{void 0!==a[l]&&(i.indexOf(l)>=0?isObject(a[l])?(s[l]={},t[l]={},extend(s[l],a[l]),extend(t[l],a[l])):(s[l]=a[l],t[l]=a[l]):0===l.search(/on[A-Z]/)&&"function"==typeof a[l]?e?n[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:s.on[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:r[l]=a[l])})),["navigation","pagination","scrollbar"].forEach((a=>{!0===s[a]&&(s[a]={}),!1===s[a]&&delete s[a]})),{params:s,passedParams:t,rest:r,events:n}}function mountSwiper(a,e){let{el:s,nextEl:n,prevEl:t,paginationEl:r,scrollbarEl:i,swiper:l}=a;needsNavigation(e)&&n&&t&&(l.params.navigation.nextEl=n,l.originalParams.navigation.nextEl=n,l.params.navigation.prevEl=t,l.originalParams.navigation.prevEl=t),needsPagination(e)&&r&&(l.params.pagination.el=r,l.originalParams.pagination.el=r),needsScrollbar(e)&&i&&(l.params.scrollbar.el=i,l.originalParams.scrollbar.el=i),l.init(s)}function getChangedParams(a,e,s,n,t){const r=[];if(!e)return r;const i=a=>{r.indexOf(a)<0&&r.push(a)};if(s&&n){const a=n.map(t),e=s.map(t);a.join("")!==e.join("")&&i("children"),n.length!==s.length&&i("children")}return paramsList.filter((a=>"_"===a[0])).map((a=>a.replace(/_/,""))).forEach((s=>{if(s in a&&s in e)if(isObject(a[s])&&isObject(e[s])){const n=Object.keys(a[s]),t=Object.keys(e[s]);n.length!==t.length?i(s):(n.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})),t.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})))}else a[s]!==e[s]&&i(s)})),r}const updateOnVirtualData=a=>{!a||a.destroyed||!a.params.virtual||a.params.virtual&&!a.params.virtual.enabled||(a.updateSlides(),a.updateProgress(),a.updateSlidesClasses(),a.parallax&&a.params.parallax&&a.params.parallax.enabled&&a.parallax.setTranslate())};export{getChangedParams as a,getParams as g,mountSwiper as m,updateOnVirtualData as u}; +//# sourceMappingURL=update-on-virtual-data.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs.map b/src/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs.map new file mode 100644 index 0000000..88b07d2 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/update-on-virtual-data.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-on-virtual-data.mjs.mjs","names":["extend","paramsList","isObject","needsNavigation","needsPagination","needsScrollbar","defaults","getParams","obj","splitEvents","params","on","events","passedParams","_emitClasses","init","rest","allowedParams","map","key","replace","plainObj","Object","assign","keys","forEach","indexOf","search","toLowerCase","substr","mountSwiper","_ref","swiperParams","el","nextEl","prevEl","paginationEl","scrollbarEl","swiper","navigation","originalParams","pagination","scrollbar","getChangedParams","oldParams","children","oldChildren","getKey","addKey","push","oldChildrenKeys","childrenKeys","join","length","filter","newKeys","oldKeys","newKey","oldKey","updateOnVirtualData","destroyed","virtual","enabled","updateSlides","updateProgress","updateSlidesClasses","parallax","setTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/update-on-virtual-data.mjs b/src/assets/js/vendor/swiper/shared/update-on-virtual-data.mjs new file mode 100644 index 0000000..0fc3050 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/update-on-virtual-data.mjs @@ -0,0 +1,130 @@ +import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +function getParams(obj, splitEvents) { + if (obj === void 0) { + obj = {}; + } + if (splitEvents === void 0) { + splitEvents = true; + } + const params = { + on: {} + }; + const events = {}; + const passedParams = {}; + extend(params, defaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map(key => key.replace(/_/, '')); + const plainObj = Object.assign({}, obj); + Object.keys(plainObj).forEach(key => { + if (typeof obj[key] === 'undefined') return; + if (allowedParams.indexOf(key) >= 0) { + if (isObject(obj[key])) { + params[key] = {}; + passedParams[key] = {}; + extend(params[key], obj[key]); + extend(passedParams[key], obj[key]); + } else { + params[key] = obj[key]; + passedParams[key] = obj[key]; + } + } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + if (splitEvents) { + events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } else { + params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } + } else { + rest[key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach(key => { + if (params[key] === true) params[key] = {}; + if (params[key] === false) delete params[key]; + }); + return { + params, + passedParams, + rest, + events + }; +} + +function mountSwiper(_ref, swiperParams) { + let { + el, + nextEl, + prevEl, + paginationEl, + scrollbarEl, + swiper + } = _ref; + if (needsNavigation(swiperParams) && nextEl && prevEl) { + swiper.params.navigation.nextEl = nextEl; + swiper.originalParams.navigation.nextEl = nextEl; + swiper.params.navigation.prevEl = prevEl; + swiper.originalParams.navigation.prevEl = prevEl; + } + if (needsPagination(swiperParams) && paginationEl) { + swiper.params.pagination.el = paginationEl; + swiper.originalParams.pagination.el = paginationEl; + } + if (needsScrollbar(swiperParams) && scrollbarEl) { + swiper.params.scrollbar.el = scrollbarEl; + swiper.originalParams.scrollbar.el = scrollbarEl; + } + swiper.init(el); +} + +function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) { + const keys = []; + if (!oldParams) return keys; + const addKey = key => { + if (keys.indexOf(key) < 0) keys.push(key); + }; + if (children && oldChildren) { + const oldChildrenKeys = oldChildren.map(getKey); + const childrenKeys = children.map(getKey); + if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children'); + if (oldChildren.length !== children.length) addKey('children'); + } + const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, '')); + watchParams.forEach(key => { + if (key in swiperParams && key in oldParams) { + if (isObject(swiperParams[key]) && isObject(oldParams[key])) { + const newKeys = Object.keys(swiperParams[key]); + const oldKeys = Object.keys(oldParams[key]); + if (newKeys.length !== oldKeys.length) { + addKey(key); + } else { + newKeys.forEach(newKey => { + if (swiperParams[key][newKey] !== oldParams[key][newKey]) { + addKey(key); + } + }); + oldKeys.forEach(oldKey => { + if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key); + }); + } + } else if (swiperParams[key] !== oldParams[key]) { + addKey(key); + } + } + }); + return keys; +} + +const updateOnVirtualData = swiper => { + if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { + swiper.parallax.setTranslate(); + } +}; + +export { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u }; diff --git a/src/assets/js/vendor/swiper/shared/update-swiper.min.mjs b/src/assets/js/vendor/swiper/shared/update-swiper.min.mjs new file mode 100644 index 0000000..b61cade --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/update-swiper.min.mjs @@ -0,0 +1,2 @@ +const paramsList=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function extend(e,t){const i=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>i.indexOf(e)<0)).forEach((i=>{void 0===e[i]?e[i]=t[i]:isObject(t[i])&&isObject(e[i])&&Object.keys(t[i]).length>0?t[i].__swiper__?e[i]=t[i]:extend(e[i],t[i]):e[i]=t[i]}))}function needsNavigation(e){return void 0===e&&(e={}),e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}function needsPagination(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}function needsScrollbar(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}function uniqueClasses(e){void 0===e&&(e="");const t=e.split(" ").map((e=>e.trim())).filter((e=>!!e)),i=[];return t.forEach((e=>{i.indexOf(e)<0&&i.push(e)})),i.join(" ")}function attrToProp(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}function wrapperClass(e){return void 0===e&&(e=""),e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}function updateSwiper(e){let{swiper:t,slides:i,passedParams:l,changedParams:n,nextEl:o,prevEl:r,scrollbarEl:a,paginationEl:s}=e;const d=n.filter((e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:v,virtual:g,thumbs:b}=t;let f,_,w,h,S,E,m,C;n.includes("thumbs")&&l.thumbs&&l.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(f=!0),n.includes("controller")&&l.controller&&l.controller.control&&c.controller&&!c.controller.control&&(_=!0),n.includes("pagination")&&l.pagination&&(l.pagination.el||s)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),n.includes("scrollbar")&&l.scrollbar&&(l.scrollbar.el||a)&&(c.scrollbar||!1===c.scrollbar)&&v&&!v.el&&(h=!0),n.includes("navigation")&&l.navigation&&(l.navigation.prevEl||r)&&(l.navigation.nextEl||o)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const x=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};if(n.includes("loop")&&t.isElement&&(c.loop&&!l.loop?E=!0:!c.loop&&l.loop?m=!0:C=!0),d.forEach((e=>{if(isObject(c[e])&&isObject(l[e]))Object.assign(c[e],l[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in l[e])||l[e].enabled||x(e);else{const t=l[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=l[e]:!1===t&&x(e)}})),d.includes("controller")&&!_&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),n.includes("children")&&i&&g&&c.virtual.enabled?(g.slides=i,g.update(!0)):n.includes("virtual")&&g&&c.virtual.enabled&&(i&&(g.slides=i),g.update(!0)),n.includes("children")&&i&&c.loop&&(C=!0),f){b.init()&&b.update(!0)}_&&(t.controller.control=c.controller.control),w&&(!t.isElement||s&&"string"!=typeof s||(s=document.createElement("div"),s.classList.add("swiper-pagination"),s.part.add("pagination"),t.el.appendChild(s)),s&&(c.pagination.el=s),p.init(),p.render(),p.update()),h&&(!t.isElement||a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-scrollbar"),a.part.add("scrollbar"),t.el.appendChild(a)),a&&(c.scrollbar.el=a),v.init(),v.updateSize(),v.setTranslate()),S&&(t.isElement&&(o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-button-next"),o.innerHTML=t.hostEl.constructor.nextButtonSvg,o.part.add("button-next"),t.el.appendChild(o)),r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-prev"),r.innerHTML=t.hostEl.constructor.prevButtonSvg,r.part.add("button-prev"),t.el.appendChild(r))),o&&(c.navigation.nextEl=o),r&&(c.navigation.prevEl=r),u.init(),u.update()),n.includes("allowSlideNext")&&(t.allowSlideNext=l.allowSlideNext),n.includes("allowSlidePrev")&&(t.allowSlidePrev=l.allowSlidePrev),n.includes("direction")&&t.changeDirection(l.direction,!1),(E||C)&&t.loopDestroy(),(m||C)&&t.loopCreate(),t.update()}export{needsPagination as a,needsScrollbar as b,attrToProp as c,uniqueClasses as d,extend as e,isObject as i,needsNavigation as n,paramsList as p,updateSwiper as u,wrapperClass as w}; +//# sourceMappingURL=update-swiper.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/update-swiper.min.mjs.map b/src/assets/js/vendor/swiper/shared/update-swiper.min.mjs.map new file mode 100644 index 0000000..f2edef9 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/update-swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-swiper.mjs.mjs","names":["paramsList","isObject","o","constructor","Object","prototype","toString","call","slice","__swiper__","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","needsNavigation","params","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classNames","classes","split","map","c","trim","unique","push","join","attrToProp","attrName","replace","l","toUpperCase","wrapperClass","className","includes","updateSwiper","_ref","swiper","slides","passedParams","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","virtual","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","controller","control","destroyModule","mod","destroy","isElement","remove","undefined","loop","assign","enabled","newValue","update","init","document","createElement","classList","add","part","appendChild","render","updateSize","setTranslate","innerHTML","hostEl","nextButtonSvg","prevButtonSvg","allowSlideNext","allowSlidePrev","changeDirection","direction","loopDestroy","loopCreate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/update-swiper.mjs b/src/assets/js/vendor/swiper/shared/update-swiper.mjs new file mode 100644 index 0000000..da63c81 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/update-swiper.mjs @@ -0,0 +1,236 @@ +/* underscore in name -> watch for changes */ +const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', +// modules +'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; +} +function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); +} +function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; +} +function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; +} +function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; +} +function uniqueClasses(classNames) { + if (classNames === void 0) { + classNames = ''; + } + const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c); + const unique = []; + classes.forEach(c => { + if (unique.indexOf(c) < 0) unique.push(c); + }); + return unique.join(' '); +} +function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); +} +function wrapperClass(className) { + if (className === void 0) { + className = ''; + } + if (!className) return 'swiper-wrapper'; + if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`; + return className; +} + +function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); +} + +export { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w }; diff --git a/src/assets/js/vendor/swiper/shared/utils.min.mjs b/src/assets/js/vendor/swiper/shared/utils.min.mjs new file mode 100644 index 0000000..83dd858 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/utils.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";function classesToTokens(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function deleteProps(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}function nextTick(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function now(){return Date.now()}function getComputedStyle(e){const t=getWindow();let n;return t.getComputedStyle&&(n=t.getComputedStyle(e,null)),!n&&e.currentStyle&&(n=e.currentStyle),n||(n=e.style),n}function getTranslate(e,t){void 0===t&&(t="x");const n=getWindow();let r,o,l;const s=getComputedStyle(e);return n.WebKitCSSMatrix?(o=s.transform||s.webkitTransform,o.split(",").length>6&&(o=o.split(", ").map((e=>e.replace(",","."))).join(", ")),l=new n.WebKitCSSMatrix("none"===o?"":o)):(l=s.MozTransform||s.OTransform||s.MsTransform||s.msTransform||s.transform||s.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),r=l.toString().split(",")),"x"===t&&(o=n.WebKitCSSMatrix?l.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(o=n.WebKitCSSMatrix?l.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),o||0}function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function isNode(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function extend(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let n=1;nt.indexOf(e)<0));for(let t=0,o=n.length;tl?"next":"prev",m=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{s=(new Date).getTime(),null===i&&(i=s);const e=Math.max(Math.min((s-i)/a,1),0),c=.5-Math.cos(e*Math.PI)/2;let p=l+c*(n-l);if(m(p,n)&&(p=n),t.wrapperEl.scrollTo({[r]:p}),m(p,n))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[r]:p})})),void o.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=o.requestAnimationFrame(u)};u()}function getSlideTransformEl(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function elementChildren(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function showWarning(e){try{return void console.warn(e)}catch(e){}}function createElement(e,t){void 0===t&&(t=[]);const n=document.createElement(e);return n.classList.add(...Array.isArray(t)?t:classesToTokens(t)),n}function elementOffset(e){const t=getWindow(),n=getDocument(),r=e.getBoundingClientRect(),o=n.body,l=e.clientTop||o.clientTop||0,s=e.clientLeft||o.clientLeft||0,i=e===t?t.scrollY:e.scrollTop,a=e===t?t.scrollX:e.scrollLeft;return{top:r.top+i-l,left:r.left+a-s}}function elementPrevAll(e,t){const n=[];for(;e.previousElementSibling;){const r=e.previousElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementNextAll(e,t){const n=[];for(;e.nextElementSibling;){const r=e.nextElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementStyle(e,t){return getWindow().getComputedStyle(e,null).getPropertyValue(t)}function elementIndex(e){let t,n=e;if(n){for(t=0;null!==(n=n.previousSibling);)1===n.nodeType&&(t+=1);return t}}function elementParents(e,t){const n=[];let r=e.parentElement;for(;r;)t?r.matches(t)&&n.push(r):n.push(r),r=r.parentElement;return n}function elementTransitionEnd(e,t){t&&e.addEventListener("transitionend",(function n(r){r.target===e&&(t.call(e,r),e.removeEventListener("transitionend",n))}))}function elementOuterSize(e,t,n){const r=getWindow();return n?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}export{elementParents as a,elementOffset as b,createElement as c,now as d,elementChildren as e,elementOuterSize as f,elementIndex as g,classesToTokens as h,getTranslate as i,elementTransitionEnd as j,isObject as k,getSlideTransformEl as l,elementStyle as m,nextTick as n,elementNextAll as o,elementPrevAll as p,animateCSSModeScroll as q,showWarning as r,setCSSProperty as s,extend as t,deleteProps as u}; +//# sourceMappingURL=utils.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/utils.min.mjs.map b/src/assets/js/vendor/swiper/shared/utils.min.mjs.map new file mode 100644 index 0000000..f6717ed --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.mjs.mjs","names":["getWindow","getDocument","classesToTokens","classes","trim","split","filter","c","deleteProps","obj","object","Object","keys","forEach","key","e","nextTick","callback","delay","setTimeout","now","Date","getComputedStyle","el","window","style","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","transform","webkitTransform","length","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","parseFloat","m42","isObject","o","constructor","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend","to","arguments","undefined","noExtend","i","nextSource","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","current","target","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSlideTransformEl","slideEl","querySelector","shadowRoot","elementChildren","element","selector","children","matches","showWarning","text","console","warn","err","createElement","tag","document","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","push","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","addEventListener","fireCallBack","removeEventListener","elementOuterSize","size","includeMargins","offsetWidth"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/shared/utils.mjs b/src/assets/js/vendor/swiper/shared/utils.mjs new file mode 100644 index 0000000..0689d83 --- /dev/null +++ b/src/assets/js/vendor/swiper/shared/utils.mjs @@ -0,0 +1,289 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; + +function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); +} + +function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); +} +function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); +} +function now() { + return Date.now(); +} +function getComputedStyle(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; +} +function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; +} +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; +} +function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); +} +function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; +} +function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); +} +function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); +} +function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; +} +function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); +} +function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } +} +function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; +} +function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; +} +function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; +} +function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; +} +function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); +} +function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; +} +function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; +} +function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } +} +function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; +} + +export { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, classesToTokens as h, getTranslate as i, elementTransitionEnd as j, isObject as k, getSlideTransformEl as l, elementStyle as m, nextTick as n, elementNextAll as o, elementPrevAll as p, animateCSSModeScroll as q, showWarning as r, setCSSProperty as s, extend as t, deleteProps as u }; diff --git a/src/assets/js/vendor/swiper/swiper-bundle.css b/src/assets/js/vendor/swiper/swiper-bundle.css new file mode 100644 index 0000000..cd5a440 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-bundle.css @@ -0,0 +1,735 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/src/assets/js/vendor/swiper/swiper-bundle.js b/src/assets/js/vendor/swiper/swiper-bundle.js new file mode 100644 index 0000000..e0763d5 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-bundle.js @@ -0,0 +1,9538 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + return { + isSafari: needPerspectiveFix || isSafari(), + needPerspectiveFix, + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + slidesPrepended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop + } = swiper.params; + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !gesture.slideEl) return; + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth; + image.height = gesture.imageEl.offsetHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth; + imageHeight = gesture.imageEl.offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElement = document.querySelector(swiper.params.controller.control); + if (controlElement && controlElement.swiper) { + swiper.controller.control = controlElement.swiper; + } else if (controlElement) { + const onControllerSwiper = e => { + swiper.controller.control = e.detail[0]; + swiper.update(); + controlElement.removeEventListener('init', onControllerSwiper); + }; + controlElement.addEventListener('init', onControllerSwiper); + } + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = () => { + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const handleFocus = e => { + if (swiper.a11y.clicked) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener('init', onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener('init', onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + if (swiper.browser && swiper.browser.isSafari && Math.abs(wrapperRotate) / 90 % 2 === 1) { + wrapperRotate += 0.001; + } + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + if (swiper.browser && swiper.browser.isSafari && Math.abs(val) / 90 % 2 === 1) { + val += 0.001; + } + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + return Swiper; + +})(); diff --git a/src/assets/js/vendor/swiper/swiper-bundle.min.css b/src/assets/js/vendor/swiper/swiper-bundle.min.css new file mode 100644 index 0000000..519ed77 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-bundle.min.js b/src/assets/js/vendor/swiper/swiper-bundle.min.js new file mode 100644 index 0000000..436b921 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function c(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function p(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let a=1;at.indexOf(e)<0));for(let t=0,a=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function E(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function x(e,t){t&&e.addEventListener("transitionend",(function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let T,M,C;function P(){return T||(T=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),T}function L(e){return void 0===e&&(e={}),M||(M=function(e){let{userAgent:t}=void 0===e?{}:e;const s=P(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),M}function A(){return C||(C=function(){const e=r();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,a]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&a<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),C}var I={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};const z=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},$=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},k=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=i,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+a+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&$(e,s)}))}const r=i+a-1;if(e.params.rewind||e.params.loop)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;(tr)&&$(e,t)}else for(let a=Math.max(i-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&(a>r||a=0?x=parseFloat(x.replace("%",""))/100*r:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(a,"--swiper-centered-offset-before",""),u(a,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const A="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let a=0;a1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const a=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),i=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(x||0)})),e-=x,e{m[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(a,"--swiper-centered-offset-before",-m[0]+"px"),u(a,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==E&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,a=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?a||e.el.classList.add(t):a&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&m<=t.size||u<=0&&m>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),a[e].classList.add(s.slideVisibleClass)),h&&a[e].classList.add(s.slideFullyVisibleClass),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${i}"]`);else n?(o=t.filter((e=>e.column===i))[0],c=t.filter((e=>e.column===i+1))[0],d=t.filter((e=>e.column===i-1))[0]):o=t[i];o&&(o.classList.add(s.slideActiveClass),n?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e=t[e]&&a=t[e]&&a=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&i.grid&&i.grid.rows>1;let u;if(t.virtual&&i.virtual.enabled&&i.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/i.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&k(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,a=s.params;let i=e.closest(`.${a.slideClass}, swiper-slide`);!i&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!i&&e.matches&&e.matches(`.${a.slideClass}, swiper-slide`)&&(i=e)}));let r,n=!1;if(i)for(let e=0;eo?o:a&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const i=this,r=i.grid&&i.params.grid&&i.params.grid.rows>1;let n=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)n+=i.virtual.slidesBefore;else{let e;if(r){const t=n*i.params.grid.rows;e=i.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=i.getSlideIndexByData(n);const t=r?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:s}=i.params;let a=i.params.slidesPerView;"auto"===a?a=i.slidesPerViewDynamic():(a=Math.ceil(parseFloat(i.params.slidesPerView,10)),s&&a%2==0&&(a+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=i.getSlideIndexByData(n)}return requestAnimationFrame((()=>{i.slideTo(n,t,s,a)})),i},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{enabled:i,params:r,animating:n}=a;if(!i)return a;let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex{a.slideTo(a.activeIndex+o,e,t,s)})),!0}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o)return a;const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map((e=>p(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&i.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(f=f-a.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return i.loop&&0===a.activeIndex&&i.cssMode?(requestAnimationFrame((()=>{a.slideTo(f,e,t,s)})),!0):a.slideTo(f,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var H={loopCreate:function(e){const t=this,{params:s,slidesEl:a}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const i=()=>{f(a,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let a=0;a1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):x=r;const S="next"===a||!a,T="prev"===a||!a;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===i?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&E.push(s)})):E.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&E.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||E.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x+M,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(i){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(E.length>0&&S)if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x-C,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?E.length/m.grid.rows:E.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:a,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),a.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function N(e,t,s){const a=r(),{params:i}=e,n=i.edgeSwipeDetection,l=i.edgeSwipeThreshold;return!n||!(s<=l||s>=a.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function Y(e){const t=this,s=a();let i=e;i.originalEvent&&(i=i.originalEvent);const n=t.touchEventsData;if("pointerdown"===i.type){if(null!==n.pointerId&&n.pointerId!==i.pointerId)return;n.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(n.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void N(t,i,i.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=i.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(p))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=i.composedPath?i.composedPath():i.path;u&&i.target&&i.target.shadowRoot&&m&&(p=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!i.target||!i.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=i.pageX,d.currentY=i.pageY;const g=d.currentX,v=d.currentY;if(!N(t,i,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;p.matches(n.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||i.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function B(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==i.touchId)return;if(p.pointerId!==i.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===i.touchId))[0],!c||c.identifier!==i.touchId)return}else c=p;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,m=c.pageY;if(p.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return p.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),i.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",p),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",p),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&p.cancelable&&p.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&p.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",p),i.isMoved=!0,i.currentTranslate=g+i.startTranslate;let E=!0,x=r.resistanceRatio;if(r.touchReleaseOnEdges&&(x=0),g>0?(b&&y&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(E=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+g)**x))):g<0&&(b&&y&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function R(e){const t=this,s=t.touchEventsData;let a,i=e;i.originalEvent&&(i=i.originalEvent);if("touchend"===i.type||"touchcancel"===i.type){if(a=[...i.changedTouches].filter((e=>e.identifier===s.touchId))[0],!a||a.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(i.pointerId!==s.pointerId)return;a=i}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(i.type)){if(!(["pointercancel","contextmenu"].includes(i.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!r.simulateTouch&&"mouse"===i.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",i),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=i.path||i.composedPath&&i.composedPath();t.updateClickedSlide(e&&e[0]||i.target,e),t.emit("tap click",i),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",i)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-c[g])/v,E=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+E):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+E):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(i.target===t.navigation.nextEl||i.target===t.navigation.prevEl)?i.target===t.navigation.nextEl?t.slideTo(g+E):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+E),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function q(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function V(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function _(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function F(e){const t=this;z(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function j(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const W=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",q,!0):e[c]("observerUpdate",q,!0),r[d]("load",e.onLoad,{capture:!0})};const U=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var K={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Z(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(!0===e[a]&&(e[a]={enabled:!0}),"navigation"===a&&e[a]&&e[a].enabled&&!e[a].prevEl&&!e[a].nextEl&&(e[a].auto=!0),["pagination","scrollbar"].indexOf(a)>=0&&e[a]&&e[a].enabled&&!e[a].el&&(e[a].auto=!0),a in e&&"enabled"in i?("object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),p(t,s)):p(t,s)):p(t,s)}}const Q={eventsEmitter:I,update:O,translate:D,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),G({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),G({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:X,loop:H,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=Y.bind(e),e.onTouchMove=B.bind(e),e.onTouchEnd=R.bind(e),e.onDocumentTouchStart=j.bind(e),t.cssMode&&(e.onScroll=_.bind(e)),e.onClick=V.bind(e),e.onLoad=F.bind(e),W(e,"on")},detachEvents:function(){W(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:i}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=U(e,a),d=U(e,l),c=a.enabled;o&&!d?(i.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(i.classList.add(`${a.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===a.grid.fill)&&i.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=a[t]&&a[t].enabled,i=l[t]&&l[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()}));const u=l.direction&&l.direction!==a.direction,m=a.loop&&(l.slidesPerView!==a.slidesPerView||u),h=a.loop;u&&s&&e.changeDirection(),p(e.params,l);const f=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),c&&!f?e.disable():!c&&f&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&g?(e.loopCreate(t),e.updateSlides()):h&&!g&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},J={};class ee{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const a=p({},t,{el:s});e.push(new ee(a))})),e}const l=this;l.__swiper__=!0,l.support=P(),l.device=L({userAgent:t.userAgent}),l.browser=A(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:Z(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=p({},K,o);return l.params=p({},d,J,t),l.originalParams=p({},l.params),l.passedParams=p({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=a[l]?a[l].swiperSlideSize:0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]{t.complete&&z(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)a(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||a()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(a())}return f(s,a())[0]})();return!i&&t.params.createElements&&(i=v("div",t.params.wrapperClass),s.append(i),f(s,`.${t.params.slideClass}`).forEach((e=>{i.append(e)}))),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:i,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?z(t,e):e.addEventListener("load",(e=>{z(t,e.target)}))})),k(t),t.initialized=!0,k(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,el:i,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttribute("style"),r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(a.slideVisibleClass,a.slideFullyVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){p(J,e)}static get extendedDefaults(){return J}static get defaults(){return K}static installModule(e){ee.prototype.__modules__||(ee.prototype.__modules__=[]);const t=ee.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ee.installModule(e))),ee):(ee.installModule(e),ee)}}function te(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach((i=>{if(!s[i]&&!0===s.auto){let r=f(e.el,`.${a[i]}`)[0];r||(r=v("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}})),s}function se(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function ae(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.append(t.children[0]),t.innerHTML=""}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.prepend(t.children[0]),t.innerHTML=""}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function de(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function ce(e){let{swiper:t,duration:s,transformElements:a,allSlides:i}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a:a.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{x(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function pe(e,t,s){const a=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,i=h(t);let r=i.querySelector(`.${a.split(" ").join(".")}`);return r||(r=v("div",a.split(" ")),i.append(r)),r}Object.keys(Q).forEach((e=>{Object.keys(Q[e]).forEach((t=>{ee.prototype[t]=Q[e][t]}))})),ee.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const a=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void i("observerUpdate",e[0]);const s=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));a.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(a)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=E(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ue=[function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=a();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];let i;return a.renderSlide?(i=a.renderSlide.call(s,e,t),"string"==typeof i&&(o.innerHTML=i,i=o.children[0])):i=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),i.setAttribute("data-swiper-slide-index",t),a.renderSlide||(i.innerHTML=e),a.cache&&(s.virtual.cache[t]=i),i}function c(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i,loop:r}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:c,to:p,slides:u,slidesGrid:m,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const g=s.activeIndex||0;let v,w,b;v=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(w=Math.floor(t/2)+a+o,b=Math.floor(t/2)+a+l):(w=t+(a-1)+o,b=(r?t:a)+l);let y=g-b,E=g+w;r||(y=Math.max(y,0),E=Math.min(E,u.length-1));let x=(s.slidesGrid[y]||0)-(s.slidesGrid[0]||0);function S(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(r&&g>=b?(y-=b,i||(x+=s.slidesGrid[0])):r&&g{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:y,to:E,slides:function(){const e=[];for(let t=y;t<=E;t+=1)e.push(u[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?S():n("virtualUpdate"));const T=[],M=[],C=e=>{let t=e;return e<0?t=u.length+e:t>=u.length&&(t-=u.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=c;e<=p;e+=1)if(eE){const t=C(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const P=r?-u.length:0,L=r?2*u.length:u.length;for(let t=P;t=y&&t<=E){const s=C(t);void 0===p||e?M.push(s):(t>p&&M.push(s),t{s.slidesEl.append(d(u[e],e))})),r)for(let e=T.length-1;e>=0;e-=1){const t=T[e];s.slidesEl.prepend(d(u[t],t))}else T.sort(((e,t)=>t-e)),T.forEach((e=>{s.slidesEl.prepend(d(u[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),S()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,c()})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}c(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[a]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[a],1),e[a]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===E(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,i=a.clientWidth,r=a.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(a);s&&(d.left-=a.scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",i)}}function c(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function p(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&c()})),i("destroy",(()=>{t.keyboard.enabled&&p()})),Object.assign(t.keyboard,{enable:c,disable:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let c,p=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-p<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),p=(new n.Date).getTime(),!1)))}function g(e){let s=e,a=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const p=n&&n.contains(s.target);if(!t.mouseEntered&&!p&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},a=c&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!p&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,a=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;c=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{c=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const a=u.length?u[u.length-1]:void 0;if(u.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),a("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null};const r=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function n(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.el.querySelectorAll(e).length&&(s=t.el.querySelector(e))),e&&!s?e:s)}function l(e,s){const a=t.params.navigation;(e=r(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](a.lockClass))}))}function o(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return l(s,!1),void l(e,!1);l(s,t.isBeginning&&!t.params.rewind),l(e,t.isEnd&&!t.params.rewind)}function d(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=te(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=n(e.nextEl),a=n(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:a}),s=r(s),a=r(a);const i=(s,a)=>{s&&s.addEventListener("click","next"===a?c:d),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>i(e,"next"))),a.forEach((e=>i(e,"prev")))}function u(){let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s);const a=(e,s)=>{e.removeEventListener("click","next"===s?c:d),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}a("init",(()=>{!1===t.params.navigation.enabled?m():(p(),o())})),a("toEdge fromEdge lock unlock",(()=>{o()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s),t.enabled?o():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),a("click",((e,s)=>{let{nextEl:a,prevEl:n}=t.navigation;a=r(a),n=r(n);const l=s.target;if(t.params.navigation.hideOnClick&&!n.includes(l)&&!a.includes(l)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===l||t.pagination.el.contains(l)))return;let e;a.length?e=a[0].classList.contains(t.params.navigation.hiddenClass):n.length&&(e=n[0].classList.contains(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),[...a,...n].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const m=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),u()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),p(),o()},disable:m,update:o,init:p,destroy:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;const o=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function d(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${a}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${a}-${s}-${s}`))}function p(e){const s=e.target.closest(se(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const a=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===a)return;t.slideToLoop(a)}else t.slideTo(a)}function u(){const e=t.rtl,s=t.params.pagination;if(d())return;let a,r,p=t.pagination.el;p=o(p);const u=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,m=t.params.loop?Math.ceil(u/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,a=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(a=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,a=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const i=t.pagination.bullets;let o,d,u;if(s.dynamicBullets&&(n=S(i[0],t.isHorizontal()?"width":"height",!0),p.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=a-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(a-l,0),d=o+(Math.min(i.length,s.dynamicMainBullets)-1),u=(d+o)/2),i.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),p.length>1)i.forEach((e=>{const i=y(e);i===a?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(i>=o&&i<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),i===o&&c(e,"prev"),i===d&&c(e,"next"))}));else{const e=i[a];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&i.forEach(((e,t)=>{e.setAttribute("part",t===a?"bullet-active":"bullet")})),s.dynamicBullets){const e=i[o],t=i[d];for(let e=o;e<=d;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));c(e,"prev"),c(t,"next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),r=(n*a-n)/2-u*n,l=e?"right":"left";i.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}p.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(se(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(a+1)})),e.querySelectorAll(se(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let i;i=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(a+1)/m;let n=1,l=1;"horizontal"===i?n=r:l=r,e.querySelectorAll(se(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,a+1,m),0===r&&i("paginationRender",e)):(0===r&&i("paginationRender",e),i("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=t.params.pagination;if(d())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let a=t.pagination.el;a=o(a);let r="";if("bullets"===e.type){let a=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],a.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(se(e.bulletClass)))})),"custom"!==e.type&&i("paginationRender",a[0])}function h(){t.params.pagination=te(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>E(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=o(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",p),t.enabled||s.classList.add(e.lockClass)})))}function f(){const e=t.params.pagination;if(d())return;let s=t.pagination.el;s&&(s=o(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",p))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}a("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=o(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.pagination.enabled?g():(h(),m(),u())})),a("activeIndexChange",(()=>{void 0===t.snapIndex&&u()})),a("snapIndexChange",(()=>{u()})),a("snapGridLengthChange",(()=>{m(),u()})),a("destroy",(()=>{f()})),a("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),a("lock unlock",(()=>{u()})),a("click",((e,s)=>{const a=s.target,r=o(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!a.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const g=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),f()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),h(),m(),u()},disable:g,render:m,update:u,init:h,destroy:f})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const o=a();let d,c,p,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:a,el:i}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=c,o=(p-c)*n;s?(o=-o,o>0?(l=c-o,o=0):-o+c>p&&(l=p+o)):o<0?(l=c+o,o=0):o+c>p&&(l=p-o),t.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(h),i.style.opacity=1,h=setTimeout((()=>{i.style.opacity=0,i.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:a}=e;s.style.width="",s.style.height="",p=t.isHorizontal()?a.offsetWidth:a.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),c="auto"===t.params.scrollbar.dragSize?p*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${c}px`:s.style.height=`${c}px`,a.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function E(e){const{scrollbar:s,rtlTranslate:a}=t,{el:i}=s;let r;r=(y(e)-w(i)[t.isHorizontal()?"left":"top"]-(null!==d?d:c/2))/(p-c),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n,dragEl:l}=a;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.style.transitionDuration="100ms",l.style.transitionDuration="100ms",E(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:a}=t,{el:i,dragEl:n}=s;m&&(e.preventDefault?e.preventDefault():e.returnValue=!1,E(e),a.style.transitionDuration="0ms",i.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function T(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n}=a;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",i.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function M(e){const{scrollbar:s,params:a}=t,i=s.el;if(!i)return;const r=i,n=!!a.passiveListeners&&{passive:!1,capture:!1},l=!!a.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",x,n),o[d]("pointermove",S,n),o[d]("pointerup",T,l)}function C(){const{scrollbar:e,el:s}=t;t.params.scrollbar=te(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i,r;if("string"==typeof a.el&&t.isElement&&(i=t.el.querySelector(a.el)),i||"string"!=typeof a.el)i||(i=a.el);else if(i=o.querySelectorAll(a.el),!i.length)return;t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(t.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(r=i.querySelector(se(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),i.append(r))),Object.assign(e,{el:i,dragEl:r}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&M("on"),i&&i.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function P(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&M("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},i("init",(()=>{!1===t.params.scrollbar.enabled?L():(C(),b(),g())})),i("update resize observerUpdate lock unlock",(()=>{b()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),i("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),i("destroy",(()=>{P()}));const L=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),P()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),C(),b(),g()},disable:L,updateSize:b,setTranslate:g,init:C,destroy:P})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:a}=t,i=a?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),c=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let p=`translate3d(${n}, ${l}, 0px)`;if(null!=o){p+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(c&&null!=c){p+=` rotate(${c*s*-1}deg)`}e.style.transform=p},n=()=>{const{el:e,slides:s,progress:a,snapGrid:n,isElement:l}=t,o=f(e,i);t.isElement&&o.push(...f(t.hostEl,i)),o.forEach((e=>{r(e,a)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-a*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&n()})),a("setTranslate",(()=>{t.params.parallax.enabled&&n()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:a}=t,r=[...s.querySelectorAll(i)];t.isElement&&r.push(...a.querySelectorAll(i)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c=1,p=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function b(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,a=u[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function y(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function x(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!y(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=b(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let a=m.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=a,m.imageWrapEl=a?E(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=m.imageWrapEl.getAttribute("data-swiper-zoom")||s.maxRatio}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/c,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/c]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}p=!0}}function S(e){if(!y(e))return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&(u[i]=e),u.length<2||(o=!0,m.scaleMove=b(),m.imageEl&&(a.scale=m.scaleMove/m.scaleStart*c,a.scale>m.maxRatio&&(a.scale=m.maxRatio-1+(a.scale-m.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));i>=0&&u.splice(i,1),l&&o&&(l=!1,o=!1,m.imageEl&&(a.scale=Math.max(Math.min(a.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,c=a.scale,p=!1,a.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function M(e){if(!y(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth,h.height=m.imageEl.offsetHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const a=h.width*s.scale,i=h.height*s.scale;if(a0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!p){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return void(h.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return void(h.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),h.isMoved=!0;const r=(s.scale-c)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function C(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,c=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function P(e){const s=t.zoom,a=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?E(m.imageEl,`.${a.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let i,r,l,o,d,p,u,g,v,b,y,x,S,T,M,C,P,L;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(i=e.pageX,r=e.pageY):(i=h.touchesStart.x,r=h.touchesStart.y);const A="number"==typeof e?e:null;1===c&&A&&(i=void 0,r=void 0),s.scale=A||m.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,c=A||m.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,!e||1===c&&A?(u=0,g=0):(P=m.slideEl.offsetWidth,L=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+P/2-i,p=o+L/2-r,v=m.imageEl.offsetWidth,b=m.imageEl.offsetHeight,y=v*s.scale,x=b*s.scale,S=Math.min(P/2-y/2,0),T=Math.min(L/2-x/2,0),M=-S,C=-T,u=d*s.scale,g=p*s.scale,uM&&(u=M),gC&&(g=C)),A&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function L(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?E(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,c=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function A(e){const s=t.zoom;s.scale&&1!==s.scale?L():P(e)}function I(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function z(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=I();t.wrapperEl.addEventListener("pointerdown",x,s),t.wrapperEl.addEventListener("pointermove",S,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,T,s)})),t.wrapperEl.addEventListener("pointermove",M,a)}function $(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=I();t.wrapperEl.removeEventListener("pointerdown",x,s),t.wrapperEl.removeEventListener("pointermove",S,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,T,s)})),t.wrapperEl.removeEventListener("pointermove",M,a)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.imageEl,s=m.slideEl;i("zoomChange",e,t,s)}v=e}}),a("init",(()=>{t.params.zoom.enabled&&z()})),a("destroy",(()=>{$()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const a=u.length>0?u[0]:e;h.touchesStart.x=a.pageX,h.touchesStart.y=a.pageY}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,a=300;const i=g.x*s,r=h.currentX+i,n=g.y*a,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,a);h.currentX=r,h.currentY=l;const d=h.width*e.scale,c=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-c/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&A(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:z,disable:$,in:P,out:L,toggle:A})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){const e=document.querySelector(t.params.controller.control);if(e&&e.swiper)t.controller.control=e.swiper;else if(e){const s=a=>{t.controller.control=a.detail[0],t.update(),e.removeEventListener("init",s)};e.addEventListener("init",s)}}else t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),x(s.wrapperEl,(()=>{i&&s.transitionEnd()}))))}if(Array.isArray(i))for(r=0;r(Array.isArray(e)?e:[e]).filter((e=>!!e));function l(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function o(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function d(e,t){(e=n(e)).forEach((e=>{e.setAttribute("role",t)}))}function c(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function p(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function u(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function m(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function h(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=e.target;t.pagination&&t.pagination.el&&(a===t.pagination.el||t.pagination.el.contains(e.target))&&!e.target.matches(se(t.params.pagination.bulletClass))||(t.navigation&&t.navigation.nextEl&&a===t.navigation.nextEl&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.prevEl&&a===t.navigation.prevEl&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&a.matches(se(t.params.pagination.bulletClass))&&a.click())}function f(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function g(){return f()&&t.params.pagination.clickable}const w=(e,t,s)=>{l(e),"BUTTON"!==e.tagName&&(d(e,"button"),e.addEventListener("keydown",h)),p(e,s),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},b=()=>{t.a11y.clicked=!0},E=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},x=e=>{if(t.a11y.clicked)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},S=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&d(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((a,i)=>{const r=t.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;p(a,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},T=()=>{const e=t.params.a11y;t.el.append(i);const s=t.el;e.containerRoleDescriptionMessage&&c(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const a=t.wrapperEl,r=e.id||a.getAttribute("id")||`swiper-wrapper-${l=16,void 0===l&&(l=16),"x".repeat(l).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var l;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,n(a).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(a,o),S();let{nextEl:u,prevEl:m}=t.navigation?t.navigation:{};if(u=n(u),m=n(m),u&&u.forEach((t=>w(t,r,e.nextSlideMessage))),m&&m.forEach((t=>w(t,r,e.prevSlideMessage))),g()){n(t.pagination.el).forEach((e=>{e.addEventListener("keydown",h)}))}t.el.addEventListener("focus",x,!0),t.el.addEventListener("pointerdown",b,!0),t.el.addEventListener("pointerup",E,!0)};a("beforeInit",(()=>{i=v("span",t.params.a11y.notificationClass),i.setAttribute("aria-live","assertive"),i.setAttribute("aria-atomic","true")})),a("afterInit",(()=>{t.params.a11y.enabled&&T()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&S()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(u(s),o(s)):(m(s),l(s))),e&&(t.isEnd?(u(e),o(e)):(m(e),l(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(l(s),t.params.pagination.renderBullet||(d(s,"button"),p(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(se(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){i&&i.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=n(e),s=n(s),e&&e.forEach((e=>e.removeEventListener("keydown",h))),s&&s.forEach((e=>e.removeEventListener("keydown",h))),g()&&n(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",h)}));t.el.removeEventListener("focus",x,!0),t.el.removeEventListener("pointerdown",b,!0),t.el.removeEventListener("pointerup",E,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),n.key||n.value?(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p)):t.params.history.replaceState||e.addEventListener("popstate",p)}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const c=()=>{i("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},p=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),i("hashSet")):(o.location.hash=s||"",i("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,a=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(a||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",c)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",c)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&p()})),n("slideChange",(()=>{l&&t.params.cssMode&&p()}))},function(e){let t,s,{swiper:i,extendParams:r,on:n,emit:l,params:o}=e;i.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){i&&!i.destroyed&&i.wrapperEl&&e.target===i.wrapperEl&&(i.wrapperEl.removeEventListener("transitionend",y),g||C())}const E=()=>{if(i.destroyed||!i.autoplay.running)return;i.autoplay.paused?c=!0:c&&(w=d,c=!1);const e=i.autoplay.paused?d:b+w-(new Date).getTime();i.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{E()}))},x=e=>{if(i.destroyed||!i.autoplay.running)return;cancelAnimationFrame(s),E();let a=void 0===e?i.params.autoplay.delay:e;v=i.params.autoplay.delay,w=i.params.autoplay.delay;const r=(()=>{let e;if(e=i.virtual&&i.params.virtual.enabled?i.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:i.slides[i.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(a=r,v=r,w=r),d=a;const n=i.params.speed,o=()=>{i&&!i.destroyed&&(i.params.autoplay.reverseDirection?!i.isBeginning||i.params.loop||i.params.rewind?(i.slidePrev(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(i.slides.length-1,n,!0,!0),l("autoplay")):!i.isEnd||i.params.loop||i.params.rewind?(i.slideNext(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(0,n,!0,!0),l("autoplay")),i.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{x()}))))};return a>0?(clearTimeout(t),t=setTimeout((()=>{o()}),a)):requestAnimationFrame((()=>{o()})),a},S=()=>{b=(new Date).getTime(),i.autoplay.running=!0,x(),l("autoplayStart")},T=()=>{i.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(i.destroyed||!i.autoplay.running)return;clearTimeout(t),e||(f=!0);const a=()=>{l("autoplayPause"),i.params.autoplay.waitForTransition?i.wrapperEl.addEventListener("transitionend",y):C()};if(i.autoplay.paused=!0,s)return h&&(d=i.params.autoplay.delay),h=!1,void a();const r=d||i.params.autoplay.delay;d=r-((new Date).getTime()-b),i.isEnd&&d<0&&!i.params.loop||(d<0&&(d=0),a())},C=()=>{i.isEnd&&d<0&&!i.params.loop||i.destroyed||!i.autoplay.running||(b=(new Date).getTime(),f?(f=!1,x(d)):x(),i.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(i.destroyed||!i.autoplay.running)return;const e=a();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,i.animating||i.autoplay.paused||M(!0))},A=e=>{"mouse"===e.pointerType&&(g=!1,i.autoplay.paused&&C())};n("init",(()=>{i.params.autoplay.enabled&&(i.params.autoplay.pauseOnMouseEnter&&(i.el.addEventListener("pointerenter",L),i.el.addEventListener("pointerleave",A)),a().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{i.el.removeEventListener("pointerenter",L),i.el.removeEventListener("pointerleave",A),a().removeEventListener("visibilitychange",P),i.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{i.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!i.destroyed&&i.autoplay.running&&(s||!i.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!i.destroyed&&i.autoplay.running&&(i.params.autoplay.disableOnInteraction?T():(p=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!i.destroyed&&i.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),i.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&i.params.cssMode&&C(),u=!1,p=!1}})),n("slideChange",(()=>{!i.destroyed&&i.autoplay.running&&(h=!0)})),Object.assign(i.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&a.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(i):t.slideTo(i)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(c(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>i?r-Math.floor(a/2)+1:r+Math.floor(a/2)-1:r>i&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},i("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(a&&a.swiper)e.swiper=a.swiper,o(),d(!0);else if(a){const s=i=>{e.swiper=i.detail[0],a.removeEventListener("init",s),o(),d(!0),e.swiper.update(),t.update()};a.addEventListener("init",s)}return a},r=()=>{if(t.destroyed)return;i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),i("slideChange update resize observerUpdate",(()=>{d()})),i("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),i("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:c}=t,p=o()-c.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=c.velocities.pop(),s=c.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,c.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let p=t.translate+s;l&&(p=-p);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(pt.minTranslate())r.freeMode.momentumBounce?(p-t.minTranslate()>h&&(p=t.minTranslate()+h),u=t.minTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-p){e=t;break}p=Math.abs(d[e]-p){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-p-t.translate)/t.velocity):Math.abs((p-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-p:p)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&c.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(p),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(p),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(a("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,i,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{i=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;i&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,r.emitContainerClasses()):!i&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),i=s})),r.grid={initSlides:e=>{const{slidesPerView:i}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;a=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==i&&"row"===l&&(t=Math.max(t,i*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,i,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:c,fill:p}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===p&&l>1){const s=Math.floor(e/(l*c)),a=e-c*l*s,r=0===s?l:Math.min(Math.ceil((u-s*c*l)/c),l);f=Math.floor(a/r),h=a-f*r+s*l,m=h+f*t/c,i.style.order=m}else"column"===p?(h=Math.floor(e/c),f=e-h*c,(h>a||h===a&&f===c-1)&&(f+=1,f>=c&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);i.row=f,i.column=h,i.style.height=`calc((100% - ${(c-1)*d}px) / ${c})`,i.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",i.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:a,roundLengths:i}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),a){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),ce({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};oe({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=t.params.cubeEffect,p=t.isHorizontal(),u=t.virtual&&t.params.virtual.enabled;let m,h=0;c.shadow&&(p?(m=t.wrapperEl.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),t.wrapperEl.append(m)),m.style.height=`${r}px`):(m=e.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),e.append(m))));for(let e=0;e-1&&(h=90*r+90*m,l&&(h=90*-r-90*m),t.browser&&t.browser.isSafari&&Math.abs(h)/90%2==1&&(h+=.001)),s.style.transform=w,c.slideShadows&&i(s,m,p)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,c.shadow)if(p)m.style.transform=`translate3d(0px, ${r/2+c.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,i=c.shadowOffset;m.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-89.99deg)`}const f=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${f}px) rotateX(${t.isHorizontal()?0:h}deg) rotateY(${t.isHorizontal()?-h:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${f}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const i=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=pe("flip",e,t.isHorizontal()?"left":"top")),i||(i=pe("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),i&&(i.style.opacity=Math.max(s,0))};oe({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),ce({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),i(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),oe({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,s=a.length;e0?u:0),t&&(t.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;oe({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(f=r.prev,h=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),m.forEach(((e,s)=>{let a=f.rotate[s]*Math.abs(d*n);t.browser&&t.browser.isSafari&&Math.abs(a)/90%2==1&&(a+=.001),m[s]=a})),a.style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${m[0]}deg) rotateY(${m[1]}deg) rotateZ(${m[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,y=`translate3d(${g}) ${v} ${w}`;if(h&&f.shadow||!h){let e=a.querySelector(".swiper-slide-shadow");if(!e&&f.shadow&&(e=pe("creative",a)),e){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=de(0,a);E.style.transform=y,E.style.opacity=b,f.origin&&(E.style.transformOrigin=f.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),ce({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),oe({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:a}=t,i=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=a?-t.translate:t.translate;for(let o=0;o0&&p<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||E){const e=(1-Math.abs((Math.abs(p)-.5)/.5))**.5;v+=-28*p*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(p)+"%"}if(m=p<0?`calc(${m}px ${a?"-":"+"} (${w*Math.abs(p)}%))`:p>0?`calc(${m}px ${a?"-":"+"} (-${w*Math.abs(p)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const x=p<0?""+(1+(1-g)*p):""+(1-(1-g)*p),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${i.rotate?a?-v:v:0}deg)\n scale(${x})\n `;if(i.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=pe("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(p)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+e.length;de(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),ce({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return ee.use(ue),ee}(); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-bundle.min.js.map b/src/assets/js/vendor/swiper/swiper-bundle.min.js.map new file mode 100644 index 0000000..cb26b7f --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","push","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","toggleEl","disabled","subEl","tagName","onPrevClick","onNextClick","initButton","destroyButton","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","isActive","isVisible","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-bundle.min.mjs b/src/assets/js/vendor/swiper/swiper-bundle.min.mjs new file mode 100644 index 0000000..a05a58f --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import Virtual from"./modules/virtual.min.mjs";import Keyboard from"./modules/keyboard.min.mjs";import Mousewheel from"./modules/mousewheel.min.mjs";import Navigation from"./modules/navigation.min.mjs";import Pagination from"./modules/pagination.min.mjs";import Scrollbar from"./modules/scrollbar.min.mjs";import Parallax from"./modules/parallax.min.mjs";import Zoom from"./modules/zoom.min.mjs";import Controller from"./modules/controller.min.mjs";import A11y from"./modules/a11y.min.mjs";import History from"./modules/history.min.mjs";import HashNavigation from"./modules/hash-navigation.min.mjs";import Autoplay from"./modules/autoplay.min.mjs";import Thumb from"./modules/thumbs.min.mjs";import freeMode from"./modules/free-mode.min.mjs";import Grid from"./modules/grid.min.mjs";import Manipulation from"./modules/manipulation.min.mjs";import EffectFade from"./modules/effect-fade.min.mjs";import EffectCube from"./modules/effect-cube.min.mjs";import EffectFlip from"./modules/effect-flip.min.mjs";import EffectCoverflow from"./modules/effect-coverflow.min.mjs";import EffectCreative from"./modules/effect-creative.min.mjs";import EffectCards from"./modules/effect-cards.min.mjs";const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Controller,A11y,History,HashNavigation,Autoplay,Thumb,freeMode,Grid,Manipulation,EffectFade,EffectCube,EffectFlip,EffectCoverflow,EffectCreative,EffectCards];Swiper.use(modules);export{Swiper,Swiper as default}; +//# sourceMappingURL=swiper-bundle.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-bundle.min.mjs.map b/src/assets/js/vendor/swiper/swiper-bundle.min.mjs.map new file mode 100644 index 0000000..00ccec7 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.mjs.mjs","names":["Swiper","Virtual","Keyboard","Mousewheel","Navigation","Pagination","Scrollbar","Parallax","Zoom","Controller","A11y","History","HashNavigation","Autoplay","Thumb","freeMode","Grid","Manipulation","EffectFade","EffectCube","EffectFlip","EffectCoverflow","EffectCreative","EffectCards","modules","use"],"sources":["0"],"mappings":";;;;;;;;;;;;YAYcA,WAAc,sCACrBC,YAAa,mCACbC,aAAc,oCACdC,eAAgB,sCAChBC,eAAgB,sCAChBC,eAAgB,sCAChBC,cAAe,qCACfC,aAAc,oCACdC,SAAU,gCACVC,eAAgB,sCAChBC,SAAU,gCACVC,YAAa,mCACbC,mBAAoB,2CACpBC,aAAc,oCACdC,UAAW,kCACXC,aAAc,qCACdC,SAAU,gCACVC,iBAAkB,wCAClBC,eAAgB,uCAChBC,eAAgB,uCAChBC,eAAgB,uCAChBC,oBAAqB,4CACrBC,mBAAoB,2CACpBC,gBAAiB,iCAGxB,MAAMC,QAAU,CAACvB,QAASC,SAAUC,WAAYC,WAAYC,WAAYC,UAAWC,SAAUC,KAAMC,WAAYC,KAAMC,QAASC,eAAgBC,SAAUC,MAAOC,SAAUC,KAAMC,aAAcC,WAAYC,WAAYC,WAAYC,gBAAiBC,eAAgBC,aAClQvB,OAAOyB,IAAID,gBAEFxB,OAAQA"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-bundle.mjs b/src/assets/js/vendor/swiper/swiper-bundle.mjs new file mode 100644 index 0000000..c3338fc --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-bundle.mjs @@ -0,0 +1,42 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import Virtual from './modules/virtual.mjs'; +import Keyboard from './modules/keyboard.mjs'; +import Mousewheel from './modules/mousewheel.mjs'; +import Navigation from './modules/navigation.mjs'; +import Pagination from './modules/pagination.mjs'; +import Scrollbar from './modules/scrollbar.mjs'; +import Parallax from './modules/parallax.mjs'; +import Zoom from './modules/zoom.mjs'; +import Controller from './modules/controller.mjs'; +import A11y from './modules/a11y.mjs'; +import History from './modules/history.mjs'; +import HashNavigation from './modules/hash-navigation.mjs'; +import Autoplay from './modules/autoplay.mjs'; +import Thumb from './modules/thumbs.mjs'; +import freeMode from './modules/free-mode.mjs'; +import Grid from './modules/grid.mjs'; +import Manipulation from './modules/manipulation.mjs'; +import EffectFade from './modules/effect-fade.mjs'; +import EffectCube from './modules/effect-cube.mjs'; +import EffectFlip from './modules/effect-flip.mjs'; +import EffectCoverflow from './modules/effect-coverflow.mjs'; +import EffectCreative from './modules/effect-creative.mjs'; +import EffectCards from './modules/effect-cards.mjs'; + +// Swiper Class +const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; +Swiper.use(modules); + +export { Swiper, Swiper as default }; diff --git a/src/assets/js/vendor/swiper/swiper-element-bundle.js b/src/assets/js/vendor/swiper/swiper-element-bundle.js new file mode 100644 index 0000000..248de36 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element-bundle.js @@ -0,0 +1,10138 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + return { + isSafari: needPerspectiveFix || isSafari(), + needPerspectiveFix, + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + slidesPrepended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop + } = swiper.params; + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !gesture.slideEl) return; + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth; + image.height = gesture.imageEl.offsetHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth; + imageHeight = gesture.imageEl.offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElement = document.querySelector(swiper.params.controller.control); + if (controlElement && controlElement.swiper) { + swiper.controller.control = controlElement.swiper; + } else if (controlElement) { + const onControllerSwiper = e => { + swiper.controller.control = e.detail[0]; + swiper.update(); + controlElement.removeEventListener('init', onControllerSwiper); + }; + controlElement.addEventListener('init', onControllerSwiper); + } + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e); + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = () => { + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const handleFocus = e => { + if (swiper.a11y.clicked) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject$1(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener('init', onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener('init', onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + if (swiper.browser && swiper.browser.isSafari && Math.abs(wrapperRotate) / 90 % 2 === 1) { + wrapperRotate += 0.001; + } + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + if (swiper.browser && swiper.browser.isSafari) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + if (swiper.browser && swiper.browser.isSafari && Math.abs(val) / 90 % 2 === 1) { + val += 0.001; + } + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
    + + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
    + + ${needsNavigation(this.passedParams) ? ` +
    ${this.constructor.prevButtonSvg}
    +
    ${this.constructor.nextButtonSvg}
    + ` : ''} + ${needsPagination(this.passedParams) ? ` +
    + ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
    + ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/src/assets/js/vendor/swiper/swiper-element-bundle.min.js b/src/assets/js/vendor/swiper/swiper-element-bundle.min.js new file mode 100644 index 0000000..f84dedd --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((a=>{void 0===s[a]?s[a]=i[a]:e(i[a])&&e(s[a])&&Object.keys(i[a]).length>0&&t(s[a],i[a])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const a={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,a),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let i,a,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(a=l.transform||l.webkitTransform,a.split(",").length>6&&(a=a.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===a?"":a)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=n.toString().split(",")),"x"===t&&(a=s.WebKitCSSMatrix?n.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(a=s.WebKitCSSMatrix?n.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),a||0}function p(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;tn?"next":"prev",c=(e,t)=>"next"===p&&e>=t||"prev"===p&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let p=n+r*(s-n);if(c(p,s)&&(p=s),t.wrapperEl.scrollTo({[i]:p}),c(p,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:p})})),void a.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=a.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=i(),a=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,p=e===t?t.scrollX:e.scrollLeft;return{top:a.top+d-l,left:a.left+p-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function x(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}function E(e,t){t&&e.addEventListener("transitionend",(function s(i){i.target===e&&(t.call(e,i),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const i=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let T,M,C;function P(){return T||(T=function(){const e=r(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),T}function L(e){return void 0===e&&(e={}),M||(M=function(e){let{userAgent:t}=void 0===e?{}:e;const s=P(),i=r(),a=i.navigator.platform,n=t||i.navigator.userAgent,l={ios:!1,android:!1},o=i.screen.width,d=i.screen.height,p=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===a;let f="MacIntel"===a;return!c&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),f=!1),p&&!h&&(l.os="android",l.android=!0),(c||m||u)&&(l.os="ios",l.ios=!0),l}(e)),M}function z(){return C||(C=function(){const e=r();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,i]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&i<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),C}var k={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const a=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][a](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function a(){i.off(e,a),a.__emitterProxy&&delete a.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,a)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(a,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var a=arguments.length,r=new Array(a),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const A=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},I=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},$=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),a=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=a,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&I(e,s)}))}const r=a+i-1;if(e.params.rewind||e.params.loop)for(let i=a-t;i<=r+t;i+=1){const t=(i%s+s)%s;(tr)&&I(e,t)}else for(let i=Math.max(a-t,0);i<=Math.min(r+t,s-1);i+=1)i!==a&&(i>r||i=0?E=parseFloat(E.replace("%",""))/100*r:"string"==typeof E&&(E=parseFloat(E)),e.virtualSize=-E,p.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(i,"--swiper-centered-offset-before",""),u(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(p):e.grid&&e.grid.unsetSlides();const z="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+E;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),a=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==p.length-1)).forEach((e=>{e.style[t]=`${E}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(E||0)})),e-=E;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(E||0)})),e-=E,e{m[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:p,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(i,"--swiper-centered-offset-before",-m[0]+"px"),u(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(c!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==x&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);c<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let a,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(a=0;at.slides.length&&!i)break;s.push(n(e))}else s.push(n(t.activeIndex));for(a=0;ar?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&m<=t.size||u<=0&&m>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),h&&i[e].classList.add(s.slideFullyVisibleClass),o.progress=a?-p:p,o.originalProgress=a?-c:c}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:a,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===i)a=0,r=!0,n=!0;else{a=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||a<=0,n=l||a>=1,s&&(a=0),l&&(a=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),a=t.slidesGrid[s],r=t.slidesGrid[i],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=a?(o-a)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:a,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",a)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:a}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,p;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),r)if(s.loop){let t=a-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${a}"]`);else n?(o=t.filter((e=>e.column===a))[0],p=t.filter((e=>e.column===a+1))[0],d=t.filter((e=>e.column===a-1))[0]):o=t[a];o&&(o.classList.add(s.slideActiveClass),n?(p&&p.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(p=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!p&&(p=t[0]),p&&p.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:a,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const p=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let a;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(a=e);return s.normalizeSlideIndex&&(a<0||void 0===a)&&(a=0),a}(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(a.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/a.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=p(d));const c=t.grid&&a.grid&&a.grid.rows>1;let u;if(t.virtual&&a.virtual.enabled&&a.loop)u=p(d);else if(c){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/a.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&$(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let a=e.closest(`.${i.slideClass}, swiper-slide`);!a&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!a&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(a=e)}));let r,n=!1;if(a)for(let e=0;eo?o:i&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==c){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(c||0)!==n)return!1}let b;if(n!==(p||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>c?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,i),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const a=this,r=a.grid&&a.params.grid&&a.params.grid.rows>1;let n=e;if(a.params.loop)if(a.virtual&&a.params.virtual.enabled)n+=a.virtual.slidesBefore;else{let e;if(r){const t=n*a.params.grid.rows;e=a.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=a.getSlideIndexByData(n);const t=r?Math.ceil(a.slides.length/a.params.grid.rows):a.slides.length,{centeredSlides:s}=a.params;let i=a.params.slidesPerView;"auto"===i?i=a.slidesPerViewDynamic():(i=Math.ceil(parseFloat(a.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=a.getSlideIndexByData(n)}return requestAnimationFrame((()=>{a.slideTo(n,t,s,i)})),a},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:a,params:r,animating:n}=i;if(!a)return i;let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return r.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:a,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=i;if(!o)return i;const p=i.virtual&&a.virtual.enabled;if(a.loop){if(d&&!p&&a.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=c(l?i.translate:-i.translate),m=r.map((e=>c(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&a.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=i.activeIndex-1),"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),a.rewind&&i.isBeginning){const a=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(a,e,t,s)}return a.loop&&0===i.activeIndex&&a.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const a=this;let r=a.activeIndex;const n=Math.min(a.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[l]){const e=a.snapGrid[l];o-e>(a.snapGrid[l+1]-e)*i&&(r+=a.params.slidesPerGroup)}else{const e=a.snapGrid[l-1];o-e<=(a.snapGrid[l]-e)*i&&(r-=a.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,a.slidesGrid.length-1),a.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;a=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+i/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-i?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var B={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const a=()=>{f(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):E=r;const S="next"===i||!i,T="prev"===i||!i;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===a?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&x.push(s)})):x.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&x.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||x.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E+M,0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(a){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(x.length>0&&S)if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E-C,0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?x.length/m.grid.rows:x.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=p,o.allowSlideNext=c,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:i,setTranslate:a,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function N(e,t,s){const i=r(),{params:a}=e,n=a.edgeSwipeDetection,l=a.edgeSwipeThreshold;return!n||!(s<=l||s>=i.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function H(e){const t=this,s=i();let a=e;a.originalEvent&&(a=a.originalEvent);const n=t.touchEventsData;if("pointerdown"===a.type){if(null!==n.pointerId&&n.pointerId!==a.pointerId)return;n.pointerId=a.pointerId}else"touchstart"===a.type&&1===a.targetTouches.length&&(n.touchId=a.targetTouches[0].identifier);if("touchstart"===a.type)return void N(t,a,a.targetTouches[0].pageX);const{params:l,touches:d,enabled:p}=t;if(!p)return;if(!l.simulateTouch&&"mouse"===a.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let c=a.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(c))return;if("which"in a&&3===a.which)return;if("button"in a&&a.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=a.composedPath?a.composedPath():a.path;u&&a.target&&a.target.shadowRoot&&m&&(c=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!a.target||!a.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const a=s.closest(e);return a||s.getRootNode?a||t(s.getRootNode().host):null}(t)}(h,c):c.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!c.closest(l.swipeHandler))return;d.currentX=a.pageX,d.currentY=a.pageY;const g=d.currentX,v=d.currentY;if(!N(t,a,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;c.matches(n.focusableElements)&&(w=!1,"SELECT"===c.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==c&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||c.isContentEditable||a.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",a)}function R(e){const t=i(),s=this,a=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let p,c=e;if(c.originalEvent&&(c=c.originalEvent),"pointermove"===c.type){if(null!==a.touchId)return;if(c.pointerId!==a.pointerId)return}if("touchmove"===c.type){if(p=[...c.changedTouches].filter((e=>e.identifier===a.touchId))[0],!p||p.identifier!==a.touchId)return}else p=c;if(!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",c));const u=p.pageX,m=p.pageY;if(c.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return c.target.matches(a.focusableElements)||(s.allowClick=!1),void(a.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),a.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&c.target===t.activeElement&&c.target.matches(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);a.allowTouchCallbacks&&s.emit("touchMove",c),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,a.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",c),void 0===a.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(a.startMoving=!0)),a.isScrolling)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!a.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}a.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)}if((new Date).getTime(),a.isMoved&&a.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:a.currentTranslate}),a.loopSwapReset=!0,void(a.startTranslate=a.currentTranslate);s.emit("sliderMove",c),a.isMoved=!0,a.currentTranslate=g+a.startTranslate;let x=!0,E=r.resistanceRatio;if(r.touchReleaseOnEdges&&(E=0),g>0?(b&&y&&a.allowThresholdMove&&a.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),a.currentTranslate>s.minTranslate()&&(x=!1,r.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+g)**E))):g<0&&(b&&y&&a.allowThresholdMove&&a.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),a.currentTranslatea.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,a.currentTranslate=a.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function X(e){const t=this,s=t.touchEventsData;let i,a=e;a.originalEvent&&(a=a.originalEvent);if("touchend"===a.type||"touchcancel"===a.type){if(i=[...a.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(a.pointerId!==s.pointerId)return;i=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)){if(!(["pointercancel","contextmenu"].includes(a.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:p,enabled:c}=t;if(!c)return;if(!r.simulateTouch&&"mouse"===a.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",a),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=a.path||a.composedPath&&a.composedPath();t.updateClickedSlide(e&&e[0]||a.target,e),t.emit("tap click",a),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",a)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=p[e]&&h=p[e])&&(g=e,v=p[p.length-1]-p[p.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-p[g])/v,x=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+x):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+x):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(a.target===t.navigation.nextEl||a.target===t.navigation.prevEl)?a.target===t.navigation.nextEl?t.slideTo(g+x):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+x),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function Y(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=a,e.allowSlideNext=i,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function q(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function V(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let a;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();a=0===r?0:(e.translate-e.minTranslate())/r,a!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function j(e){const t=this;A(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function F(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const W=(e,t)=>{const s=i(),{params:a,el:r,wrapperEl:n,device:l}=e,o=!!a.nested,d="on"===t?"addEventListener":"removeEventListener",p=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(a.preventClicks||a.preventClicksPropagation)&&r[d]("click",e.onClick,!0),a.cssMode&&n[d]("scroll",e.onScroll),a.updateOnWindowResize?e[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",Y,!0):e[p]("observerUpdate",Y,!0),r[d]("load",e.onLoad,{capture:!0})};const U=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var K={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Z(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],a=s[i];"object"==typeof a&&null!==a?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in a?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const Q={eventsEmitter:k,update:O,translate:D,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),_({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),_({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:G,loop:B,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=H.bind(e),e.onTouchMove=R.bind(e),e.onTouchEnd=X.bind(e),e.onDocumentTouchStart=F.bind(e),t.cssMode&&(e.onScroll=V.bind(e)),e.onClick=q.bind(e),e.onLoad=j.bind(e),W(e,"on")},detachEvents:function(){W(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:a}=e,r=i.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=U(e,i),d=U(e,l),p=i.enabled;o&&!d?(a.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(a.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&a.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,a=l[t]&&l[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const u=l.direction&&l.direction!==i.direction,m=i.loop&&(l.slidesPerView!==i.slidesPerView||u),h=i.loop;u&&s&&e.changeDirection(),c(e.params,l);const f=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!f?e.disable():!p&&f&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&g?(e.loopCreate(t),e.updateSlides()):h&&!g&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const a=r(),n="window"===t?a.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:a,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),a.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},J={};class ee{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new ee(i))})),e}const l=this;l.__swiper__=!0,l.support=P(),l.device=L({userAgent:t.userAgent}),l.browser=z(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:Z(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=c({},K,o);return l.params=c({},d,J,t),l.originalParams=c({},l.params),l.passedParams=c({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),a=(s.maxTranslate()-i)*e+i;s.translateTo(a,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:a,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?i[l].swiperSlideSize:0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){a[l]-a[e]{t.complete&&A(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;a=e.slideTo(t.length-1,0,!1,!0)}else a=e.slideTo(e.activeIndex,0,!1,!0);a||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let a=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return f(s,i())[0]})();return!a&&t.params.createElements&&(a=v("div",t.params.wrapperClass),s.append(a),f(s,`.${t.params.slideClass}`).forEach((e=>{a.append(e)}))),Object.assign(t,{el:s,wrapperEl:a,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:a,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(a,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?A(t,e):e.addEventListener("load",(e=>{A(t,e.target)}))})),$(t),t.initialized=!0,$(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:a,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),a.removeAttribute("style"),r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(J,e)}static get extendedDefaults(){return J}static get defaults(){return K}static installModule(e){ee.prototype.__modules__||(ee.prototype.__modules__=[]);const t=ee.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ee.installModule(e))),ee):(ee.installModule(e),ee)}}function te(e,t,s,i){return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let r=f(e.el,`.${i[a]}`)[0];r||(r=v("div",i[a]),r.className=i[a],e.el.append(r)),s[a]=r,t[a]=r}})),s}function se(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function ie(e){const t=this,{params:s,slidesEl:i}=t;s.loop&&t.loopDestroy();const a=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.append(t.children[0]),t.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.prepend(t.children[0]),t.innerHTML=""}else a.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),i("setTranslate",(()=>{s.params.effect===t&&a()})),i("setTransition",((e,i)=>{s.params.effect===t&&r(i)})),i("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),i("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(p=!0),requestAnimationFrame((()=>{p&&s.slides&&s.slides.length&&(a(),p=!1)})))}))}function de(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function pe(e){let{swiper:t,duration:s,transformElements:i,allSlides:a}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=a?i:i.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{E(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function ce(e,t,s){const i=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=h(t);let r=a.querySelector(`.${i.split(" ").join(".")}`);return r||(r=v("div",i.split(" ")),a.append(r)),r}Object.keys(Q).forEach((e=>{Object.keys(Q[e]).forEach((t=>{ee.prototype[t]=Q[e][t]}))})),ee.use([function(e){let{swiper:t,on:s,emit:i}=e;const a=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==a.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=a.requestAnimationFrame((()=>{const{width:s,height:i}=t;let a=s,r=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:n}=e;n&&n!==t.el||(a=i?i.width:(s[0]||s).inlineSize,r=i?i.height:(s[0]||s).blockSize)})),a===s&&r===i||o()}))})),n.observe(t.el)):(a.addEventListener("resize",o),a.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&a.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),a.removeEventListener("resize",o),a.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const i=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void a("observerUpdate",e[0]);const s=function(){a("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=x(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ue=[function(e){let t,{swiper:s,extendParams:a,on:r,emit:n}=e;a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=i();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const i=s.params.virtual;if(i.cache&&s.virtual.cache[t])return s.virtual.cache[t];let a;return i.renderSlide?(a=i.renderSlide.call(s,e,t),"string"==typeof a&&(o.innerHTML=a,a=o.children[0])):a=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),a.setAttribute("data-swiper-slide-index",t),i.renderSlide||(a.innerHTML=e),i.cache&&(s.virtual.cache[t]=a),a}function p(e){const{slidesPerView:t,slidesPerGroup:i,centeredSlides:a,loop:r}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:p,to:c,slides:u,slidesGrid:m,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const g=s.activeIndex||0;let v,w,b;v=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",a?(w=Math.floor(t/2)+i+o,b=Math.floor(t/2)+i+l):(w=t+(i-1)+o,b=(r?t:i)+l);let y=g-b,x=g+w;r||(y=Math.max(y,0),x=Math.min(x,u.length-1));let E=(s.slidesGrid[y]||0)-(s.slidesGrid[0]||0);function S(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(r&&g>=b?(y-=b,a||(E+=s.slidesGrid[0])):r&&g{e.style[v]=E-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:E,from:y,to:x,slides:function(){const e=[];for(let t=y;t<=x;t+=1)e.push(u[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?S():n("virtualUpdate"));const T=[],M=[],C=e=>{let t=e;return e<0?t=u.length+e:t>=u.length&&(t-=u.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=p;e<=c;e+=1)if(ex){const t=C(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const P=r?-u.length:0,L=r?2*u.length:u.length;for(let t=P;t=y&&t<=x){const s=C(t);void 0===c||e?M.push(s):(t>c&&M.push(s),t{s.slidesEl.append(d(u[e],e))})),r)for(let e=T.length-1;e>=0;e-=1){const t=T[e];s.slidesEl.prepend(d(u[t],t))}else T.sort(((e,t)=>t-e)),T.forEach((e=>{s.slidesEl.prepend(d(u[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[v]=E-Math.abs(s.cssOverflowAdjustment())+"px"})),S()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,p()})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{p()}),100)):p())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const i=e[s],r=i.getAttribute("data-swiper-slide-index");r&&i.setAttribute("data-swiper-slide-index",parseInt(r,10)+a),t[parseInt(s,10)+a]=i})),s.virtual.cache=t}p(!0),s.slideTo(i,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[i]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[i],1),e[i]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===x(t.el,`.${t.params.slideActiveClass}`).length)return;const i=t.el,a=i.clientWidth,r=i.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(i);s&&(d.left-=i.scrollLeft);const p=[[d.left,d.top],[d.left+a,d.top],[d.left,d.top+r],[d.left+a,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||p||c||u)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),((p||u)&&!s||(d||c)&&s)&&t.slideNext(),((d||c)&&!s||(p||u)&&s)&&t.slidePrev()):((d||p||m||h)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),(p||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",a)}}function p(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function c(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&p()})),a("destroy",(()=>{t.keyboard.enabled&&c()})),Object.assign(t.keyboard,{enable:p,disable:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let p,c=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),a("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),a("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function g(e){let s=e,i=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const c=n&&n.contains(s.target);if(!t.mouseEntered&&!c&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,i=0,a=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),i=10*t,a=10*s,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(i=e.deltaX),e.shiftKey&&!i&&(i=a,a=0),(i||a)&&e.deltaMode&&(1===e.deltaMode?(i*=40,a*=40):(i*=800,a*=800)),i&&!t&&(t=i<1?-1:1),a&&!s&&(s=a<1?-1:1),{spinX:t,spinY:s,pixelX:i,pixelY:a}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),i=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),i&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},i=p&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!c&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,i=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-i.time<500&&i.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;p=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{p=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(i||a("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const i=u.length?u[u.length-1]:void 0;if(u.push(s),i?(s.direction!==i.direction||s.delta>i.delta||s.time>i.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}i("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),i("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null};const r=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function n(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.el.querySelectorAll(e).length&&(s=t.el.querySelector(e))),e&&!s?e:s)}function l(e,s){const i=t.params.navigation;(e=r(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](i.lockClass))}))}function o(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return l(s,!1),void l(e,!1);l(s,t.isBeginning&&!t.params.rewind),l(e,t.isEnd&&!t.params.rewind)}function d(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),a("navigationPrev"))}function p(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),a("navigationNext"))}function c(){const e=t.params.navigation;if(t.params.navigation=te(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=n(e.nextEl),i=n(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:i}),s=r(s),i=r(i);const a=(s,i)=>{s&&s.addEventListener("click","next"===i?p:d),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>a(e,"next"))),i.forEach((e=>a(e,"prev")))}function u(){let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s);const i=(e,s)=>{e.removeEventListener("click","next"===s?p:d),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>i(e,"next"))),s.forEach((e=>i(e,"prev")))}i("init",(()=>{!1===t.params.navigation.enabled?m():(c(),o())})),i("toEdge fromEdge lock unlock",(()=>{o()})),i("destroy",(()=>{u()})),i("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s),t.enabled?o():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),i("click",((e,s)=>{let{nextEl:i,prevEl:n}=t.navigation;i=r(i),n=r(n);const l=s.target;if(t.params.navigation.hideOnClick&&!n.includes(l)&&!i.includes(l)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===l||t.pagination.el.contains(l)))return;let e;i.length?e=i[0].classList.contains(t.params.navigation.hiddenClass):n.length&&(e=n[0].classList.contains(t.params.navigation.hiddenClass)),a(!0===e?"navigationShow":"navigationHide"),[...i,...n].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const m=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),u()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),c(),o()},disable:m,update:o,init:c,destroy:u})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;const o=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function d(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function p(e,s){const{bulletActiveClass:i}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${i}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${i}-${s}-${s}`))}function c(e){const s=e.target.closest(se(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const i=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===i)return;t.slideToLoop(i)}else t.slideTo(i)}function u(){const e=t.rtl,s=t.params.pagination;if(d())return;let i,r,c=t.pagination.el;c=o(c);const u=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,m=t.params.loop?Math.ceil(u/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,i=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(i=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,i=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let o,d,u;if(s.dynamicBullets&&(n=S(a[0],t.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=i-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(i-l,0),d=o+(Math.min(a.length,s.dynamicMainBullets)-1),u=(d+o)/2),a.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),c.length>1)a.forEach((e=>{const a=y(e);a===i?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(a>=o&&a<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),a===o&&p(e,"prev"),a===d&&p(e,"next"))}));else{const e=a[i];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&a.forEach(((e,t)=>{e.setAttribute("part",t===i?"bullet-active":"bullet")})),s.dynamicBullets){const e=a[o],t=a[d];for(let e=o;e<=d;e+=1)a[e]&&a[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));p(e,"prev"),p(t,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}c.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(se(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(i+1)})),e.querySelectorAll(se(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let a;a=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(i+1)/m;let n=1,l=1;"horizontal"===a?n=r:l=r,e.querySelectorAll(se(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,i+1,m),0===r&&a("paginationRender",e)):(0===r&&a("paginationRender",e),a("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=t.params.pagination;if(d())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let i=t.pagination.el;i=o(i);let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&i>s&&(i=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],i.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(se(e.bulletClass)))})),"custom"!==e.type&&a("paginationRender",i[0])}function h(){t.params.pagination=te(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>x(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=o(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),t.enabled||s.classList.add(e.lockClass)})))}function f(){const e=t.params.pagination;if(d())return;let s=t.pagination.el;s&&(s=o(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}i("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=o(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.pagination.enabled?g():(h(),m(),u())})),i("activeIndexChange",(()=>{void 0===t.snapIndex&&u()})),i("snapIndexChange",(()=>{u()})),i("snapGridLengthChange",(()=>{m(),u()})),i("destroy",(()=>{f()})),i("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),i("lock unlock",(()=>{u()})),i("click",((e,s)=>{const i=s.target,r=o(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!i.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&i===t.navigation.nextEl||t.navigation.prevEl&&i===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);a(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const g=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),f()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),h(),m(),u()},disable:g,render:m,update:u,init:h,destroy:f})},function(e){let{swiper:t,extendParams:s,on:a,emit:r}=e;const o=i();let d,p,c,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:i,el:a}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=p,o=(c-p)*n;s?(o=-o,o>0?(l=p-o,o=0):-o+p>c&&(l=c+o)):o<0?(l=p+o,o=0):o+p>c&&(l=c-o),t.isHorizontal()?(i.style.transform=`translate3d(${o}px, 0, 0)`,i.style.width=`${l}px`):(i.style.transform=`translate3d(0px, ${o}px, 0)`,i.style.height=`${l}px`),r.hide&&(clearTimeout(h),a.style.opacity=1,h=setTimeout((()=>{a.style.opacity=0,a.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:i}=e;s.style.width="",s.style.height="",c=t.isHorizontal()?i.offsetWidth:i.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),p="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${p}px`:s.style.height=`${p}px`,i.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(i.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function x(e){const{scrollbar:s,rtlTranslate:i}=t,{el:a}=s;let r;r=(y(e)-w(a)[t.isHorizontal()?"left":"top"]-(null!==d?d:p/2))/(c-p),r=Math.max(Math.min(r,1),0),i&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function E(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n,dragEl:l}=i;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),a.style.transitionDuration="100ms",l.style.transitionDuration="100ms",x(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:i}=t,{el:a,dragEl:n}=s;m&&(e.preventDefault?e.preventDefault():e.returnValue=!1,x(e),i.style.transitionDuration="0ms",a.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function T(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n}=i;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",a.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function M(e){const{scrollbar:s,params:i}=t,a=s.el;if(!a)return;const r=a,n=!!i.passiveListeners&&{passive:!1,capture:!1},l=!!i.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",E,n),o[d]("pointermove",S,n),o[d]("pointerup",T,l)}function C(){const{scrollbar:e,el:s}=t;t.params.scrollbar=te(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const i=t.params.scrollbar;if(!i.el)return;let a,r;if("string"==typeof i.el&&t.isElement&&(a=t.el.querySelector(i.el)),a||"string"!=typeof i.el)a||(a=i.el);else if(a=o.querySelectorAll(i.el),!a.length)return;t.params.uniqueNavElements&&"string"==typeof i.el&&a.length>1&&1===s.querySelectorAll(i.el).length&&(a=s.querySelector(i.el)),a.length>0&&(a=a[0]),a.classList.add(t.isHorizontal()?i.horizontalClass:i.verticalClass),a&&(r=a.querySelector(se(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),a.append(r))),Object.assign(e,{el:a,dragEl:r}),i.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&M("on"),a&&a.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function P(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&M("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},a("init",(()=>{!1===t.params.scrollbar.enabled?L():(C(),b(),g())})),a("update resize observerUpdate lock unlock",(()=>{b()})),a("setTranslate",(()=>{g()})),a("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),a("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),a("destroy",(()=>{P()}));const L=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),P()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),C(),b(),g()},disable:L,updateSize:b,setTranslate:g,init:C,destroy:P})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({parallax:{enabled:!1}});const a="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:i}=t,a=i?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),p=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*a+"%":n*s*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let c=`translate3d(${n}, ${l}, 0px)`;if(null!=o){c+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(p&&null!=p){c+=` rotate(${p*s*-1}deg)`}e.style.transform=c},n=()=>{const{el:e,slides:s,progress:i,snapGrid:n,isElement:l}=t,o=f(e,a);t.isElement&&o.push(...f(t.hostEl,a)),o.forEach((e=>{r(e,i)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-i*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${a}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};i("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),i("init",(()=>{t.params.parallax.enabled&&n()})),i("setTranslate",(()=>{t.params.parallax.enabled&&n()})),i("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:i}=t,r=[...s.querySelectorAll(a)];t.isElement&&r.push(...i.querySelectorAll(a)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,p=1,c=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function b(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,i=u[1].pageY;return Math.sqrt((s-e)**2+(i-t)**2)}function y(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function E(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!y(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=b(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let i=m.slideEl.querySelector(`.${s.containerClass}`);if(i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=i,m.imageWrapEl=i?x(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=m.imageWrapEl.getAttribute("data-swiper-zoom")||s.maxRatio}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/p,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/p]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}c=!0}}function S(e){if(!y(e))return;const s=t.params.zoom,i=t.zoom,a=u.findIndex((t=>t.pointerId===e.pointerId));a>=0&&(u[a]=e),u.length<2||(o=!0,m.scaleMove=b(),m.imageEl&&(i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scalet.pointerId===e.pointerId));a>=0&&u.splice(a,1),l&&o&&(l=!1,o=!1,m.imageEl&&(i.scale=Math.max(Math.min(i.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`,p=i.scale,c=!1,i.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):i.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===i.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function M(e){if(!y(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth,h.height=m.imageEl.offsetHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const i=h.width*s.scale,a=h.height*s.scale;if(i0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!c){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return void(h.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return void(h.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),h.isMoved=!0;const r=(s.scale-p)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function C(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,p=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function P(e){const s=t.zoom,i=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${i.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?x(m.imageEl,`.${i.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let a,r,l,o,d,c,u,g,v,b,y,E,S,T,M,C,P,L;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${i.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(a=e.pageX,r=e.pageY):(a=h.touchesStart.x,r=h.touchesStart.y);const z="number"==typeof e?e:null;1===p&&z&&(a=void 0,r=void 0),s.scale=z||m.imageWrapEl.getAttribute("data-swiper-zoom")||i.maxRatio,p=z||m.imageWrapEl.getAttribute("data-swiper-zoom")||i.maxRatio,!e||1===p&&z?(u=0,g=0):(P=m.slideEl.offsetWidth,L=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+P/2-a,c=o+L/2-r,v=m.imageEl.offsetWidth,b=m.imageEl.offsetHeight,y=v*s.scale,E=b*s.scale,S=Math.min(P/2-y/2,0),T=Math.min(L/2-E/2,0),M=-S,C=-T,u=d*s.scale,g=c*s.scale,uM&&(u=M),gC&&(g=C)),z&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function L(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?x(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function z(e){const s=t.zoom;s.scale&&1!==s.scale?L():P(e)}function k(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function A(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:i}=k();t.wrapperEl.addEventListener("pointerdown",E,s),t.wrapperEl.addEventListener("pointermove",S,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,T,s)})),t.wrapperEl.addEventListener("pointermove",M,i)}function I(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:i}=k();t.wrapperEl.removeEventListener("pointerdown",E,s),t.wrapperEl.removeEventListener("pointermove",S,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,T,s)})),t.wrapperEl.removeEventListener("pointermove",M,i)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.imageEl,s=m.slideEl;a("zoomChange",e,t,s)}v=e}}),i("init",(()=>{t.params.zoom.enabled&&A()})),i("destroy",(()=>{I()})),i("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const i=u.length>0?u[0]:e;h.touchesStart.x=i.pageX,h.touchesStart.y=i.pageY}(s)})),i("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,i=300;const a=g.x*s,r=h.currentX+a,n=g.y*i,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(i=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,i);h.currentX=r,h.currentY=l;const d=h.width*e.scale,p=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-p/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),i("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&z(s)})),i("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),i("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:A,disable:I,in:P,out:L,toggle:z})},function(e){let{swiper:t,extendParams:s,on:i}=e;function a(e,t){const s=function(){let e,t,s;return(i,a)=>{for(t=-1,e=i.length;e-t>1;)s=e+t>>1,i[s]<=a?t=s:e=s;return e}}();let i,a;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(a=s(this.x,e),i=a-1,(e-this.x[i])*(this.y[a]-this.y[i])/(this.x[a]-this.x[i])+this.y[i]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},i("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){const e=document.querySelector(t.params.controller.control);if(e&&e.swiper)t.controller.control=e.swiper;else if(e){const s=i=>{t.controller.control=i.detail[0],t.update(),e.removeEventListener("init",s)};e.addEventListener("init",s)}}else t.controller.control=t.params.controller.control})),i("update",(()=>{r()})),i("resize",(()=>{r()})),i("observerUpdate",(()=>{r()})),i("setTranslate",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,i)})),i("setTransition",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,i)})),Object.assign(t.controller,{setTranslate:function(e,s){const i=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new a(t.slidesGrid,e.slidesGrid):new a(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(i))for(let e=0;e{s.updateAutoHeight()})),E(s.wrapperEl,(()=>{a&&s.transitionEnd()}))))}if(Array.isArray(a))for(r=0;r(Array.isArray(e)?e:[e]).filter((e=>!!e));function l(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function o(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function d(e,t){(e=n(e)).forEach((e=>{e.setAttribute("role",t)}))}function p(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function c(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function u(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function m(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function h(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,i=e.target;t.pagination&&t.pagination.el&&(i===t.pagination.el||t.pagination.el.contains(e.target))&&!e.target.matches(se(t.params.pagination.bulletClass))||(t.navigation&&t.navigation.nextEl&&i===t.navigation.nextEl&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.prevEl&&i===t.navigation.prevEl&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&i.matches(se(t.params.pagination.bulletClass))&&i.click())}function f(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function g(){return f()&&t.params.pagination.clickable}const w=(e,t,s)=>{l(e),"BUTTON"!==e.tagName&&(d(e,"button"),e.addEventListener("keydown",h)),c(e,s),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},b=()=>{t.a11y.clicked=!0},x=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},E=e=>{if(t.a11y.clicked)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;const i=t.slides.indexOf(s)===t.activeIndex,a=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);i||a||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},S=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&p(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&d(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((i,a)=>{const r=t.params.loop?parseInt(i.getAttribute("data-swiper-slide-index"),10):a;c(i,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},T=()=>{const e=t.params.a11y;t.el.append(a);const s=t.el;e.containerRoleDescriptionMessage&&p(s,e.containerRoleDescriptionMessage),e.containerMessage&&c(s,e.containerMessage);const i=t.wrapperEl,r=e.id||i.getAttribute("id")||`swiper-wrapper-${l=16,void 0===l&&(l=16),"x".repeat(l).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var l;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,n(i).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(i,o),S();let{nextEl:u,prevEl:m}=t.navigation?t.navigation:{};if(u=n(u),m=n(m),u&&u.forEach((t=>w(t,r,e.nextSlideMessage))),m&&m.forEach((t=>w(t,r,e.prevSlideMessage))),g()){n(t.pagination.el).forEach((e=>{e.addEventListener("keydown",h)}))}t.el.addEventListener("focus",E,!0),t.el.addEventListener("pointerdown",b,!0),t.el.addEventListener("pointerup",x,!0)};i("beforeInit",(()=>{a=v("span",t.params.a11y.notificationClass),a.setAttribute("aria-live","assertive"),a.setAttribute("aria-atomic","true")})),i("afterInit",(()=>{t.params.a11y.enabled&&T()})),i("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&S()})),i("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(u(s),o(s)):(m(s),l(s))),e&&(t.isEnd?(u(e),o(e)):(m(e),l(e)))}()})),i("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(l(s),t.params.pagination.renderBullet||(d(s,"button"),c(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(se(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),i("destroy",(()=>{t.params.a11y.enabled&&function(){a&&a.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=n(e),s=n(s),e&&e.forEach((e=>e.removeEventListener("keydown",h))),s&&s.forEach((e=>e.removeEventListener("keydown",h))),g()&&n(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",h)}));t.el.removeEventListener("focus",E,!0),t.el.removeEventListener("pointerdown",b,!0),t.el.removeEventListener("pointerup",x,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:i}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let a=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const i=s.pathname.slice(1).split("/").filter((e=>""!==e)),a=i.length;return{key:i[a-2],value:i[a-1]}},d=(e,s)=>{const i=r();if(!a||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):i.location;const o=t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const p=i.history.state;p&&p.value===d||(t.params.history.replaceState?i.history.replaceState({value:d},null,d):i.history.pushState({value:d},null,d))},p=(e,s,i)=>{if(s)for(let a=0,r=t.slides.length;a{n=o(t.params.url),p(t.params.speed,n.value,!1)};i("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);a=!0,n=o(t.params.url),n.key||n.value?(p(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",c)):t.params.history.replaceState||e.addEventListener("popstate",c)}})()})),i("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",c)})()})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{a&&d(t.params.history.key,t.activeIndex)})),i("slideChange",(()=>{a&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:a,on:n}=e,l=!1;const o=i(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const p=()=>{a("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},c=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),a("hashSet")):(o.location.hash=s||"",a("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,i=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(i||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",p)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&c()})),n("slideChange",(()=>{l&&t.params.cssMode&&c()}))},function(e){let t,s,{swiper:a,extendParams:r,on:n,emit:l,params:o}=e;a.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,p,c,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){a&&!a.destroyed&&a.wrapperEl&&e.target===a.wrapperEl&&(a.wrapperEl.removeEventListener("transitionend",y),g||C())}const x=()=>{if(a.destroyed||!a.autoplay.running)return;a.autoplay.paused?p=!0:p&&(w=d,p=!1);const e=a.autoplay.paused?d:b+w-(new Date).getTime();a.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{x()}))},E=e=>{if(a.destroyed||!a.autoplay.running)return;cancelAnimationFrame(s),x();let i=void 0===e?a.params.autoplay.delay:e;v=a.params.autoplay.delay,w=a.params.autoplay.delay;const r=(()=>{let e;if(e=a.virtual&&a.params.virtual.enabled?a.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:a.slides[a.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,w=r),d=i;const n=a.params.speed,o=()=>{a&&!a.destroyed&&(a.params.autoplay.reverseDirection?!a.isBeginning||a.params.loop||a.params.rewind?(a.slidePrev(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(a.slides.length-1,n,!0,!0),l("autoplay")):!a.isEnd||a.params.loop||a.params.rewind?(a.slideNext(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(0,n,!0,!0),l("autoplay")),a.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return i>0?(clearTimeout(t),t=setTimeout((()=>{o()}),i)):requestAnimationFrame((()=>{o()})),i},S=()=>{b=(new Date).getTime(),a.autoplay.running=!0,E(),l("autoplayStart")},T=()=>{a.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(a.destroyed||!a.autoplay.running)return;clearTimeout(t),e||(f=!0);const i=()=>{l("autoplayPause"),a.params.autoplay.waitForTransition?a.wrapperEl.addEventListener("transitionend",y):C()};if(a.autoplay.paused=!0,s)return h&&(d=a.params.autoplay.delay),h=!1,void i();const r=d||a.params.autoplay.delay;d=r-((new Date).getTime()-b),a.isEnd&&d<0&&!a.params.loop||(d<0&&(d=0),i())},C=()=>{a.isEnd&&d<0&&!a.params.loop||a.destroyed||!a.autoplay.running||(b=(new Date).getTime(),f?(f=!1,E(d)):E(),a.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(a.destroyed||!a.autoplay.running)return;const e=i();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,a.animating||a.autoplay.paused||M(!0))},z=e=>{"mouse"===e.pointerType&&(g=!1,a.autoplay.paused&&C())};n("init",(()=>{a.params.autoplay.enabled&&(a.params.autoplay.pauseOnMouseEnter&&(a.el.addEventListener("pointerenter",L),a.el.addEventListener("pointerleave",z)),i().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{a.el.removeEventListener("pointerenter",L),a.el.removeEventListener("pointerleave",z),i().removeEventListener("visibilitychange",P),a.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{a.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!a.destroyed&&a.autoplay.running&&(s||!a.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!a.destroyed&&a.autoplay.running&&(a.params.autoplay.disableOnInteraction?T():(c=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!a.destroyed&&a.autoplay.running&&c){if(clearTimeout(m),clearTimeout(t),a.params.autoplay.disableOnInteraction)return u=!1,void(c=!1);u&&a.params.cssMode&&C(),u=!1,c=!1}})),n("slideChange",(()=>{!a.destroyed&&a.autoplay.running&&(h=!0)})),Object.assign(a.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,i=e.clickedSlide;if(i&&i.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let a;a=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(a):t.slideTo(a)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(p(e.swiper)){const i=Object.assign({},e.swiper);Object.assign(i,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(i),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const i="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let a=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(a=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(a=1),a=Math.floor(a),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>a?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>a&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=i(),a=()=>{const i="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(i&&i.swiper)e.swiper=i.swiper,o(),d(!0);else if(i){const s=a=>{e.swiper=a.detail[0],i.removeEventListener("init",s),o(),d(!0),e.swiper.update(),t.update()};i.addEventListener("init",s)}return i},r=()=>{if(t.destroyed)return;a()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),a("slideChange update resize observerUpdate",(()=>{d()})),a("setTransition",((e,s)=>{const i=t.thumbs.swiper;i&&!i.destroyed&&i.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:i,once:a}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:p}=t,c=o()-p.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=p.velocities.pop(),s=p.velocities.pop(),i=e.position-s.position,a=e.time-s.time;t.velocity=i/a,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,p.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(ct.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>h&&(c=t.minTranslate()+h),u=t.minTranslate(),m=!0,p.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(d[e]-c){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),i=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&p.allowMomentumBounce&&(i("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(i("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&i("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(i("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,i,a,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{a=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;a&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),i=1,r.emitContainerClasses()):!a&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),a=s})),r.grid={initSlides:e=>{const{slidesPerView:a}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;i=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==a&&"row"===l&&(t=Math.max(t,a*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,a,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:p,fill:c}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===c&&l>1){const s=Math.floor(e/(l*p)),i=e-p*l*s,r=0===s?l:Math.min(Math.ceil((u-s*p*l)/p),l);f=Math.floor(i/r),h=i-f*r+s*l,m=h+f*t/p,a.style.order=m}else"column"===c?(h=Math.floor(e/p),f=e-h*p,(h>i||h===i&&f===p-1)&&(f+=1,f>=p&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);a.row=f,a.column=h,a.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,a.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",a.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:i,roundLengths:a}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),i){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),pe({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const a=(e,t,s)=>{let i=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(i)),a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(a)),i&&(i.style.opacity=Math.max(-t,0)),a&&(a.style.opacity=Math.max(t,0))};oe({effect:"cube",swiper:t,on:i,setTranslate:()=>{const{el:e,wrapperEl:s,slides:i,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,p=t.params.cubeEffect,c=t.isHorizontal(),u=t.virtual&&t.params.virtual.enabled;let m,h=0;p.shadow&&(c?(m=t.wrapperEl.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),t.wrapperEl.append(m)),m.style.height=`${r}px`):(m=e.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),e.append(m))));for(let e=0;e-1&&(h=90*r+90*m,l&&(h=90*-r-90*m),t.browser&&t.browser.isSafari&&Math.abs(h)/90%2==1&&(h+=.001)),s.style.transform=w,p.slideShadows&&a(s,m,c)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,p.shadow)if(c)m.style.transform=`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,i=p.shadowScale/t,a=p.shadowOffset;m.style.transform=`scale3d(${s}, 1, ${i}) translate3d(0px, ${n/2+a}px, ${-n/2/i}px) rotateX(-89.99deg)`}const f=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${f}px) rotateX(${t.isHorizontal()?0:h}deg) rotateY(${t.isHorizontal()?-h:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${f}px`)},setTransition:e=>{const{el:s,slides:i}=t;if(i.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);a(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(e,s)=>{let i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=ce("flip",e,t.isHorizontal()?"left":"top")),a||(a=ce("flip",e,t.isHorizontal()?"right":"bottom")),i&&(i.style.opacity=Math.max(-s,0)),a&&(a.style.opacity=Math.max(s,0))};oe({effect:"flip",swiper:t,on:i,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,i=t.params.flipEffect;for(let r=0;r{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),pe({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),a(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),oe({effect:"coverflow",swiper:t,on:i,setTranslate:()=>{const{width:e,height:s,slides:i,slidesSizesGrid:a}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,p=r.depth;for(let e=0,s=i.length;e0?u:0),t&&(t.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;oe({effect:"creative",swiper:t,on:i,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:i}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=i[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(f=r.prev,h=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${a(f.translate[t])} * ${Math.abs(d*n)}))`})),m.forEach(((e,s)=>{let i=f.rotate[s]*Math.abs(d*n);t.browser&&t.browser.isSafari&&Math.abs(i)/90%2==1&&(i+=.001),m[s]=i})),i.style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${m[0]}deg) rotateY(${m[1]}deg) rotateZ(${m[2]}deg)`,w=p<0?`scale(${1+(1-f.scale)*p*n})`:`scale(${1-(1-f.scale)*p*n})`,b=p<0?1+(1-f.opacity)*p*n:1-(1-f.opacity)*p*n,y=`translate3d(${g}) ${v} ${w}`;if(h&&f.shadow||!h){let e=i.querySelector(".swiper-slide-shadow");if(!e&&f.shadow&&(e=ce("creative",i)),e){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const x=de(0,i);x.style.transform=y,x.style.opacity=b,f.origin&&(x.style.transformOrigin=f.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),pe({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),oe({effect:"cards",swiper:t,on:i,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:i}=t,a=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=i?-t.translate:t.translate;for(let o=0;o0&&c<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;v+=-28*c*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(c)+"%"}if(m=c<0?`calc(${m}px ${i?"-":"+"} (${w*Math.abs(c)}%))`:c>0?`calc(${m}px ${i?"-":"+"} (-${w*Math.abs(c)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const E=c<0?""+(1+(1-g)*c):""+(1-(1-g)*c),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${a.rotate?i?-v:v:0}deg)\n scale(${E})\n `;if(a.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=ce("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(p))+e.length;de(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),pe({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];ee.use(ue);const me=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function he(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function fe(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:he(t[s])&&he(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:fe(e[s],t[s]):e[s]=t[s]}))}function ge(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const ve=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},we=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function be(e,t,s){const i={},a={};fe(i,K);const r=[...me,"on"],n=r.map((e=>e.replace(/_/,"")));r.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(a[t]=e[t])}));const l=[...e.attributes];return"string"==typeof t&&void 0!==s&&l.push({name:t,value:he(s)?{...s}:s}),l.forEach((e=>{const t=we.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=ge(t),i=ge(e.name.split(`${t}-`)[1]);void 0===a[s]&&(a[s]={}),!0===a[s]&&(a[s]={enabled:!0}),a[s][i]=ve(e.value)}else{const t=ge(e.name);if(!n.includes(t))return;const s=ve(e.value);a[t]&&we.includes(e.name)&&!he(s)?(a[t].constructor!==Object&&(a[t]={}),a[t].enabled=!!s):a[t]=s}})),fe(i,a),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:a}}const ye=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}";const xe="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,Ee='\n ',Se=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class Te extends xe{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return Ee}static get prevButtonSvg(){return Ee.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[ye,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&Se(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
    \n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
    \n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
    ${this.constructor.prevButtonSvg}
    \n
    ${this.constructor.nextButtonSvg}
    \n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
    \n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
    \n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=be(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new ee(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var a=arguments.length,r=new Array(a>1?a-1:0),n=1;n"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:p,pagination:c,navigation:u,scrollbar:m,virtual:h,thumbs:f}=t;let g,v,w,b,y,x,E,S;a.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&p.thumbs&&!p.thumbs.swiper&&(g=!0),a.includes("controller")&&i.controller&&i.controller.control&&p.controller&&!p.controller.control&&(v=!0),a.includes("pagination")&&i.pagination&&(i.pagination.el||o)&&(p.pagination||!1===p.pagination)&&c&&!c.el&&(w=!0),a.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||l)&&(p.scrollbar||!1===p.scrollbar)&&m&&!m.el&&(b=!0),a.includes("navigation")&&i.navigation&&(i.navigation.prevEl||n)&&(i.navigation.nextEl||r)&&(p.navigation||!1===p.navigation)&&u&&!u.prevEl&&!u.nextEl&&(y=!0);const T=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),p[e].prevEl=void 0,p[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),p[e].el=void 0,t[e].el=void 0))};a.includes("loop")&&t.isElement&&(p.loop&&!i.loop?x=!0:!p.loop&&i.loop?E=!0:S=!0),d.forEach((e=>{if(he(p[e])&&he(i[e]))Object.assign(p[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||T(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?p[e]=i[e]:!1===t&&T(e)}})),d.includes("controller")&&!v&&t.controller&&t.controller.control&&p.controller&&p.controller.control&&(t.controller.control=p.controller.control),a.includes("children")&&s&&h&&p.virtual.enabled?(h.slides=s,h.update(!0)):a.includes("virtual")&&h&&p.virtual.enabled&&(s&&(h.slides=s),h.update(!0)),a.includes("children")&&s&&p.loop&&(S=!0),g&&f.init()&&f.update(!0);v&&(t.controller.control=p.controller.control),w&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-pagination"),o.part.add("pagination"),t.el.appendChild(o)),o&&(p.pagination.el=o),c.init(),c.render(),c.update()),b&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-scrollbar"),l.part.add("scrollbar"),t.el.appendChild(l)),l&&(p.scrollbar.el=l),m.init(),m.updateSize(),m.setTranslate()),y&&(t.isElement&&(r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-next"),r.innerHTML=t.hostEl.constructor.nextButtonSvg,r.part.add("button-next"),t.el.appendChild(r)),n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-prev"),n.innerHTML=t.hostEl.constructor.prevButtonSvg,n.part.add("button-prev"),t.el.appendChild(n))),r&&(p.navigation.nextEl=r),n&&(p.navigation.prevEl=n),u.init(),u.update()),a.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),a.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),a.includes("direction")&&t.changeDirection(i.direction,!1),(x||S)&&t.loopDestroy(),(E||S)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[ge(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return me.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}me.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(Te.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class Me extends xe{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(Se(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{me.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",Te),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",Me))}(); +//# sourceMappingURL=swiper-element-bundle.min.js.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-element-bundle.min.js.map b/src/assets/js/vendor/swiper/swiper-element-bundle.min.js.map new file mode 100644 index 0000000..a067847 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","push","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","toggleEl","disabled","subEl","tagName","onPrevClick","onNextClick","initButton","destroyButton","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","isActive","isVisible","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","paramsList","isObject","extend","attrToProp","attrName","l","toUpperCase","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","configurable","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-element-bundle.min.mjs b/src/assets/js/vendor/swiper/swiper-element-bundle.min.mjs new file mode 100644 index 0000000..cec9f91 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import"./swiper-bundle.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";import{S as Swiper}from"./shared/swiper-core.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,i)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(i),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=i,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,i=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=i.length?Math.max(...i)+1:0,this.rendered)if(this.slideSlots>e)for(let i=e;i=0;i-=1)i>this.slideSlots&&e[i].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const i=document.createElement("link");i.rel="stylesheet",i.href=e,this.shadowRoot.appendChild(i)}));const i=document.createElement("div");i.classList.add("swiper"),i.part="container",i.innerHTML=`\n \n
    \n \n ${Array.from({length:this.slideSlots}).map(((e,i)=>`\n \n \n \n `)).join("")}\n
    \n \n ${needsNavigation(this.passedParams)?`\n
    ${this.constructor.prevButtonSvg}
    \n
    ${this.constructor.nextButtonSvg}
    \n `:""}\n ${needsPagination(this.passedParams)?'\n
    \n ':""}\n ${needsScrollbar(this.passedParams)?'\n
    \n ':""}\n `,this.shadowRoot.appendChild(i),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:i,passedParams:t}=getParams(this);this.swiperParams=i,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...i.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...i,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const s=i.eventsPrefix?`${i.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(i){this.passedParams||(this.passedParams={}),this.passedParams[e]=i,this.initialized&&this.updateSwiperOnPropChange(e,i)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element-bundle.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-element-bundle.min.mjs.map b/src/assets/js/vendor/swiper/swiper-element-bundle.min.mjs.map new file mode 100644 index 0000000..04551bb --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.mjs.mjs","names":["paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","Swiper","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","observeSlideChildren","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-element-bundle.mjs b/src/assets/js/vendor/swiper/swiper-element-bundle.mjs new file mode 100644 index 0000000..5ec4dbf --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element-bundle.mjs @@ -0,0 +1,287 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import './swiper-bundle.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; +import { S as Swiper } from './shared/swiper-core.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
    + + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
    + + ${needsNavigation(this.passedParams) ? ` +
    ${this.constructor.prevButtonSvg}
    +
    ${this.constructor.nextButtonSvg}
    + ` : ''} + ${needsPagination(this.passedParams) ? ` +
    + ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
    + ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/src/assets/js/vendor/swiper/swiper-element.d.ts b/src/assets/js/vendor/swiper/swiper-element.d.ts new file mode 100644 index 0000000..4100356 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element.d.ts @@ -0,0 +1,444 @@ +// @ts-ignore +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const register: () => void; + +// prettier-ignore +interface SwiperContainerEventMap extends Omit { + /** + * Event will be fired in when autoplay started + */ + autoplaystart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when autoplay stopped + */ + autoplaystop: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay pause + */ + autoplaypause: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay resume + */ + autoplayresume: CustomEvent<[swiper: Swiper]>; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplaytimeleft: CustomEvent<[swiper: Swiper, timeLeft: number, percentage: number]>; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on window hash change + */ + hashchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper updates the hash + */ + hashset: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on key press + */ + keypress: CustomEvent<[swiper: Swiper, keyCode: string]>;/** + * Event will be fired on mousewheel scroll + */ + scroll: CustomEvent<[swiper: Swiper, event: WheelEvent]>;/** + * Event will be fired on navigation hide + */ + navigationhide: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation show + */ + navigationshow: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation prev button click + */ + navigationprev: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation next button click + */ + navigationnext: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired after pagination rendered + */ + paginationrender: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired when pagination updated + */ + paginationupdate: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired on pagination hide + */ + paginationhide: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on pagination show + */ + paginationshow: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbardragstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbardragmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbardragend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>;/** + * Event will be fired on zoom change + */ + zoomchange: CustomEvent<[swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>; + + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: CustomEvent<[false, + * // other parameters + * }]>; + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: CustomEvent<[{ + * init: function { + * // do something + * }, + * } + * })]>; + * ``` + */ + init: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before Swiper destroyed + */ + beforedestroy: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesupdated: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when currently active slide is changed + */ + slidechange: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slidechangetransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slidechangetransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slidenexttransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slidenexttransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slideprevtransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slideprevtransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of transition. + */ + transitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after transition. + */ + transitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchmoveopposite: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + slidermove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubletap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: CustomEvent<[swiper: Swiper, progress: number]>; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachbeginning: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper reach last slide + */ + reachend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + settranslate: CustomEvent<[swiper: Swiper, translate: number]>; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + settransition: CustomEvent<[swiper: Swiper, transition: number]>; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerupdate: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before "loop fix" + */ + beforeloopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after "loop fix" + */ + loopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: CustomEvent<[swiper: Swiper, breakpointParams: SwiperOptions]>; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + + + /** + * Event will fired on active index change + */ + activeindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on snap index change + */ + snapindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on real index change + */ + realindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right after initialization + */ + afterinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right before initialization + */ + beforeinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before resize handler + */ + beforeresize: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before slide change transition start + */ + beforeslidechangestart: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before transition start + */ + beforetransitionstart: CustomEvent<[swiper: Swiper, speed: number, internal: any]>; // what is internal? + /** + * Event will fired on direction change + */ + changedirection: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleclick: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + /** + * Event will be fired on swiper destroy + */ + destroy: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on momentum bounce + */ + momentumbounce: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideresettransitionstart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideresettransitionend: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired with first touch/drag move + */ + sliderfirstmove: CustomEvent<[swiper: Swiper, event: TouchEvent]>; + /** + * Event will be fired when number of slides has changed + */ + slideslengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when slides grid has changed + */ + slidesgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when snap grid has changed + */ + snapgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired after swiper.update() call + */ + update: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: CustomEvent<[swiper: Swiper]>; + +} + +interface SwiperContainer extends HTMLElement {} +interface SwiperContainer extends SwiperOptions { + swiper: Swiper; + initialize: () => void; + injectStyles: string[]; + injectStylesUrls: string[]; + eventsPrefix: string; + addEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +interface SwiperSlide extends HTMLElement { + lazy: string | boolean; +} + +declare global { + interface HTMLElementTagNameMap { + 'swiper-container': SwiperContainer; + 'swiper-slide': SwiperSlide; + } +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/src/assets/js/vendor/swiper/swiper-element.js b/src/assets/js/vendor/swiper/swiper-element.js new file mode 100644 index 0000000..2f60842 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element.js @@ -0,0 +1,4897 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + return { + isSafari: needPerspectiveFix || isSafari(), + needPerspectiveFix, + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + slidesPrepended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
    + + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
    + + ${needsNavigation(this.passedParams) ? ` +
    ${this.constructor.prevButtonSvg}
    +
    ${this.constructor.nextButtonSvg}
    + ` : ''} + ${needsPagination(this.passedParams) ? ` +
    + ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
    + ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/src/assets/js/vendor/swiper/swiper-element.min.js b/src/assets/js/vendor/swiper/swiper-element.min.js new file mode 100644 index 0000000..6e94f56 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function h(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function f(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let b,S,T;function y(){return b||(b=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),b}function x(e){return void 0===e&&(e={}),S||(S=function(e){let{userAgent:t}=void 0===e?{}:e;const s=y(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!f&&(o.os="android",o.android=!0),(p||h||u)&&(o.os="ios",o.ios=!0),o}(e)),S}function E(){return T||(T=function(){const e=n();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,i]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&i<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),T}var C={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const P=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},M=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},k=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&M(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&M(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?x=parseFloat(x.replace("%",""))/100*n:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const M=s.grid&&s.grid.rows>1&&e.grid;let k;M?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-n;f=f.map((e=>e<=0?-b:e>t?t+S:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(x||0)})),e-=x,e{f[s]=e-t})),m.forEach(((e,s)=>{m[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:f,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),f.length!==T&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==y&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let o=s.spaceBetween;"string"==typeof o&&o.indexOf("%")>=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&h<=t.size||u<=0&&h>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),f&&i[e].classList.add(s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(l.classList.add(s.slideActiveClass),a?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&k(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(h?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let b;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),b=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=s}))):f[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,b),0===t?n.transitionEnd(s,b):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,b))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this,n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let i=r.params.slidesPerView;"auto"===i?i=r.slidesPerViewDynamic():(i=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r)return i;let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l)return i;const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map((e=>p(e)));let f=n[h.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var _={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{h(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):y=n;const x="next"===i||!i,E="prev"===i||!i;let C=0,P=0;const M=b?Math.ceil(d.length/h.grid.rows):d.length,k=(b?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(k=0;t-=1)d[t].column===e&&S.push(t)}else S.push(M-t-1)}}else if(k+v>M-w){P=Math.max(k-(M-2*w),g);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():b&&(S.length>0&&E||T.length>0&&x)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),h.watchSlidesProgress&&l.updateSlidesOffset(),s)if(S.length>0&&E){if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y+C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y+C,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=b?S.length/h.grid.rows:S.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(T.length>0&&x)if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y-P]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y-P,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=b?T.length/h.grid.rows:T.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function A(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function G(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void A(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(p))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!A(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function D(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const b=s.params.loop&&!n.cssMode,S="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(b&&S&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&b&&S&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let T=!0,y=n.resistanceRatio;if(n.touchReleaseOnEdges&&(y=0),v>0?(b&&S&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(T=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**y))):v<0&&(b&&S&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,b=null;n.rewind&&(t.isBeginning?b=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const S=(f-c[v])/g,T=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(S>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+T):t.slideTo(v)),"prev"===t.swipeDirection&&(S>1-n.longSwipesRatio?t.slideTo(v+T):null!==b&&S<0&&Math.abs(S)>n.longSwipesRatio?t.slideTo(b):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+T):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+T),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:v))}}function N(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function B(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function $(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function F(e){const t=this;P(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function j(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const R=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",N,!0):e[c]("observerUpdate",N,!0),n[d]("load",e.onLoad,{capture:!0})};const H=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var W={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function q(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const Y={eventsEmitter:C,update:L,translate:z,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),I({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),I({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:O,loop:_,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=G.bind(e),e.onTouchMove=D.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=j.bind(e),t.cssMode&&(e.onScroll=$.bind(e)),e.onClick=B.bind(e),e.onLoad=F.bind(e),R(e,"on")},detachEvents:function(){R(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=H(e,i),d=H(e,o),p=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u),f=i.loop;u&&s&&e.changeDirection(),c(e.params,o);const m=e.params.enabled,v=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(h?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!f&&v?(e.loopCreate(t),e.updateSlides()):f&&!v&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},X={};class U{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new U(i))})),e}const o=this;o.__swiper__=!0,o.support=y(),o.device=x({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:q(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},W,l);return o.params=c({},d,X,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(h(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?i[o].swiperSlideSize:0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&P(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?P(t,e):e.addEventListener("load",(e=>{P(t,e.target)}))})),k(t),t.initialized=!0,k(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttribute("style"),n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(X,e)}static get extendedDefaults(){return X}static get defaults(){return W}static installModule(e){U.prototype.__modules__||(U.prototype.__modules__=[]);const t=U.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>U.installModule(e))),U):(U.installModule(e),U)}}Object.keys(Y).forEach((e=>{Object.keys(Y[e]).forEach((t=>{U.prototype[t]=Y[e][t]}))})),U.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]);const K=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function Z(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function J(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:Z(t[s])&&Z(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:J(e[s],t[s]):e[s]=t[s]}))}function Q(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const ee=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},te=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function se(e,t,s){const i={},r={};J(i,W);const n=[...K,"on"],a=n.map((e=>e.replace(/_/,"")));n.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(r[t]=e[t])}));const o=[...e.attributes];return"string"==typeof t&&void 0!==s&&o.push({name:t,value:Z(s)?{...s}:s}),o.forEach((e=>{const t=te.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=Q(t),i=Q(e.name.split(`${t}-`)[1]);void 0===r[s]&&(r[s]={}),!0===r[s]&&(r[s]={enabled:!0}),r[s][i]=ee(e.value)}else{const t=Q(e.name);if(!a.includes(t))return;const s=ee(e.value);r[t]&&te.includes(e.name)&&!Z(s)?(r[t].constructor!==Object&&(r[t]={}),r[t].enabled=!!s):r[t]=s}})),J(i,r),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:r}}const ie=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}";const re="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,ne='\n ',ae=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class oe extends re{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return ne}static get prevButtonSvg(){return ne.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[ie,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&ae(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
    \n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
    \n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
    ${this.constructor.prevButtonSvg}
    \n
    ${this.constructor.nextButtonSvg}
    \n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
    \n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
    \n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=se(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new U(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var r=arguments.length,n=new Array(r>1?r-1:0),a=1;a"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:h,virtual:f,thumbs:m}=t;let v,g,w,b,S,T,y,x;r.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(v=!0),r.includes("controller")&&i.controller&&i.controller.control&&c.controller&&!c.controller.control&&(g=!0),r.includes("pagination")&&i.pagination&&(i.pagination.el||l)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),r.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||o)&&(c.scrollbar||!1===c.scrollbar)&&h&&!h.el&&(b=!0),r.includes("navigation")&&i.navigation&&(i.navigation.prevEl||a)&&(i.navigation.nextEl||n)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const E=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};r.includes("loop")&&t.isElement&&(c.loop&&!i.loop?T=!0:!c.loop&&i.loop?y=!0:x=!0),d.forEach((e=>{if(Z(c[e])&&Z(i[e]))Object.assign(c[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||E(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=i[e]:!1===t&&E(e)}})),d.includes("controller")&&!g&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),r.includes("children")&&s&&f&&c.virtual.enabled?(f.slides=s,f.update(!0)):r.includes("virtual")&&f&&c.virtual.enabled&&(s&&(f.slides=s),f.update(!0)),r.includes("children")&&s&&c.loop&&(x=!0),v&&m.init()&&m.update(!0);g&&(t.controller.control=c.controller.control),w&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-pagination"),l.part.add("pagination"),t.el.appendChild(l)),l&&(c.pagination.el=l),p.init(),p.render(),p.update()),b&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-scrollbar"),o.part.add("scrollbar"),t.el.appendChild(o)),o&&(c.scrollbar.el=o),h.init(),h.updateSize(),h.setTranslate()),S&&(t.isElement&&(n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-next"),n.innerHTML=t.hostEl.constructor.nextButtonSvg,n.part.add("button-next"),t.el.appendChild(n)),a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-button-prev"),a.innerHTML=t.hostEl.constructor.prevButtonSvg,a.part.add("button-prev"),t.el.appendChild(a))),n&&(c.navigation.nextEl=n),a&&(c.navigation.prevEl=a),u.init(),u.update()),r.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),r.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),r.includes("direction")&&t.changeDirection(i.direction,!1),(T||x)&&t.loopDestroy(),(y||x)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[Q(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return K.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}K.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(oe.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class le extends re{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(ae(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{K.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",oe),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",le))}(); +//# sourceMappingURL=swiper-element.min.js.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-element.min.js.map b/src/assets/js/vendor/swiper/swiper-element.min.js.map new file mode 100644 index 0000000..74b7cda --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","slideEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","push","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","parentElement","elementParents","disconnect","paramsList","isObject","extend","attrToProp","attrName","l","toUpperCase","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","scrollbar","pagination","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","textContent","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","render","localStyles","linkEl","part","innerHTML","needsPagination","needsScrollbar","initialize","_this","detail","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","defineProperty","configurable","get","set","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-element.min.mjs b/src/assets/js/vendor/swiper/swiper-element.min.mjs new file mode 100644 index 0000000..45d547a --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,s)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(s),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=s,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,s=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=s.length?Math.max(...s)+1:0,this.rendered)if(this.slideSlots>e)for(let s=e;s=0;s-=1)s>this.slideSlots&&e[s].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const s=document.createElement("link");s.rel="stylesheet",s.href=e,this.shadowRoot.appendChild(s)}));const s=document.createElement("div");s.classList.add("swiper"),s.part="container",s.innerHTML=`\n \n
    \n \n ${Array.from({length:this.slideSlots}).map(((e,s)=>`\n \n \n \n `)).join("")}\n
    \n \n ${needsNavigation(this.passedParams)?`\n
    ${this.constructor.prevButtonSvg}
    \n
    ${this.constructor.nextButtonSvg}
    \n `:""}\n ${needsPagination(this.passedParams)?'\n
    \n ':""}\n ${needsScrollbar(this.passedParams)?'\n
    \n ':""}\n `,this.shadowRoot.appendChild(s),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:s,passedParams:t}=getParams(this);this.swiperParams=s,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...s.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...s,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const i=s.eventsPrefix?`${s.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(s){this.passedParams||(this.passedParams={}),this.passedParams[e]=s,this.initialized&&this.updateSwiperOnPropChange(e,s)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-element.min.mjs.map b/src/assets/js/vendor/swiper/swiper-element.min.mjs.map new file mode 100644 index 0000000..b4913bc --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.mjs.mjs","names":["Swiper","paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","observeSlideChildren","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper-element.mjs b/src/assets/js/vendor/swiper/swiper-element.mjs new file mode 100644 index 0000000..caa3d8f --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-element.mjs @@ -0,0 +1,286 @@ +/** + * Swiper Custom Element 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
    + + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
    + + ${needsNavigation(this.passedParams) ? ` +
    ${this.constructor.prevButtonSvg}
    +
    ${this.constructor.nextButtonSvg}
    + ` : ''} + ${needsPagination(this.passedParams) ? ` +
    + ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
    + ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/src/assets/js/vendor/swiper/swiper-react.d.ts b/src/assets/js/vendor/swiper/swiper-react.d.ts new file mode 100644 index 0000000..002d8de --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-react.d.ts @@ -0,0 +1,501 @@ +import * as React from 'react'; + +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +type SwiperProps = Omit< + React.HTMLAttributes, + | 'onProgress' + | 'onClick' + | 'onTouchEnd' + | 'onTouchMove' + | 'onTouchStart' + | 'onTransitionEnd' + | 'onKeyPress' + | 'onDoubleClick' + | 'onScroll' + | 'onResize' +> & + SwiperOptions & { + /** + * Swiper container tag + * + * @default 'div' + */ + tag?: string; + + /** + * Swiper wrapper tag + * + * @default 'div' + */ + wrapperTag?: string; + + /** + * Get Swiper instance + */ + onSwiper?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in when autoplay started + */ + onAutoplayStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + onAutoplayStop?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + onAutoplayPause?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + onAutoplayResume?: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + onAutoplayTimeLeft?: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + onAutoplay?: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + onHashChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + onHashSet?: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + onKeyPress?: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired on navigation hide + */ + onNavigationHide?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + onNavigationShow?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + onNavigationPrev?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + onNavigationNext?: (swiper: SwiperClass) => void;/** + * Event will be fired after pagination rendered + */ + onPaginationRender?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + onPaginationUpdate?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + onPaginationHide?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + onPaginationShow?: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + onScrollbarDragStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + onScrollbarDragMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + onScrollbarDragEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + onInit?: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + onBeforeDestroy?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + onSlidesUpdated?: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + onSlideChange?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + onSlideChangeTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + onSlideChangeTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + onSlideNextTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + onSlideNextTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + onSlidePrevTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + onSlidePrevTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + onTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + onTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + onTouchStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + onTouchMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + onTouchMoveOpposite?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + onProgress?: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + onReachBeginning?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + onReachEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + onToEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + onFromEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + onSetTranslate?: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + onSetTransition?: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + onResize?: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + onObserverUpdate?: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + onBeforeLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + onLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + onBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + onActiveIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + onSnapIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + onRealIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + onAfterInit?: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + onBeforeInit?: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + onBeforeResize?: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + onBeforeSlideChangeStart?: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + onBeforeTransitionStart?: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + onChangeDirection?: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + onDoubleClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + onDestroy?: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + onMomentumBounce?: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + onOrientationchange?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + onSlideResetTransitionStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + onSlideResetTransitionEnd?: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + onSliderFirstMove?: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + onSlidesLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + onSlidesGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + onSnapGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + onUpdate?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + onLock?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + onUnlock?: (swiper: SwiperClass) => void; + + }; + +interface SlideData { + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +} + +type SwiperSlideProps = Omit, 'children'> & { + /** + * Slide tag + * + * @default 'div' + */ + tag?: string; + + /** + * Enables additional wrapper required for zoom mode + * + * @default false + */ + zoom?: boolean; + + /** + * Adds lazy preloader to the slide + * + * @default false + */ + lazy?: boolean; + + /** + * Slide's index in slides array/collection + * + * @default false + */ + virtualIndex?: number; + + /** + * Slide's child element or render function + * + * @default undefined + */ + children?: React.ReactNode | ((slideData: SlideData) => React.ReactNode); +}; + +interface SwiperRef extends React.HTMLAttributes { + swiper: SwiperClass; +} + +declare const Swiper: React.FunctionComponent< + React.RefAttributes & React.PropsWithChildren +>; +declare const SwiperSlide: React.FunctionComponent; + +declare const useSwiper: () => SwiperClass; +declare const useSwiperSlide: () => SlideData; + +export { + Swiper, + SwiperSlide, + SwiperProps, + SwiperSlideProps, + SwiperRef, + useSwiper, + useSwiperSlide, + SwiperClass, +}; diff --git a/src/assets/js/vendor/swiper/swiper-react.mjs b/src/assets/js/vendor/swiper/swiper-react.mjs new file mode 100644 index 0000000..5f5e395 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-react.mjs @@ -0,0 +1,394 @@ +/** + * Swiper React 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs'; +import { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs'; + +function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} + +function isChildSwiperSlide(child) { + return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide'); +} +function processChildren(c) { + const slides = []; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.children) { + processChildren(child.props.children).forEach(slide => slides.push(slide)); + } + }); + return slides; +} +function getChildren(c) { + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.slot && slots[child.props.slot]) { + slots[child.props.slot].push(child); + } else if (child.props && child.props.children) { + const foundSlides = processChildren(child.props.children); + if (foundSlides.length > 0) { + foundSlides.forEach(slide => slides.push(slide)); + } else { + slots['container-end'].push(child); + } + } else { + slots['container-end'].push(child); + } + }); + return { + slides, + slots + }; +} + +function renderVirtual(swiper, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiper.isHorizontal() ? { + [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiper.params.loop ? -slides.length : 0; + const loopTo = swiper.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper, + style, + key: `slide-${index}` + }); + }); +} + +function useIsomorphicLayoutEffect(callback, deps) { + // eslint-disable-next-line + if (typeof window === 'undefined') return useEffect(callback, deps); + return useLayoutEffect(callback, deps); +} + +const SwiperSlideContext = /*#__PURE__*/createContext(null); +const useSwiperSlide = () => { + return useContext(SwiperSlideContext); +}; +const SwiperContext = /*#__PURE__*/createContext(null); +const useSwiper = () => { + return useContext(SwiperContext); +}; + +const Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) { + let { + className, + tag: Tag = 'div', + wrapperTag: WrapperTag = 'div', + children, + onSwiper, + ...rest + } = _temp === void 0 ? {} : _temp; + let eventsAssigned = false; + const [containerClasses, setContainerClasses] = useState('swiper'); + const [virtualData, setVirtualData] = useState(null); + const [breakpointChanged, setBreakpointChanged] = useState(false); + const initializedRef = useRef(false); + const swiperElRef = useRef(null); + const swiperRef = useRef(null); + const oldPassedParamsRef = useRef(null); + const oldSlides = useRef(null); + const nextElRef = useRef(null); + const prevElRef = useRef(null); + const paginationElRef = useRef(null); + const scrollbarElRef = useRef(null); + const { + params: swiperParams, + passedParams, + rest: restProps, + events + } = getParams(rest); + const { + slides, + slots + } = getChildren(children); + const onBeforeBreakpoint = () => { + setBreakpointChanged(!breakpointChanged); + }; + Object.assign(swiperParams.on, { + _containerClasses(swiper, classes) { + setContainerClasses(classes); + } + }); + const initSwiper = () => { + // init swiper + Object.assign(swiperParams.on, events); + eventsAssigned = true; + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.current = new Swiper$1(passParams); + if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) { + swiperRef.current.virtual.slides = slides; + const extendWith = { + cache: false, + slides, + renderExternal: setVirtualData, + renderExternalUpdate: false + }; + extend(swiperRef.current.params.virtual, extendWith); + extend(swiperRef.current.originalParams.virtual, extendWith); + } + }; + if (!swiperElRef.current) { + initSwiper(); + } + + // Listen for breakpoints change + if (swiperRef.current) { + swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint); + } + const attachEvents = () => { + if (eventsAssigned || !events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.on(eventName, events[eventName]); + }); + }; + const detachEvents = () => { + if (!events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.off(eventName, events[eventName]); + }); + }; + useEffect(() => { + return () => { + if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint); + }; + }); + + // set initialized flag + useEffect(() => { + if (!initializedRef.current && swiperRef.current) { + swiperRef.current.emitSlidesClasses(); + initializedRef.current = true; + } + }); + + // mount swiper + useIsomorphicLayoutEffect(() => { + if (externalElRef) { + externalElRef.current = swiperElRef.current; + } + if (!swiperElRef.current) return; + if (swiperRef.current.destroyed) { + initSwiper(); + } + mountSwiper({ + el: swiperElRef.current, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + paginationEl: paginationElRef.current, + scrollbarEl: scrollbarElRef.current, + swiper: swiperRef.current + }, swiperParams); + if (onSwiper) onSwiper(swiperRef.current); + // eslint-disable-next-line + return () => { + if (swiperRef.current && !swiperRef.current.destroyed) { + swiperRef.current.destroy(true, false); + } + }; + }, []); + + // watch for params change + useIsomorphicLayoutEffect(() => { + attachEvents(); + const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key); + oldPassedParamsRef.current = passedParams; + oldSlides.current = slides; + if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) { + updateSwiper({ + swiper: swiperRef.current, + slides, + passedParams, + changedParams, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + scrollbarEl: scrollbarElRef.current, + paginationEl: paginationElRef.current + }); + } + return () => { + detachEvents(); + }; + }); + + // update on virtual update + useIsomorphicLayoutEffect(() => { + updateOnVirtualData(swiperRef.current); + }, [virtualData]); + + // bypass swiper instance to slides + function renderSlides() { + if (swiperParams.virtual) { + return renderVirtual(swiperRef.current, slides, virtualData); + } + return slides.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper: swiperRef.current, + swiperSlideIndex: index + }); + }); + } + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: swiperElRef, + className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`) + }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, { + value: swiperRef.current + }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, { + className: wrapperClass(swiperParams.wrapperClass) + }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + ref: prevElRef, + className: "swiper-button-prev" + }), /*#__PURE__*/React.createElement("div", { + ref: nextElRef, + className: "swiper-button-next" + })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: scrollbarElRef, + className: "swiper-scrollbar" + }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: paginationElRef, + className: "swiper-pagination" + }), slots['container-end'])); +}); +Swiper.displayName = 'Swiper'; + +const SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) { + let { + tag: Tag = 'div', + children, + className = '', + swiper, + zoom, + lazy, + virtualIndex, + swiperSlideIndex, + ...rest + } = _temp === void 0 ? {} : _temp; + const slideElRef = useRef(null); + const [slideClasses, setSlideClasses] = useState('swiper-slide'); + const [lazyLoaded, setLazyLoaded] = useState(false); + function updateClasses(_s, el, classNames) { + if (el === slideElRef.current) { + setSlideClasses(classNames); + } + } + useIsomorphicLayoutEffect(() => { + if (typeof swiperSlideIndex !== 'undefined') { + slideElRef.current.swiperSlideIndex = swiperSlideIndex; + } + if (externalRef) { + externalRef.current = slideElRef.current; + } + if (!slideElRef.current || !swiper) { + return; + } + if (swiper.destroyed) { + if (slideClasses !== 'swiper-slide') { + setSlideClasses('swiper-slide'); + } + return; + } + swiper.on('_slideClass', updateClasses); + // eslint-disable-next-line + return () => { + if (!swiper) return; + swiper.off('_slideClass', updateClasses); + }; + }); + useIsomorphicLayoutEffect(() => { + if (swiper && slideElRef.current && !swiper.destroyed) { + setSlideClasses(swiper.getSlideClasses(slideElRef.current)); + } + }, [swiper]); + const slideData = { + isActive: slideClasses.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.indexOf('swiper-slide-next') >= 0 + }; + const renderChildren = () => { + return typeof children === 'function' ? children(slideData) : children; + }; + const onLoad = () => { + setLazyLoaded(true); + }; + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: slideElRef, + className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`), + "data-swiper-slide-index": virtualIndex, + onLoad: onLoad + }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, /*#__PURE__*/React.createElement("div", { + className: "swiper-zoom-container", + "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))); +}); +SwiperSlide.displayName = 'SwiperSlide'; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/src/assets/js/vendor/swiper/swiper-vars.less b/src/assets/js/vendor/swiper/swiper-vars.less new file mode 100644 index 0000000..a068f6d --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-vars.less @@ -0,0 +1 @@ +@themeColor: #007aff; diff --git a/src/assets/js/vendor/swiper/swiper-vars.scss b/src/assets/js/vendor/swiper/swiper-vars.scss new file mode 100644 index 0000000..819dec4 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-vars.scss @@ -0,0 +1 @@ +$themeColor: #007aff !default; diff --git a/src/assets/js/vendor/swiper/swiper-vue.d.ts b/src/assets/js/vendor/swiper/swiper-vue.d.ts new file mode 100644 index 0000000..a55dcbd --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-vue.d.ts @@ -0,0 +1,862 @@ +import type { + A11yOptions, + AutoplayOptions, + ControllerOptions, + CoverflowEffectOptions, + CubeEffectOptions, + FadeEffectOptions, + FlipEffectOptions, + CreativeEffectOptions, + CardsEffectOptions, + HashNavigationOptions, + HistoryOptions, + KeyboardOptions, + MousewheelOptions, + NavigationOptions, + PaginationOptions, + ParallaxOptions, + ScrollbarOptions, + ThumbsOptions, + VirtualOptions, + ZoomOptions, + FreeModeOptions, + GridOptions, +} from './types/index.d.ts'; +import { ComponentOptionsMixin, DefineComponent, PropType, Ref } from 'vue'; +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +declare const Swiper: DefineComponent< + { + tag: { + type: StringConstructor; + default: string; + }; + wrapperTag: { + type: StringConstructor; + default: string; + }; + modules: { + type: ArrayConstructor; + default: undefined; + }; + init: { + type: BooleanConstructor; + default: undefined; + }; + direction: { + type: PropType; + default: SwiperOptions['direction']; + }; + oneWayMovement: { + type: PropType; + default: SwiperOptions['oneWayMovement']; + }; + touchEventsTarget: { + type: PropType; + default: undefined; + }; + initialSlide: { + type: NumberConstructor; + default: undefined; + }; + speed: { type: NumberConstructor; default: undefined }; + cssMode: { type: BooleanConstructor; default: undefined }; + updateOnWindowResize: { + type: BooleanConstructor; + default: undefined; + }; + resizeObserver: { + type: BooleanConstructor; + default: undefined; + }; + nested: { type: BooleanConstructor; default: undefined }; + focusableElements: { + type: StringConstructor; + default: undefined; + }; + width: { type: NumberConstructor; default: undefined }; + height: { type: NumberConstructor; default: undefined }; + preventInteractionOnTransition: { + type: BooleanConstructor; + default: undefined; + }; + userAgent: { type: StringConstructor; default: undefined }; + url: { type: StringConstructor; default: undefined }; + edgeSwipeDetection: { + type: BooleanConstructor | StringConstructor; + default: undefined; + }; + edgeSwipeThreshold: { + type: NumberConstructor; + default: undefined; + }; + autoHeight: { + type: BooleanConstructor; + default: undefined; + }; + setWrapperSize: { + type: BooleanConstructor; + default: undefined; + }; + virtualTranslate: { + type: BooleanConstructor; + default: undefined; + }; + effect: { + type: PropType; + default: undefined; + }; + breakpoints: { + type: PropType; + default: undefined; + }; + spaceBetween: { + type: PropType; + default: undefined; + }; + slidesPerView: { + type: PropType; + default: undefined; + }; + maxBackfaceHiddenSlides: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroup: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupSkip: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupAuto: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlides: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlidesBounds: { + type: BooleanConstructor; + default: undefined; + }; + slidesOffsetBefore: { + type: NumberConstructor; + default: undefined; + }; + slidesOffsetAfter: { + type: NumberConstructor; + default: undefined; + }; + normalizeSlideIndex: { + type: BooleanConstructor; + default: undefined; + }; + centerInsufficientSlides: { + type: BooleanConstructor; + default: undefined; + }; + watchOverflow: { + type: BooleanConstructor; + default: undefined; + }; + roundLengths: { + type: BooleanConstructor; + default: undefined; + }; + touchRatio: { + type: NumberConstructor; + default: undefined; + }; + touchAngle: { + type: NumberConstructor; + default: undefined; + }; + simulateTouch: { + type: BooleanConstructor; + default: undefined; + }; + shortSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipesRatio: { + type: NumberConstructor; + default: undefined; + }; + longSwipesMs: { + type: NumberConstructor; + default: undefined; + }; + followFinger: { + type: BooleanConstructor; + default: undefined; + }; + allowTouchMove: { + type: BooleanConstructor; + default: undefined; + }; + threshold: { type: NumberConstructor; default: undefined }; + touchMoveStopPropagation: { + type: BooleanConstructor; + default: undefined; + }; + touchStartPreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchStartForcePreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchReleaseOnEdges: { + type: BooleanConstructor; + default: undefined; + }; + uniqueNavElements: { + type: BooleanConstructor; + default: undefined; + }; + resistance: { + type: BooleanConstructor; + default: undefined; + }; + resistanceRatio: { + type: NumberConstructor; + default: undefined; + }; + watchSlidesProgress: { + type: BooleanConstructor; + default: undefined; + }; + grabCursor: { + type: BooleanConstructor; + default: undefined; + }; + preventClicks: { + type: BooleanConstructor; + default: undefined; + }; + preventClicksPropagation: { + type: BooleanConstructor; + default: undefined; + }; + slideToClickedSlide: { + type: BooleanConstructor; + default: undefined; + }; + loop: { type: BooleanConstructor; default: undefined }; + loopAddBlankSlides: { type: BooleanConstructor; default: undefined }; + loopAdditionalSlides: { + type: NumberConstructor; + default: undefined; + }; + loopPreventsSliding: { type: BooleanConstructor; default: undefined }; + rewind: { type: BooleanConstructor; default: undefined }; + allowSlidePrev: { + type: BooleanConstructor; + default: undefined; + }; + allowSlideNext: { + type: BooleanConstructor; + default: undefined; + }; + swipeHandler: { + type: BooleanConstructor; + default: undefined; + }; + noSwiping: { + type: BooleanConstructor; + default: undefined; + }; + noSwipingClass: { + type: StringConstructor; + default: undefined; + }; + noSwipingSelector: { + type: StringConstructor; + default: undefined; + }; + passiveListeners: { + type: BooleanConstructor; + default: undefined; + }; + containerModifierClass: { + type: StringConstructor; + default: undefined; + }; + slideClass: { + type: StringConstructor; + default: undefined; + }; + slideActiveClass: { + type: StringConstructor; + default: undefined; + }; + slideVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideFullyVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideBlankClass: { + type: StringConstructor; + default: undefined; + }; + slideNextClass: { + type: StringConstructor; + default: undefined; + }; + slidePrevClass: { + type: StringConstructor; + default: undefined; + }; + wrapperClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloaderClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloadPrevNext: { + type: NumberConstructor; + default: undefined; + }; + runCallbacksOnInit: { + type: BooleanConstructor; + default: undefined; + }; + observer: { type: BooleanConstructor; default: undefined }; + observeParents: { + type: BooleanConstructor; + default: undefined; + }; + observeSlideChildren: { + type: BooleanConstructor; + default: undefined; + }; + a11y: { + type: PropType; + default: undefined; + }; + autoplay: { + type: PropType; + default: undefined; + }; + controller: { + type: PropType; + default: undefined; + }; + coverflowEffect: { + type: PropType; + default: undefined; + }; + cubeEffect: { + type: PropType; + default: undefined; + }; + fadeEffect: { + type: PropType; + default: undefined; + }; + flipEffect: { + type: PropType; + default: undefined; + }; + creativeEffect: { + type: PropType; + default: undefined; + }; + cardsEffect: { + type: PropType; + default: undefined; + }; + hashNavigation: { + type: PropType; + default: undefined; + }; + history: { + type: PropType; + default: undefined; + }; + keyboard: { + type: PropType; + default: undefined; + }; + mousewheel: { + type: PropType; + default: undefined; + }; + navigation: { + type: PropType; + default: undefined; + }; + pagination: { + type: PropType; + default: undefined; + }; + parallax: { + type: PropType; + default: undefined; + }; + scrollbar: { + type: PropType; + default: undefined; + }; + thumbs: { type: PropType; default: undefined }; + virtual: { + type: PropType; + default: undefined; + }; + zoom: { + type: PropType; + default: undefined; + }; + freeMode: { + type: PropType; + default: undefined; + }; + grid: { + type: PropType; + default: undefined; + }; + }, + () => JSX.Element, + unknown, + {}, + {}, + ComponentOptionsMixin, + ComponentOptionsMixin, + { + swiper: (swiper: SwiperClass) => void; + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + hashChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + keyPress: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: SwiperClass) => void;/** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + zoomChange: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: SwiperClass) => void; + + } +>; + +declare const SwiperSlide: DefineComponent<{ + tag: { + type: StringConstructor; + default: string; + }; + swiperRef: { type: PropType; required: false }; + lazy: { type: BooleanConstructor; default: false }; + zoom: { type: BooleanConstructor; default: undefined }; + virtualIndex: { + type: StringConstructor | NumberConstructor; + default: undefined; + }; +}>; + +declare const useSwiper: () => Ref; +declare const useSwiperSlide: () => Ref<{ + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +}>; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/src/assets/js/vendor/swiper/swiper-vue.mjs b/src/assets/js/vendor/swiper/swiper-vue.mjs new file mode 100644 index 0000000..3a95b34 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper-vue.mjs @@ -0,0 +1,816 @@ +/** + * Swiper Vue 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +import { h, ref, onUpdated, provide, watch, nextTick, onMounted, onBeforeUnmount, onBeforeUpdate, computed, inject } from 'vue'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, a as getChangedParams, u as updateOnVirtualData, m as mountSwiper } from './shared/update-on-virtual-data.mjs'; +import { e as extend, u as updateSwiper, d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination } from './shared/update-swiper.mjs'; + +function getChildren(originalSlots, slidesRef, oldSlidesRef) { + if (originalSlots === void 0) { + originalSlots = {}; + } + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + const getSlidesFromElements = (els, slotName) => { + if (!Array.isArray(els)) { + return; + } + els.forEach(vnode => { + const isFragment = typeof vnode.type === 'symbol'; + if (slotName === 'default') slotName = 'container-end'; + if (isFragment && vnode.children) { + getSlidesFromElements(vnode.children, slotName); + } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper')) { + slides.push(vnode); + } else if (slots[slotName]) { + slots[slotName].push(vnode); + } + }); + }; + Object.keys(originalSlots).forEach(slotName => { + if (typeof originalSlots[slotName] !== 'function') return; + const els = originalSlots[slotName](); + getSlidesFromElements(els, slotName); + }); + oldSlidesRef.value = slidesRef.value; + slidesRef.value = slides; + return { + slides, + slots + }; +} + +function renderVirtual(swiperRef, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiperRef.value.isHorizontal() ? { + [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiperRef.value.params.loop ? -slides.length : 0; + const loopTo = swiperRef.value.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map(slide => { + if (!slide.props) slide.props = {}; + if (!slide.props.style) slide.props.style = {}; + slide.props.swiperRef = swiperRef; + slide.props.style = style; + return h(slide.type, { + ...slide.props + }, slide.children); + }); +} + +const Swiper = { + name: 'Swiper', + props: { + tag: { + type: String, + default: 'div' + }, + wrapperTag: { + type: String, + default: 'div' + }, + modules: { + type: Array, + default: undefined + }, + init: { + type: Boolean, + default: undefined + }, + direction: { + type: String, + default: undefined + }, + oneWayMovement: { + type: Boolean, + default: undefined + }, + touchEventsTarget: { + type: String, + default: undefined + }, + initialSlide: { + type: Number, + default: undefined + }, + speed: { + type: Number, + default: undefined + }, + cssMode: { + type: Boolean, + default: undefined + }, + updateOnWindowResize: { + type: Boolean, + default: undefined + }, + resizeObserver: { + type: Boolean, + default: undefined + }, + nested: { + type: Boolean, + default: undefined + }, + focusableElements: { + type: String, + default: undefined + }, + width: { + type: Number, + default: undefined + }, + height: { + type: Number, + default: undefined + }, + preventInteractionOnTransition: { + type: Boolean, + default: undefined + }, + userAgent: { + type: String, + default: undefined + }, + url: { + type: String, + default: undefined + }, + edgeSwipeDetection: { + type: [Boolean, String], + default: undefined + }, + edgeSwipeThreshold: { + type: Number, + default: undefined + }, + autoHeight: { + type: Boolean, + default: undefined + }, + setWrapperSize: { + type: Boolean, + default: undefined + }, + virtualTranslate: { + type: Boolean, + default: undefined + }, + effect: { + type: String, + default: undefined + }, + breakpoints: { + type: Object, + default: undefined + }, + spaceBetween: { + type: [Number, String], + default: undefined + }, + slidesPerView: { + type: [Number, String], + default: undefined + }, + maxBackfaceHiddenSlides: { + type: Number, + default: undefined + }, + slidesPerGroup: { + type: Number, + default: undefined + }, + slidesPerGroupSkip: { + type: Number, + default: undefined + }, + slidesPerGroupAuto: { + type: Boolean, + default: undefined + }, + centeredSlides: { + type: Boolean, + default: undefined + }, + centeredSlidesBounds: { + type: Boolean, + default: undefined + }, + slidesOffsetBefore: { + type: Number, + default: undefined + }, + slidesOffsetAfter: { + type: Number, + default: undefined + }, + normalizeSlideIndex: { + type: Boolean, + default: undefined + }, + centerInsufficientSlides: { + type: Boolean, + default: undefined + }, + watchOverflow: { + type: Boolean, + default: undefined + }, + roundLengths: { + type: Boolean, + default: undefined + }, + touchRatio: { + type: Number, + default: undefined + }, + touchAngle: { + type: Number, + default: undefined + }, + simulateTouch: { + type: Boolean, + default: undefined + }, + shortSwipes: { + type: Boolean, + default: undefined + }, + longSwipes: { + type: Boolean, + default: undefined + }, + longSwipesRatio: { + type: Number, + default: undefined + }, + longSwipesMs: { + type: Number, + default: undefined + }, + followFinger: { + type: Boolean, + default: undefined + }, + allowTouchMove: { + type: Boolean, + default: undefined + }, + threshold: { + type: Number, + default: undefined + }, + touchMoveStopPropagation: { + type: Boolean, + default: undefined + }, + touchStartPreventDefault: { + type: Boolean, + default: undefined + }, + touchStartForcePreventDefault: { + type: Boolean, + default: undefined + }, + touchReleaseOnEdges: { + type: Boolean, + default: undefined + }, + uniqueNavElements: { + type: Boolean, + default: undefined + }, + resistance: { + type: Boolean, + default: undefined + }, + resistanceRatio: { + type: Number, + default: undefined + }, + watchSlidesProgress: { + type: Boolean, + default: undefined + }, + grabCursor: { + type: Boolean, + default: undefined + }, + preventClicks: { + type: Boolean, + default: undefined + }, + preventClicksPropagation: { + type: Boolean, + default: undefined + }, + slideToClickedSlide: { + type: Boolean, + default: undefined + }, + loop: { + type: Boolean, + default: undefined + }, + loopedSlides: { + type: Number, + default: undefined + }, + loopPreventsSliding: { + type: Boolean, + default: undefined + }, + rewind: { + type: Boolean, + default: undefined + }, + allowSlidePrev: { + type: Boolean, + default: undefined + }, + allowSlideNext: { + type: Boolean, + default: undefined + }, + swipeHandler: { + type: Boolean, + default: undefined + }, + noSwiping: { + type: Boolean, + default: undefined + }, + noSwipingClass: { + type: String, + default: undefined + }, + noSwipingSelector: { + type: String, + default: undefined + }, + passiveListeners: { + type: Boolean, + default: undefined + }, + containerModifierClass: { + type: String, + default: undefined + }, + slideClass: { + type: String, + default: undefined + }, + slideActiveClass: { + type: String, + default: undefined + }, + slideVisibleClass: { + type: String, + default: undefined + }, + slideFullyVisibleClass: { + type: String, + default: undefined + }, + slideBlankClass: { + type: String, + default: undefined + }, + slideNextClass: { + type: String, + default: undefined + }, + slidePrevClass: { + type: String, + default: undefined + }, + wrapperClass: { + type: String, + default: undefined + }, + lazyPreloaderClass: { + type: String, + default: undefined + }, + lazyPreloadPrevNext: { + type: Number, + default: undefined + }, + runCallbacksOnInit: { + type: Boolean, + default: undefined + }, + observer: { + type: Boolean, + default: undefined + }, + observeParents: { + type: Boolean, + default: undefined + }, + observeSlideChildren: { + type: Boolean, + default: undefined + }, + a11y: { + type: [Boolean, Object], + default: undefined + }, + autoplay: { + type: [Boolean, Object], + default: undefined + }, + controller: { + type: Object, + default: undefined + }, + coverflowEffect: { + type: Object, + default: undefined + }, + cubeEffect: { + type: Object, + default: undefined + }, + fadeEffect: { + type: Object, + default: undefined + }, + flipEffect: { + type: Object, + default: undefined + }, + creativeEffect: { + type: Object, + default: undefined + }, + cardsEffect: { + type: Object, + default: undefined + }, + hashNavigation: { + type: [Boolean, Object], + default: undefined + }, + history: { + type: [Boolean, Object], + default: undefined + }, + keyboard: { + type: [Boolean, Object], + default: undefined + }, + mousewheel: { + type: [Boolean, Object], + default: undefined + }, + navigation: { + type: [Boolean, Object], + default: undefined + }, + pagination: { + type: [Boolean, Object], + default: undefined + }, + parallax: { + type: [Boolean, Object], + default: undefined + }, + scrollbar: { + type: [Boolean, Object], + default: undefined + }, + thumbs: { + type: Object, + default: undefined + }, + virtual: { + type: [Boolean, Object], + default: undefined + }, + zoom: { + type: [Boolean, Object], + default: undefined + }, + grid: { + type: [Object], + default: undefined + }, + freeMode: { + type: [Boolean, Object], + default: undefined + }, + enabled: { + type: Boolean, + default: undefined + } + }, + emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', '_freeModeNoMomentumRelease', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'autoplayPause', 'autoplayResume', 'autoplayTimeLeft', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'breakpointsBase', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick', 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'init', 'keyPress', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'navigationPrev', 'navigationNext', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slidesUpdated', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'unlock', 'update', 'virtualUpdate', 'zoomChange'], + setup(props, _ref) { + let { + slots: originalSlots, + emit + } = _ref; + const { + tag: Tag, + wrapperTag: WrapperTag + } = props; + const containerClasses = ref('swiper'); + const virtualData = ref(null); + const breakpointChanged = ref(false); + const initializedRef = ref(false); + const swiperElRef = ref(null); + const swiperRef = ref(null); + const oldPassedParamsRef = ref(null); + const slidesRef = { + value: [] + }; + const oldSlidesRef = { + value: [] + }; + const nextElRef = ref(null); + const prevElRef = ref(null); + const paginationElRef = ref(null); + const scrollbarElRef = ref(null); + const { + params: swiperParams, + passedParams + } = getParams(props, false); + getChildren(originalSlots, slidesRef, oldSlidesRef); + oldPassedParamsRef.value = passedParams; + oldSlidesRef.value = slidesRef.value; + const onBeforeBreakpoint = () => { + getChildren(originalSlots, slidesRef, oldSlidesRef); + breakpointChanged.value = true; + }; + swiperParams.onAny = function (event) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + emit(event, ...args); + }; + Object.assign(swiperParams.on, { + _beforeBreakpoint: onBeforeBreakpoint, + _containerClasses(swiper, classes) { + containerClasses.value = classes; + } + }); + + // init Swiper + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.value = new Swiper$1(passParams); + if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) { + swiperRef.value.virtual.slides = slidesRef.value; + const extendWith = { + cache: false, + slides: slidesRef.value, + renderExternal: data => { + virtualData.value = data; + }, + renderExternalUpdate: false + }; + extend(swiperRef.value.params.virtual, extendWith); + extend(swiperRef.value.originalParams.virtual, extendWith); + } + onUpdated(() => { + // set initialized flag + if (!initializedRef.value && swiperRef.value) { + swiperRef.value.emitSlidesClasses(); + initializedRef.value = true; + } + // watch for params change + const { + passedParams: newPassedParams + } = getParams(props, false); + const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value, c => c.props && c.props.key); + oldPassedParamsRef.value = newPassedParams; + if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) { + updateSwiper({ + swiper: swiperRef.value, + slides: slidesRef.value, + passedParams: newPassedParams, + changedParams, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + scrollbarEl: scrollbarElRef.value, + paginationEl: paginationElRef.value + }); + } + breakpointChanged.value = false; + }); + provide('swiper', swiperRef); + + // update on virtual update + watch(virtualData, () => { + nextTick(() => { + updateOnVirtualData(swiperRef.value); + }); + }); + + // mount swiper + onMounted(() => { + if (!swiperElRef.value) return; + mountSwiper({ + el: swiperElRef.value, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + paginationEl: paginationElRef.value, + scrollbarEl: scrollbarElRef.value, + swiper: swiperRef.value + }, swiperParams); + emit('swiper', swiperRef.value); + }); + onBeforeUnmount(() => { + if (swiperRef.value && !swiperRef.value.destroyed) { + swiperRef.value.destroy(true, false); + } + }); + + // bypass swiper instance to slides + function renderSlides(slides) { + if (swiperParams.virtual) { + return renderVirtual(swiperRef, slides, virtualData.value); + } + slides.forEach((slide, index) => { + if (!slide.props) slide.props = {}; + slide.props.swiperRef = swiperRef; + slide.props.swiperSlideIndex = index; + }); + return slides; + } + return () => { + const { + slides, + slots + } = getChildren(originalSlots, slidesRef, oldSlidesRef); + return h(Tag, { + ref: swiperElRef, + class: uniqueClasses(containerClasses.value) + }, [slots['container-start'], h(WrapperTag, { + class: wrapperClass(swiperParams.wrapperClass) + }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), needsNavigation(props) && [h('div', { + ref: prevElRef, + class: 'swiper-button-prev' + }), h('div', { + ref: nextElRef, + class: 'swiper-button-next' + })], needsScrollbar(props) && h('div', { + ref: scrollbarElRef, + class: 'swiper-scrollbar' + }), needsPagination(props) && h('div', { + ref: paginationElRef, + class: 'swiper-pagination' + }), slots['container-end']]); + }; + } +}; + +const SwiperSlide = { + name: 'SwiperSlide', + props: { + tag: { + type: String, + default: 'div' + }, + swiperRef: { + type: Object, + required: false + }, + swiperSlideIndex: { + type: Number, + default: undefined, + required: false + }, + zoom: { + type: Boolean, + default: undefined, + required: false + }, + lazy: { + type: Boolean, + default: false, + required: false + }, + virtualIndex: { + type: [String, Number], + default: undefined + } + }, + setup(props, _ref) { + let { + slots + } = _ref; + let eventAttached = false; + const { + swiperRef + } = props; + const slideElRef = ref(null); + const slideClasses = ref('swiper-slide'); + const lazyLoaded = ref(false); + function updateClasses(swiper, el, classNames) { + if (el === slideElRef.value) { + slideClasses.value = classNames; + } + } + onMounted(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onBeforeUpdate(() => { + if (eventAttached || !swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onUpdated(() => { + if (!slideElRef.value || !swiperRef || !swiperRef.value) return; + if (typeof props.swiperSlideIndex !== 'undefined') { + slideElRef.value.swiperSlideIndex = props.swiperSlideIndex; + } + if (swiperRef.value.destroyed) { + if (slideClasses.value !== 'swiper-slide') { + slideClasses.value = 'swiper-slide'; + } + } + }); + onBeforeUnmount(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.off('_slideClass', updateClasses); + }); + const slideData = computed(() => ({ + isActive: slideClasses.value.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 + })); + provide('swiperSlide', slideData); + const onLoad = () => { + lazyLoaded.value = true; + }; + return () => { + return h(props.tag, { + class: uniqueClasses(`${slideClasses.value}`), + ref: slideElRef, + 'data-swiper-slide-index': typeof props.virtualIndex === 'undefined' && swiperRef && swiperRef.value && swiperRef.value.params.loop ? props.swiperSlideIndex : props.virtualIndex, + onLoadCapture: onLoad + }, props.zoom ? h('div', { + class: 'swiper-zoom-container', + 'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined + }, [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]) : [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]); + }; + } +}; + +const useSwiperSlide = () => { + return inject('swiperSlide'); +}; +const useSwiper = () => { + return inject('swiper'); +}; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/src/assets/js/vendor/swiper/swiper.css b/src/assets/js/vendor/swiper/swiper.css new file mode 100644 index 0000000..3f74534 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.css @@ -0,0 +1,228 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ diff --git a/src/assets/js/vendor/swiper/swiper.d.ts b/src/assets/js/vendor/swiper/swiper.d.ts new file mode 100644 index 0000000..07e4e50 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.d.ts @@ -0,0 +1,5 @@ +// @ts-ignore +import Swiper from './types/swiper-class.d.ts'; + +export default Swiper; +export { Swiper }; diff --git a/src/assets/js/vendor/swiper/swiper.js b/src/assets/js/vendor/swiper/swiper.js new file mode 100644 index 0000000..faaec5a --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.js @@ -0,0 +1,4297 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + return { + isSafari: needPerspectiveFix || isSafari(), + needPerspectiveFix, + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + slidesPrepended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + return Swiper; + +})(); diff --git a/src/assets/js/vendor/swiper/swiper.less b/src/assets/js/vendor/swiper/swiper.less new file mode 100644 index 0000000..72068ac --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.less @@ -0,0 +1,251 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +@themeColor: #007aff; + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ + +:root { + --swiper-theme-color: @themeColor; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/src/assets/js/vendor/swiper/swiper.min.css b/src/assets/js/vendor/swiper/swiper.min.css new file mode 100644 index 0000000..5fd6a93 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper.min.js b/src/assets/js/vendor/swiper/swiper.min.js new file mode 100644 index 0000000..0981f95 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function h(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function f(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let S,T,b;function x(){return S||(S=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),S}function y(e){return void 0===e&&(e={}),T||(T=function(e){let{userAgent:t}=void 0===e?{}:e;const s=x(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!f&&(o.os="android",o.android=!0),(p||h||u)&&(o.os="ios",o.ios=!0),o}(e)),T}function E(){return b||(b=function(){const e=n();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,i]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&i<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),b}var M={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const C=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},P=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},I=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&P(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&P(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?y=parseFloat(y.replace("%",""))/100*n:"string"==typeof y&&(y=parseFloat(y)),e.virtualSize=-y,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let I;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+y;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${y}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(y||0)})),e-=y;const t=e-n;f=f.map((e=>e<=0?-S:e>t?t+T:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(y||0)})),e-=y,e{f[s]=e-t})),m.forEach(((e,s)=>{m[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:f,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),f.length!==b&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==x&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let o=s.spaceBetween;"string"==typeof o&&o.indexOf("%")>=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&h<=t.size||u<=0&&h>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),f&&i[e].classList.add(s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(l.classList.add(s.slideActiveClass),a?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&I(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(h?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let S;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),S=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=s}))):f[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,S),0===t?n.transitionEnd(s,S):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,S))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this,n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let i=r.params.slidesPerView;"auto"===i?i=r.slidesPerViewDynamic():(i=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r)return i;let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l)return i;const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map((e=>p(e)));let f=n[h.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var z={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{h(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):x=n;const y="next"===i||!i,E="prev"===i||!i;let M=0,C=0;const P=S?Math.ceil(d.length/h.grid.rows):d.length,I=(S?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(I=0;t-=1)d[t].column===e&&T.push(t)}else T.push(P-t-1)}}else if(I+v>P-w){C=Math.max(I-(P-2*w),g);for(let e=0;e{e.column===t&&b.push(s)})):b.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),y&&b.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():S&&(T.length>0&&E||b.length>0&&y)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),h.watchSlidesProgress&&l.updateSlidesOffset(),s)if(T.length>0&&E){if(void 0===t){const e=l.slidesGrid[x],t=l.slidesGrid[x+M]-e;o?l.setTranslate(l.translate-t):(l.slideTo(x+M,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=S?T.length/h.grid.rows:T.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(b.length>0&&y)if(void 0===t){const e=l.slidesGrid[x],t=l.slidesGrid[x-C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(x-C,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=S?b.length/h.grid.rows:b.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function G(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function D(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void G(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(p))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!G(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const S=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!S||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function _(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const S=s.params.loop&&!n.cssMode,T="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(S&&T&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&S&&T&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let b=!0,x=n.resistanceRatio;if(n.touchReleaseOnEdges&&(x=0),v>0?(S&&T&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(b=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**x))):v<0&&(S&&T&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,S=null;n.rewind&&(t.isBeginning?S=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const T=(f-c[v])/g,b=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(T>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+b):t.slideTo(v)),"prev"===t.swipeDirection&&(T>1-n.longSwipesRatio?t.slideTo(v+b):null!==S&&T<0&&Math.abs(T)>n.longSwipesRatio?t.slideTo(S):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+b):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+b),"prev"===t.swipeDirection&&t.slideTo(null!==S?S:v))}}function N(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function F(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function B(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function $(e){const t=this;C(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function H(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const R=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",N,!0):e[c]("observerUpdate",N,!0),n[d]("load",e.onLoad,{capture:!0})};const j=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var W={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Y(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const q={eventsEmitter:M,update:L,translate:k,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),O({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),O({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:A,loop:z,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=D.bind(e),e.onTouchMove=_.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=H.bind(e),t.cssMode&&(e.onScroll=B.bind(e)),e.onClick=F.bind(e),e.onLoad=$.bind(e),R(e,"on")},detachEvents:function(){R(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=j(e,i),d=j(e,o),p=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u),f=i.loop;u&&s&&e.changeDirection(),c(e.params,o);const m=e.params.enabled,v=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(h?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!f&&v?(e.loopCreate(t),e.updateSlides()):f&&!v&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},X={};class U{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new U(i))})),e}const o=this;o.__swiper__=!0,o.support=x(),o.device=y({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:Y(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},W,l);return o.params=c({},d,X,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(h(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?i[o].swiperSlideSize:0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&C(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?C(t,e):e.addEventListener("load",(e=>{C(t,e.target)}))})),I(t),t.initialized=!0,I(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttribute("style"),n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(X,e)}static get extendedDefaults(){return X}static get defaults(){return W}static installModule(e){U.prototype.__modules__||(U.prototype.__modules__=[]);const t=U.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>U.installModule(e))),U):(U.installModule(e),U)}}return Object.keys(q).forEach((e=>{Object.keys(q[e]).forEach((t=>{U.prototype[t]=q[e][t]}))})),U.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]),U}(); +//# sourceMappingURL=swiper.min.js.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper.min.js.map b/src/assets/js/vendor/swiper/swiper.min.js.map new file mode 100644 index 0000000..c9feb51 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","slideEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","push","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","parentElement","elementParents","disconnect"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper.min.mjs b/src/assets/js/vendor/swiper/swiper.min.mjs new file mode 100644 index 0000000..9bbeaa6 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +export{S as Swiper,S as default}from"./shared/swiper-core.min.mjs"; +//# sourceMappingURL=swiper.min.mjs.map \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper.min.mjs.map b/src/assets/js/vendor/swiper/swiper.min.mjs.map new file mode 100644 index 0000000..6938270 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.mjs.mjs","names":["S"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,YAAaA,iBAAoB"} \ No newline at end of file diff --git a/src/assets/js/vendor/swiper/swiper.mjs b/src/assets/js/vendor/swiper/swiper.mjs new file mode 100644 index 0000000..39b5bc2 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.mjs @@ -0,0 +1,13 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +export { S as Swiper, S as default } from './shared/swiper-core.mjs'; diff --git a/src/assets/js/vendor/swiper/swiper.scss b/src/assets/js/vendor/swiper/swiper.scss new file mode 100644 index 0000000..1fd2163 --- /dev/null +++ b/src/assets/js/vendor/swiper/swiper.scss @@ -0,0 +1,252 @@ +/** + * Swiper 11.0.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2023 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: November 22, 2023 + */ + +@import 'swiper-vars.scss'; +@at-root { + @font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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') + format('woff'); + font-weight: 400; + font-style: normal; + } +} +@at-root { + :root { + --swiper-theme-color: #{$themeColor}; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ + } +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/src/assets/js/vendor/swiper/types/index.d.ts b/src/assets/js/vendor/swiper/types/index.d.ts new file mode 100644 index 0000000..e6e0dc4 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/index.d.ts @@ -0,0 +1,6 @@ +// @ts-nocheck +export * from './shared.d.ts'; +export { default as Swiper } from './swiper-class.d.ts'; +export * from './swiper-events.d.ts'; +export * from './swiper-options.d.ts'; +export * from './modules/public-api.d.ts'; diff --git a/src/assets/js/vendor/swiper/types/modules/a11y.d.ts b/src/assets/js/vendor/swiper/types/modules/a11y.d.ts new file mode 100644 index 0000000..134f158 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/a11y.d.ts @@ -0,0 +1,96 @@ +export interface A11yMethods {} + +export interface A11yEvents {} + +export interface A11yOptions { + /** + * Enables A11y + * + * @default true + */ + enabled?: boolean; + + /** + * Message for screen readers for previous button + * + * @default 'Previous slide' + */ + prevSlideMessage?: string; + + /** + * Message for screen readers for next button + * + * @default 'Next slide' + */ + nextSlideMessage?: string; + + /** + * Message for screen readers for previous button when swiper is on first slide + * + * @default 'This is the first slide' + */ + firstSlideMessage?: string; + + /** + * Message for screen readers for next button when swiper is on last slide + * + * @default 'This is the last slide' + */ + lastSlideMessage?: string; + + /** + * Message for screen readers for single pagination bullet + * + * @default 'Go to slide {{index}}' + */ + paginationBulletMessage?: string; + + /** + * CSS class name of A11y notification + * + * @default 'swiper-notification' + */ + notificationClass?: string; + + /** + * Message for screen readers for outer swiper container + * + * @default null + */ + containerMessage?: string | null; + + /** + * Message for screen readers describing the role of outer swiper container + * + * @default null + */ + containerRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the role of slide element + * + * @default null + */ + itemRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the label of slide element + * + * @default '{{index}} / {{slidesLength}}' + */ + slideLabelMessage?: string; + + /** + * Value of swiper slide `role` attribute + * + * @default 'group' + */ + slideRole?: string; + + /** + * Value of `id` attribute to be set on swiper-wrapper. If `null` will be generated automatically + * + * @default null + */ + id?: string | number | null; +} diff --git a/src/assets/js/vendor/swiper/types/modules/autoplay.d.ts b/src/assets/js/vendor/swiper/types/modules/autoplay.d.ts new file mode 100644 index 0000000..4c87488 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/autoplay.d.ts @@ -0,0 +1,133 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface AutoplayMethods { + /** + * Whether autoplay enabled and running + */ + running: boolean; + + /** + * Whether autoplay is paused + */ + paused: boolean; + + /** + * If autoplay is paused, it contains time left (in ms) before transition to next slide + */ + timeLeft: number; + + /** + * Pause autoplay + */ + pause(): void; + + /** + * Resume autoplay + */ + resume(): void; + + /** + * Start autoplay + */ + start(): boolean; + + /** + * Stop autoplay + */ + stop(): boolean; +} + +export interface AutoplayEvents { + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: Swiper) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: Swiper) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: Swiper, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: Swiper) => void; +} + +/** + * Object with autoplay parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + * }); + * ``` + */ +export interface AutoplayOptions { + /** + * Delay between transitions (in ms). If this parameter is not specified, auto play will be disabled + * + * If you need to specify different delay for specific slides you can do it by using + * `data-swiper-autoplay` (in ms) attribute on slide. + * + * @example + * ```html + * + *
    + * ``` + * + * @default 3000 + */ + delay?: number; + + /** + * Enable this parameter and autoplay will be stopped when it reaches last slide (has no effect in loop mode) + * + * @default false + */ + stopOnLastSlide?: boolean; + + /** + * Set to `false` and autoplay will not be disabled after user interactions (swipes), + * it will be restarted every time after interaction + * + * @default true + */ + disableOnInteraction?: boolean; + + /** + * Enables autoplay in reverse direction + * + * @default false + */ + reverseDirection?: boolean; + + /** + * When enabled autoplay will wait for wrapper transition to continue. + * Can be disabled in case of using Virtual Translate when your + * slider may not have transition + * + * @default true + */ + waitForTransition?: boolean; + + /** + * When enabled autoplay will be paused on pointer (mouse) enter over Swiper container. + * + * @default false + */ + pauseOnMouseEnter?: boolean; +} diff --git a/src/assets/js/vendor/swiper/types/modules/controller.d.ts b/src/assets/js/vendor/swiper/types/modules/controller.d.ts new file mode 100644 index 0000000..cf61aef --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/controller.d.ts @@ -0,0 +1,35 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ControllerMethods { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper + */ + control?: Swiper | Swiper[]; +} + +export interface ControllerEvents {} + +export interface ControllerOptions { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper. Also accepts string with CSS selector of Swiper element, or HTMLElement of Swiper element + */ + control?: Swiper | Swiper[] | string | HTMLElement | null; + + /** + * Set to `true` and controlling will be in inverse direction + * + * @default false + */ + inverse?: boolean; + + /** + * Defines a way how to control another slider: slide by slide + * (with respect to other slider's grid) or depending on all slides/container + * (depending on total slider percentage). + * + * @default 'slide' + */ + by?: 'slide' | 'container'; +} diff --git a/src/assets/js/vendor/swiper/types/modules/effect-cards.d.ts b/src/assets/js/vendor/swiper/types/modules/effect-cards.d.ts new file mode 100644 index 0000000..9f688a4 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/effect-cards.d.ts @@ -0,0 +1,33 @@ +export interface CardsEffectMethods {} + +export interface CardsEffectEvents {} + +export interface CardsEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + + /** + * Enables cards rotation + * + * @default true + */ + rotate?: boolean; + + /** + * Rotate angle per slide (in degrees) + * + * @default 2 + */ + perSlideRotate?: number; + + /** + * Offset distance per slide (in px) + * + * @default 8 + */ + perSlideOffset?: number; +} diff --git a/src/assets/js/vendor/swiper/types/modules/effect-coverflow.d.ts b/src/assets/js/vendor/swiper/types/modules/effect-coverflow.d.ts new file mode 100644 index 0000000..847201f --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/effect-coverflow.d.ts @@ -0,0 +1,42 @@ +export interface CoverflowEffectMethods {} + +export interface CoverflowEffectEvents {} + +export interface CoverflowEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Slide rotate in degrees + * + * @default 50 + */ + rotate?: number; + /** + * Stretch space between slides (in px) + * + * @default 0 + */ + stretch?: number; + /** + * Depth offset in px (slides translate in Z axis) + * + * @default 100 + */ + depth?: number; + /** + * Slide scale effect + * + * @default 1 + */ + scale?: number; + /** + * Effect multiplier + * + * @default 1 + */ + modifier?: number; +} diff --git a/src/assets/js/vendor/swiper/types/modules/effect-creative.d.ts b/src/assets/js/vendor/swiper/types/modules/effect-creative.d.ts new file mode 100644 index 0000000..eba8987 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/effect-creative.d.ts @@ -0,0 +1,86 @@ +interface CreativeEffectTransform { + translate?: (string | number)[]; + rotate?: number[]; + opacity?: number; + scale?: number; + shadow?: boolean; + origin?: string; +} + +export interface CreativeEffectMethods {} + +export interface CreativeEffectEvents {} + +export interface CreativeEffectOptions { + /** + * Previous slide transformations. Accepts object of the following type: + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + prev?: CreativeEffectTransform; + /** + * Next slide transformations. + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + next?: CreativeEffectTransform; + + /** + * Limit progress/offset to amount of side slides. If `1`, then slides all slides after prev/next will have same state. If `2`, then all slides after 2nd before/after active will have same state, etc. + * + * @default 1 + */ + limitProgress?: number; + /** + * Splits shadow "opacity" per slide based on `limitProgress` (only if transformation shadows enabled). E.g. setting `limitProgress: 2` and enabling `shadowPerProgress`, will set shadow opacity to `0.5` and `1` on two slides next to active. With this parameter disabled, all slides beside active will have shadow with `1` opacity + * + * @default false + */ + shadowPerProgress?: boolean; + /** + * Allows to multiply slides transformations and opacity. + * + * @default 1 + */ + progressMultiplier?: number; + /** + * Enable this parameter if your custom transforms require 3D transformations (`translateZ`, `rotateX`, `rotateY` ) + * + * @default true + */ + perspective?: boolean; +} diff --git a/src/assets/js/vendor/swiper/types/modules/effect-cube.d.ts b/src/assets/js/vendor/swiper/types/modules/effect-cube.d.ts new file mode 100644 index 0000000..c59535c --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/effect-cube.d.ts @@ -0,0 +1,30 @@ +export interface CubeEffectMethods {} + +export interface CubeEffectEvents {} + +export interface CubeEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Enables main slider shadow + * + * @default true + */ + shadow?: boolean; + /** + * Main shadow offset in px + * + * @default 20 + */ + shadowOffset?: number; + /** + * Main shadow scale ratio + * + * @default 0.94 + */ + shadowScale?: number; +} diff --git a/src/assets/js/vendor/swiper/types/modules/effect-fade.d.ts b/src/assets/js/vendor/swiper/types/modules/effect-fade.d.ts new file mode 100644 index 0000000..1d3123c --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/effect-fade.d.ts @@ -0,0 +1,12 @@ +export interface FadeEffectMethods {} + +export interface FadeEffectEvents {} + +export interface FadeEffectOptions { + /** + * Enables slides cross fade + * + * @default false + */ + crossFade?: boolean; +} diff --git a/src/assets/js/vendor/swiper/types/modules/effect-flip.d.ts b/src/assets/js/vendor/swiper/types/modules/effect-flip.d.ts new file mode 100644 index 0000000..aa672c3 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/effect-flip.d.ts @@ -0,0 +1,18 @@ +export interface FlipEffectMethods {} + +export interface FlipEffectEvents {} + +export interface FlipEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Limit edge slides rotation + * + * @default true + */ + limitRotation?: boolean; +} diff --git a/src/assets/js/vendor/swiper/types/modules/free-mode.d.ts b/src/assets/js/vendor/swiper/types/modules/free-mode.d.ts new file mode 100644 index 0000000..9488642 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/free-mode.d.ts @@ -0,0 +1,64 @@ +export interface FreeModeMethods { + onTouchMove(): void; + onTouchEnd(): void; +} + +export interface FreeModeEvents {} + +export interface FreeModeOptions { + /** + * Whether the free mode is enabled + * + * @default false + */ + enabled?: boolean; + + /** + * If enabled, then slide will keep moving for a while after you release it + * + * @default true + */ + momentum?: boolean; + + /** + * Higher value produces larger momentum distance after you release slider + * + * @default 1 + */ + momentumRatio?: number; + + /** + * Higher value produces larger momentum velocity after you release slider + * + * @default 1 + */ + momentumVelocityRatio?: number; + + /** + * Set to `false` if you want to disable momentum bounce in free mode + * + * @default true + */ + momentumBounce?: boolean; + + /** + * Higher value produces larger momentum bounce effect + * + * @default 1 + */ + momentumBounceRatio?: number; + + /** + * Minimum touchmove-velocity required to trigger free mode momentum + * + * @default 0.02 + */ + minimumVelocity?: number; + + /** + * Set to enabled to enable snap to slides positions in free mode + * + * @default false + */ + sticky?: boolean; +} diff --git a/src/assets/js/vendor/swiper/types/modules/grid.d.ts b/src/assets/js/vendor/swiper/types/modules/grid.d.ts new file mode 100644 index 0000000..070b14a --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/grid.d.ts @@ -0,0 +1,21 @@ +export interface GridMethods {} + +export interface GridEvents {} + +export interface GridOptions { + /** + * Number of slides rows, for multirow layout + * + * @default 1 + */ + rows?: number; + + /** + * Can be `'column'` or `'row'`. Defines how slides should fill rows, by column or by row + * + * @note if used with loop mode make sure number of slides is even specified in loop mode requirements, or enable `loopAddBlankSlides` parameter + * + * @default 'column' + */ + fill?: 'row' | 'column'; +} diff --git a/src/assets/js/vendor/swiper/types/modules/hash-navigation.d.ts b/src/assets/js/vendor/swiper/types/modules/hash-navigation.d.ts new file mode 100644 index 0000000..8b6edfe --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/hash-navigation.d.ts @@ -0,0 +1,38 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface HashNavigationMethods {} + +export interface HashNavigationEvents { + /** + * Event will be fired on window hash change + */ + hashChange: (swiper: Swiper) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: Swiper) => void; +} + +export interface HashNavigationOptions { + /** + * Set to `true` to enable also navigation through slides (when hashnav + * is enabled) by browser history or by setting directly hash on document location + * + * @default false + */ + watchState?: boolean; + + /** + * Works in addition to hashnav to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Designed to be used with Virtual slides when it is impossible to find slide in DOM by hash (e.g. not yet rendered) + * + */ + getSlideIndex?: (swiper: Swiper, hash: string) => number; +} diff --git a/src/assets/js/vendor/swiper/types/modules/history.d.ts b/src/assets/js/vendor/swiper/types/modules/history.d.ts new file mode 100644 index 0000000..a3cea81 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/history.d.ts @@ -0,0 +1,43 @@ +export interface HistoryMethods {} + +export interface HistoryEvents {} + +export interface HistoryOptions { + /** + * Enables History Plugin. + * + * @default false + */ + enabled?: boolean; + + /** + * Swiper page root, useful to specify when you use Swiper history mode not on root website page. + * For example can be `https://my-website.com/` or `https://my-website.com/subpage/` or `/subpage/` + * + * + * @default '' + */ + root?: string; + + /** + * Works in addition to hashnav or history to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Url key for slides + * + * @default 'slides' + */ + key?: string; + + /** + * Keep query parameters when changing browser url. + * + * @default false + */ + keepQuery?: boolean; +} diff --git a/src/assets/js/vendor/swiper/types/modules/index.d.ts b/src/assets/js/vendor/swiper/types/modules/index.d.ts new file mode 100644 index 0000000..d0a1b9b --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/index.d.ts @@ -0,0 +1,53 @@ +import type { SwiperModule } from '../shared.d.ts'; + +declare const A11y: SwiperModule; +declare const Autoplay: SwiperModule; +declare const Controller: SwiperModule; +declare const EffectCoverflow: SwiperModule; +declare const EffectCube: SwiperModule; +declare const EffectFade: SwiperModule; +declare const EffectFlip: SwiperModule; +declare const EffectCreative: SwiperModule; +declare const EffectCards: SwiperModule; +declare const HashNavigation: SwiperModule; +declare const History: SwiperModule; +declare const Keyboard: SwiperModule; +declare const Lazy: SwiperModule; +declare const Mousewheel: SwiperModule; +declare const Navigation: SwiperModule; +declare const Pagination: SwiperModule; +declare const Parallax: SwiperModule; +declare const Scrollbar: SwiperModule; +declare const Thumbs: SwiperModule; +declare const Virtual: SwiperModule; +declare const Zoom: SwiperModule; +declare const FreeMode: SwiperModule; +declare const Grid: SwiperModule; +declare const Manipulation: SwiperModule; + +export { + A11y, + Autoplay, + Controller, + EffectCoverflow, + EffectCube, + EffectFade, + EffectFlip, + EffectCreative, + EffectCards, + HashNavigation, + History, + Keyboard, + Lazy, + Mousewheel, + Navigation, + Pagination, + Parallax, + Scrollbar, + Thumbs, + Virtual, + Zoom, + FreeMode, + Grid, + Manipulation, +}; diff --git a/src/assets/js/vendor/swiper/types/modules/keyboard.d.ts b/src/assets/js/vendor/swiper/types/modules/keyboard.d.ts new file mode 100644 index 0000000..d38dd8d --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/keyboard.d.ts @@ -0,0 +1,46 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface KeyboardMethods { + /** + * Whether the keyboard control is enabled + */ + enabled: boolean; + + /** + * Enable keyboard control + */ + enable(): void; + + /** + * Disable keyboard control + */ + disable(): void; +} + +export interface KeyboardEvents { + /** + * Event will be fired on key press + */ + keyPress: (swiper: Swiper, keyCode: string) => void; +} + +export interface KeyboardOptions { + /** + * Set to `true` to enable keyboard control + * + * @default false + */ + enabled?: boolean; + /** + * When enabled it will control sliders that are currently in viewport + * + * @default true + */ + onlyInViewport?: boolean; + /** + * When enabled it will enable keyboard navigation by Page Up and Page Down keys + * + * @default true + */ + pageUpDown?: boolean; +} diff --git a/src/assets/js/vendor/swiper/types/modules/manipulation.d.ts b/src/assets/js/vendor/swiper/types/modules/manipulation.d.ts new file mode 100644 index 0000000..3366eaf --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/manipulation.d.ts @@ -0,0 +1,70 @@ +export interface ManipulationMethods { + /** + * Add new slides to the end. slides could be + * HTMLElement or HTML string with new slide or + * array with such slides, for example: + * + * @example + * ```js + * appendSlide('
    Slide 10"
    ') + * + * appendSlide([ + * '
    Slide 10"
    ', + * '
    Slide 11"
    ' + * ]); + * ``` + */ + appendSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the beginning. slides could be + * HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * prependSlide('
    Slide 0"
    ') + * + * prependSlide([ + * '
    Slide 1"
    ', + * '
    Slide 2"
    ' + * ]); + * ``` + */ + prependSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the required index. slides could be HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * addSlide(1, '
    Slide 10"
    ') + * + * addSlide(1, [ + * '
    Slide 10"
    ', + * '
    Slide 11"
    ' + * ]); + * ``` + */ + addSlide(index: number, slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Remove selected slides. slideIndex could be a number with slide index to remove or array with indexes. + * + * @example + * ```js + * removeSlide(0); // remove first slide + * removeSlide([0, 1]); // remove first and second slides + * removeAllSlides(); // Remove all slides + * ``` + */ + removeSlide(slideIndex: number | number[]): void; + + /** + * Remove all slides + */ + removeAllSlides(): void; +} + +export interface ManipulationEvents {} + +export interface ManipulationOptions {} diff --git a/src/assets/js/vendor/swiper/types/modules/mousewheel.d.ts b/src/assets/js/vendor/swiper/types/modules/mousewheel.d.ts new file mode 100644 index 0000000..bb220b1 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/mousewheel.d.ts @@ -0,0 +1,82 @@ +import type Swiper from '../swiper-class.d.ts'; +import type { CSSSelector } from '../shared.d.ts'; + +export interface MousewheelMethods { + /** + * Whether the mousewheel control is enabled + */ + enabled: boolean; + + /** + * Enable mousewheel control + */ + enable(): void; + + /** + * Disable mousewheel control + */ + disable(): void; +} + +export interface MousewheelEvents { + /** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: Swiper, event: WheelEvent) => void; +} + +export interface MousewheelOptions { + /** + * Set to `true` to force mousewheel swipes to axis. So in horizontal mode mousewheel will work only with horizontal mousewheel scrolling, and only with vertical scrolling in vertical mode. + + * + * @default false + */ + forceToAxis?: boolean; + /** + * Set to `true` and swiper will release mousewheel event and allow page scrolling when swiper is on edge positions (in the beginning or in the end) + + * + * @default false + */ + releaseOnEdges?: boolean; + /** + * Set to `true` to invert sliding direction + * + * @default false + */ + invert?: boolean; + /** + * Multiplier of mousewheel data, allows to tweak mouse wheel sensitivity + * + * @default 1 + */ + sensitivity?: number; + /** + * String with CSS selector or HTML element of the container accepting mousewheel events. By default it is swiper + * + * @default 'container' + */ + eventsTarget?: 'container' | 'wrapper' | CSSSelector | HTMLElement; + + /** + * Minimum mousewheel scroll delta to trigger swiper slide change + * + * @default null + */ + thresholdDelta?: number | null; + + /** + * Minimum mousewheel scroll time delta (in ms) to trigger swiper slide change + * + * @default null + */ + thresholdTime?: number | null; + + /** + * Scrolling on elements with this class will be ignored + * + * @default 'swiper-no-mousewheel' + */ + noMousewheelClass?: string; +} diff --git a/src/assets/js/vendor/swiper/types/modules/navigation.d.ts b/src/assets/js/vendor/swiper/types/modules/navigation.d.ts new file mode 100644 index 0000000..3d5c6e6 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/navigation.d.ts @@ -0,0 +1,105 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface NavigationMethods { + /** + * HTMLElement of "next" navigation button + */ + nextEl: HTMLElement; + + /** + * HTMLElement of "previous" navigation button + */ + prevEl: HTMLElement; + + /** + * Update navigation buttons state (enabled/disabled) + */ + update(): void; + + /** + * Initialize navigation + */ + init(): void; + + /** + * Destroy navigation + */ + destroy(): void; +} + +export interface NavigationEvents { + /** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: Swiper) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: Swiper) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: Swiper) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: Swiper) => void; +} + +export interface NavigationOptions { + /** + * Boolean property to use with breakpoints to enable/disable navigation on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the element that will work + * like "next" button after click on it + * + * @default null + */ + nextEl?: CSSSelector | HTMLElement | null; + + /** + * String with CSS selector or HTML element of the element that will work + * like "prev" button after click on it + * + * @default null + */ + prevEl?: CSSSelector | HTMLElement | null; + + /** + * Toggle navigation buttons visibility after click on Slider's container + * + * @default false + */ + hideOnClick?: boolean; + + /** + * CSS class name added to navigation button when it becomes disabled + * + * @default 'swiper-button-disabled' + */ + disabledClass?: string; + + /** + * CSS class name added to navigation button when it becomes hidden + * + * @default 'swiper-button-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name added to navigation button when it is disabled + * + * @default 'swiper-button-lock' + */ + lockClass?: string; + + /** + * CSS class name added on swiper container when navigation is disabled by breakpoint + * + * @default 'swiper-navigation-disabled' + */ + navigationDisabledClass?: string; +} diff --git a/src/assets/js/vendor/swiper/types/modules/pagination.d.ts b/src/assets/js/vendor/swiper/types/modules/pagination.d.ts new file mode 100644 index 0000000..5af6341 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/pagination.d.ts @@ -0,0 +1,295 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface PaginationMethods { + /** + * HTMLElement of pagination container element + */ + el: HTMLElement; + + /** + * Array of pagination bullets + * HTML elements. To get specific slide HTMLElement + * use `swiper.pagination.bullets[1]`. + */ + bullets: HTMLElement[]; + + /** + * Render pagination layout + */ + render(): void; + + /** + * Update pagination state (enabled/disabled/active) + */ + update(): void; + + /** + * Initialize pagination + */ + init(): void; + + /** + * Destroy pagination + */ + destroy(): void; +} + +export interface PaginationEvents { + /** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: Swiper) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: Swiper) => void; +} + +export interface PaginationOptions { + /** + * Boolean property to use with breakpoints to enable/disable pagination on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with pagination + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'` or `'custom'` + * + * @default 'bullets' + */ + type?: 'bullets' | 'fraction' | 'progressbar' | 'custom'; + + /** + * Defines which HTML tag will be used to represent single pagination bullet. Only for `'bullets'` pagination type. + * + * @default 'span' + */ + bulletElement?: string; + + /** + * Good to enable if you use bullets pagination with a lot of slides. So it will keep only few bullets visible at the same time. + * + * @default false + */ + dynamicBullets?: boolean; + + /** + * The number of main bullets visible when `dynamicBullets` enabled. + * + * @default 1 + */ + dynamicMainBullets?: number; + + /** + * Toggle (hide/show) pagination container visibility after click on Slider's container + * + * @default true + */ + hideOnClick?: boolean; + + /** + * If `true` then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type + * + * @default false + */ + clickable?: boolean; + + /** + * Makes pagination progressbar opposite to Swiper's `direction` parameter, means vertical progressbar for horizontal swiper + * direction and horizontal progressbar for vertical swiper direction + * + * @default false + */ + progressbarOpposite?: boolean; + + /** + * format fraction pagination current number. Function receives current number, + * and you need to return formatted value + */ + formatFractionCurrent?: (number: number) => number | string; + + /** + * format fraction pagination total number. Function receives total number, and you + * need to return formatted value + */ + formatFractionTotal?: (number: number) => number | string; + + /** + * This parameter allows totally customize pagination bullets, you need to pass here a function that accepts `index` number of + * pagination bullet and required element class name (`className`). Only for `'bullets'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderBullet: function (index, className) { + * return '' + (index + 1) + ''; + * } + * }); + * ``` + */ + renderBullet?: (index: number, className: string) => string; + + /** + * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderFraction: function (currentClass, totalClass) { + * return '' + + * ' of ' + + * ''; + * } + * }); + * ``` + */ + renderFraction?: (currentClass: string, totalClass: string) => string; + + /** + * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderProgressbar: function (progressbarFillClass) { + * return ''; + * } + * }); + * ``` + */ + renderProgressbar?: (progressbarFillClass: string) => string; + + /** + * This parameter is required for `'custom'` pagination type where you have to specify + * how it should be rendered. + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderCustom: function (swiper, current, total) { + * return current + ' of ' + total; + * } + * }); + * ``` + */ + renderCustom?: (swiper: Swiper, current: number, total: number) => string; + + /** + * CSS class name of single pagination bullet + * + * @default 'swiper-pagination-bullet' + */ + bulletClass?: string; + + /** + * CSS class name of currently active pagination bullet + * + * @default 'swiper-pagination-bullet-active' + */ + bulletActiveClass?: string; + + /** + * The beginning of the modifier CSS class name that will be added to pagination depending on parameters + * + * @default 'swiper-pagination-' + */ + modifierClass?: string; + + /** + * CSS class name of the element with currently active index in "fraction" pagination + * + * @default 'swiper-pagination-current' + */ + currentClass?: string; + + /** + * CSS class name of the element with total number of "snaps" in "fraction" pagination + * + * @default 'swiper-pagination-total' + */ + totalClass?: string; + + /** + * CSS class name of pagination when it becomes inactive + * + * @default 'swiper-pagination-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name of pagination progressbar fill element + * + * @default 'swiper-pagination-progressbar-fill' + */ + progressbarFillClass?: string; + + /** + * CSS class name of pagination progressbar opposite + * + * @default 'swiper-pagination-progressbar-opposite' + */ + progressbarOppositeClass?: string; + /** + * CSS class name set to pagination when it is clickable + * + * @default 'swiper-pagination-clickable' + */ + clickableClass?: string; + + /** + * CSS class name set to pagination when it is disabled + * + * @default 'swiper-pagination-lock' + */ + lockClass?: string; + + /** + * CSS class name set to pagination in horizontal Swiper + * + * @default 'swiper-pagination-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to pagination in vertical Swiper + * + * @default 'swiper-pagination-vertical' + */ + verticalClass?: string; + + /** + * CSS class name added on swiper container and pagination element when pagination is disabled by breakpoint + * + * @default 'swiper-pagination-disabled' + */ + paginationDisabledClass?: string; +} diff --git a/src/assets/js/vendor/swiper/types/modules/parallax.d.ts b/src/assets/js/vendor/swiper/types/modules/parallax.d.ts new file mode 100644 index 0000000..27e8e6f --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/parallax.d.ts @@ -0,0 +1,12 @@ +export interface ParallaxMethods {} + +export interface ParallaxEvents {} + +export interface ParallaxOptions { + /** + * Enable, if you want to use "parallaxed" elements inside of slider + * + * @default false + */ + enabled?: boolean; +} diff --git a/src/assets/js/vendor/swiper/types/modules/public-api.d.ts b/src/assets/js/vendor/swiper/types/modules/public-api.d.ts new file mode 100644 index 0000000..2553f46 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/public-api.d.ts @@ -0,0 +1,23 @@ +export type * from './a11y.d.ts'; +export type * from './autoplay.d.ts'; +export type * from './controller.d.ts'; +export type * from './effect-coverflow.d.ts'; +export type * from './effect-cube.d.ts'; +export type * from './effect-fade.d.ts'; +export type * from './effect-flip.d.ts'; +export type * from './effect-creative.d.ts'; +export type * from './effect-cards.d.ts'; +export type * from './hash-navigation.d.ts'; +export type * from './history.d.ts'; +export type * from './keyboard.d.ts'; +export type * from './mousewheel.d.ts'; +export type * from './navigation.d.ts'; +export type * from './pagination.d.ts'; +export type * from './parallax.d.ts'; +export type * from './scrollbar.d.ts'; +export type * from './thumbs.d.ts'; +export type * from './virtual.d.ts'; +export type * from './zoom.d.ts'; +export type * from './free-mode.d.ts'; +export type * from './grid.d.ts'; +export type * from './manipulation.d.ts'; diff --git a/src/assets/js/vendor/swiper/types/modules/scrollbar.d.ts b/src/assets/js/vendor/swiper/types/modules/scrollbar.d.ts new file mode 100644 index 0000000..4e04d95 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/scrollbar.d.ts @@ -0,0 +1,140 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface ScrollbarMethods { + /** + * HTMLElement of Scrollbar container element + */ + el: HTMLElement; + + /** + * HTMLElement of Scrollbar draggable handler element + */ + dragEl: HTMLElement; + + /** + * Updates scrollbar track and handler sizes + */ + updateSize(): void; + + /** + * Updates scrollbar translate + */ + setTranslate(): void; + + /** + * Initialize scrollbar + */ + init(): void; + + /** + * Destroy scrollbar + */ + destroy(): void; +} + +export interface ScrollbarEvents { + /** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; +} + +/** + * Object with scrollbar parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ +export interface ScrollbarOptions { + /** + * Boolean property to use with breakpoints to enable/disable scrollbar on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with scrollbar. + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * Hide scrollbar automatically after user interaction + * + * @default true + */ + hide?: boolean; + + /** + * Set to `true` to enable make scrollbar draggable that allows you to control slider position + * + * @default false + */ + draggable?: boolean; + + /** + * Set to `true` to snap slider position to slides when you release scrollbar + * + * @default false + */ + snapOnRelease?: boolean; + + /** + * Size of scrollbar draggable element in px + * + * @default 'auto' + */ + dragSize?: 'auto' | number; + + /** + * Scrollbar element additional CSS class when it is disabled + * + * @default 'swiper-scrollbar-lock' + */ + lockClass?: string; + + /** + * Scrollbar draggable element CSS class + * + * @default 'swiper-scrollbar-drag' + */ + dragClass?: string; + + /** + * CSS class name added on swiper container and scrollbar element when scrollbar is disabled by breakpoint + * + * @default 'swiper-scrollbar-disabled' + */ + scrollbarDisabledClass?: string; + + /** + * CSS class name set to scrollbar in horizontal Swiper + * + * @default 'swiper-scrollbar-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to scrollbar in vertical Swiper + * + * @default 'swiper-scrollbar-vertical' + */ + verticalClass?: string; +} diff --git a/src/assets/js/vendor/swiper/types/modules/thumbs.d.ts b/src/assets/js/vendor/swiper/types/modules/thumbs.d.ts new file mode 100644 index 0000000..19d5045 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/thumbs.d.ts @@ -0,0 +1,54 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ThumbsMethods { + /** + * Swiper instance of thumbs swiper + */ + swiper: Swiper; + + /** + * Update thumbs + */ + update(initial: boolean): void; + + /** + * Initialize thumbs + */ + init(): boolean; +} + +export interface ThumbsEvents {} + +export interface ThumbsOptions { + /** + * Swiper instance of swiper used as thumbs or object with Swiper parameters to initialize thumbs swiper + * + * @default null + */ + swiper?: Swiper | null; + /** + * Additional class that will be added to activated thumbs swiper slide + * + * @default 'swiper-slide-thumb-active' + */ + slideThumbActiveClass?: string; + /** + * Additional class that will be added to thumbs swiper + * + * @default 'swiper-thumbs' + */ + thumbsContainerClass?: string; + /** + * When enabled multiple thumbnail slides may get activated + * + * @default true + */ + multipleActiveThumbs?: boolean; + /** + * Allows to set on which thumbs active slide from edge it should automatically move scroll thumbs. For example, if set to 1 and last visible thumb will be activated (1 from edge) it will auto scroll thumbs + + * + * @default 0 + */ + autoScrollOffset?: number; +} diff --git a/src/assets/js/vendor/swiper/types/modules/virtual.d.ts b/src/assets/js/vendor/swiper/types/modules/virtual.d.ts new file mode 100644 index 0000000..bcf27bd --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/virtual.d.ts @@ -0,0 +1,135 @@ +export interface VirtualMethods { + /** + * Object with cached slides HTML elements + */ + cache: object; + + /** + * Index of first rendered slide + */ + from: number; + + /** + * Index of last rendered slide + */ + to: number; + + /** + * Array with slide items passed by `virtual.slides` parameter + */ + slides: T[]; + + /* + * Methods + */ + + /** + * Append slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Prepend slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + prependSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Remove specific slide or slides. `slideIndexes` can be a number with slide index to remove or array with indexes. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeSlide(slideIndexes: number[]): void; + + /** + * Remove all slides + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeAllSlides(): void; + + /** + * Update virtual slides state + */ + update(force: boolean): void; +} + +export interface VirtualEvents {} + +export interface VirtualData { + /** + * slides left/top offset in px + */ + offset: number; + /** + * index of first slide required to be rendered + */ + from: number; + /** + * index of last slide required to be rendered + */ + to: number; + /** + * array with slide items to be rendered + */ + slides: T[]; +} + +export interface VirtualOptions { + /** + * Whether the virtual slides are enabled + * + * @default false + */ + enabled?: boolean; + /** + * Array with slides + * + * @default [] + */ + slides?: T[]; + /** + * Enables DOM cache of rendering slides html elements. Once they are rendered they will be saved to cache and reused from it. + * + * @default true + */ + cache?: boolean; + /** + * Increases amount of pre-rendered slides before active slide + * + * @default 0 + */ + addSlidesBefore?: number; + /** + * Increases amount of pre-rendered slides after active slide + * + * @default 0 + */ + addSlidesAfter?: number; + /** + * Function to render slide. As an argument it accepts current slide item for `slides` array and index number of the current slide. Function must return an outer HTML of the swiper slide or slide HTML element. + * + * @default null + */ + renderSlide?: (slide: T, index: any) => any | null; + /** + * Function for external rendering (e.g. using some other library to handle DOM manipulations and state like React.js or Vue.js). As an argument it accepts `data` object with the following properties: + * + * - `offset` - slides left/top offset in px + * - `from` - index of first slide required to be rendered + * - `to` - index of last slide required to be rendered + * - `slides` - array with slide items to be rendered + * + * @default null + */ + renderExternal?: (data: VirtualData) => any | null; + /** + * When enabled (by default) it will update Swiper layout right after renderExternal called. Useful to disable and update swiper manually when used with render libraries that renders asynchronously + * + * @default true + */ + renderExternalUpdate?: boolean; +} diff --git a/src/assets/js/vendor/swiper/types/modules/zoom.d.ts b/src/assets/js/vendor/swiper/types/modules/zoom.d.ts new file mode 100644 index 0000000..0b302c0 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/modules/zoom.d.ts @@ -0,0 +1,79 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ZoomMethods { + /** + * Whether the zoom module is enabled + */ + enabled: boolean; + + /** + * Current image scale ratio + */ + scale: number; + + /** + * Enable zoom module + */ + enable(): void; + + /** + * Disable zoom module + */ + disable(): void; + + /** + * Zoom in image of the currently active slide. Optionally accepts custom zoom ratio + */ + in(ratio?: number): void; + + /** + * Zoom out image of the currently active slide + */ + out(): void; + + /** + * Toggle image zoom of the currently active slide + */ + toggle(event?: MouseEvent | TouchEvent | PointerEvent): void; +} + +export interface ZoomEvents { + /** + * Event will be fired on zoom change + */ + zoomChange: (swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; +} + +export interface ZoomOptions { + /** + * Maximum image zoom multiplier + * + * @default 3 + */ + maxRatio?: number; + /** + * Minimal image zoom multiplier + * + * @default 1 + */ + minRatio?: number; + /** + * Enable/disable zoom-in by slide's double tap + * + * @default true + */ + toggle?: boolean; + /** + * CSS class name of zoom container + * + * @default 'swiper-zoom-container' + */ + containerClass?: string; + /** + * CSS class name of zoomed in container + * + * @default 'swiper-slide-zoomed' + + */ + zoomedSlideClass?: string; +} diff --git a/src/assets/js/vendor/swiper/types/shared.d.ts b/src/assets/js/vendor/swiper/types/shared.d.ts new file mode 100644 index 0000000..4c28f96 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/shared.d.ts @@ -0,0 +1,5 @@ +export interface CSSSelector extends String {} + +export interface SwiperModule { + name: string; +} diff --git a/src/assets/js/vendor/swiper/types/swiper-class.d.ts b/src/assets/js/vendor/swiper/types/swiper-class.d.ts new file mode 100644 index 0000000..11e5218 --- /dev/null +++ b/src/assets/js/vendor/swiper/types/swiper-class.d.ts @@ -0,0 +1,492 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +import type { A11yMethods } from './modules/a11y.d.ts'; +import type { AutoplayMethods } from './modules/autoplay.d.ts'; +import type { ControllerMethods } from './modules/controller.d.ts'; +import type { CoverflowEffectMethods } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectMethods } from './modules/effect-cube.d.ts'; +import type { FadeEffectMethods } from './modules/effect-fade.d.ts'; +import type { FlipEffectMethods } from './modules/effect-flip.d.ts'; +import type { CreativeEffectMethods } from './modules/effect-creative.d.ts'; +import type { CardsEffectMethods } from './modules/effect-cards.d.ts'; +import type { HashNavigationMethods } from './modules/hash-navigation.d.ts'; +import type { HistoryMethods } from './modules/history.d.ts'; +import type { KeyboardMethods } from './modules/keyboard.d.ts'; +import type { MousewheelMethods } from './modules/mousewheel.d.ts'; +import type { NavigationMethods } from './modules/navigation.d.ts'; +import type { PaginationMethods } from './modules/pagination.d.ts'; +import type { ParallaxMethods } from './modules/parallax.d.ts'; +import type { ScrollbarMethods } from './modules/scrollbar.d.ts'; +import type { ThumbsMethods } from './modules/thumbs.d.ts'; +import type { VirtualMethods } from './modules/virtual.d.ts'; +import type { ZoomMethods } from './modules/zoom.d.ts'; +import type { FreeModeMethods } from './modules/free-mode.d.ts'; +import type { ManipulationMethods } from './modules/manipulation.d.ts'; + +interface SwiperClass { + /** Add event handler */ + on(event: E, handler: Events[E]): void; + /** Add event handler that will be removed after it was fired */ + once(event: E, handler: Events[E]): void; + /** Remove event handler */ + off(event: E, handler: Events[E]): void; + /** Remove all handlers for specified event */ + off(event: E): void; + /** Fire event on instance */ + emit(event: E, ...args: any[]): void; +} + +interface Swiper extends SwiperClass { + /** + * Object with passed initialization parameters + */ + params: SwiperOptions; + + /** + * Object with original initialization parameters + */ + originalParams: SwiperOptions; + + /** + * Slider container HTML element + */ + el: HTMLElement; + + /** + * Wrapper HTML element + */ + wrapperEl: HTMLElement; + + /** + * Array of slides HTML elements. To get specific slide HTMLElement use `swiper.slides[1]` + */ + slides: HTMLElement[]; + + /** + * !INTERNAL + */ + loopedSlides: number | null; + + /** + * Width of container + */ + width: number; + + /** + * Height of container + */ + height: number; + + /** + * Current value of wrapper translate + */ + translate: number; + + /** + * Current progress of wrapper translate (from 0 to 1) + */ + progress: number; + + /** + * Index number of currently active slide + * + * @note Note, that in loop mode active index value will be always shifted on a number of looped slides + */ + activeIndex: number; + + /** + * Index number of currently active slide considering rearranged slides in loop mode + */ + realIndex: number; + + /** + * Index number of previously active slide + */ + previousIndex: number; + + /** + * Index number of current snap in `snapGrid` + */ + snapIndex: number; + + /** + * Slides snap grid + */ + snapGrid: number[]; + + /** + * `true` if slider on most "left"/"top" position + */ + isBeginning: boolean; + + /** + * `true` if slider on most "right"/"bottom" position + */ + isEnd: boolean; + + /** + * `true` if slide is "locked" (by `watchOverflow`) and slides can not be, e.g. when amount of slides is less that slides per view + */ + isLocked: boolean; + + /** + * `true` if swiper is in transition + */ + animating: boolean; + + /** + * Object with the following touch event properties: + * + * - `swiper.touches.startX` + * - `swiper.touches.startY` + * - `swiper.touches.currentX` + * - `swiper.touches.currentY` + * - `swiper.touches.diff` + */ + touches: { + startX: number; + startY: number; + currentX: number; + currentY: number; + diff: number; + }; + + /** + * Index number of last clicked slide + */ + clickedIndex: number; + + /** + * Link to last clicked slide (HTMLElement) + */ + clickedSlide: HTMLElement; + + /** + * Disable / enable ability to slide to the next slides by assigning `false` / `true` to this property + */ + allowSlideNext: boolean; + + /** + * Disable / enable ability to slide to the previous slides by assigning `false` / `true` to this property + */ + allowSlidePrev: boolean; + + /** + * Disable / enable ability move slider by grabbing it with mouse or by touching it with finger (on touch screens) by assigning `false` / `true` to this property + */ + allowTouchMove: boolean; + + /** + * Direction of sliding + */ + swipeDirection: 'prev' | 'next'; + + /** + * !INTERNAL + */ + rtlTranslate: boolean; + + /** + * Disable Swiper (if it was enabled). When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + */ + disable(): void; + + /** + * Enable Swiper (if it was disabled) + * + */ + enable(): void; + + /** + * Set Swiper translate progress (from 0 to 1). Where 0 - its initial position (offset) on first slide, and 1 - its maximum position (offset) on last slide + * + * @param progress Swiper translate progress (from 0 to 1). + * @param speed Transition duration (in ms). + */ + setProgress(progress: number, speed?: number): void; + + /** + * Run transition to next slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideNext(speed?: number, runCallbacks?: boolean): void; + + /** + * Run transition to previous slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slidePrev(speed?: number, runCallbacks?: boolean): void; + + /** + * Run transition to the slide with index number equal to 'index' parameter for the + * duration equal to 'speed' parameter. + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideTo(index: number, speed?: number, runCallbacks?: boolean): void; + + /** + * Does the same as .slideTo but for the case when used with enabled loop. So this + * method will slide to slides with realIndex matching to passed index + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToLoop(index: number, speed?: number, runCallbacks?: boolean): void; + + /** + * Reset swiper position to currently active slide for the duration equal to 'speed' + * parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideReset(speed?: number, runCallbacks?: boolean): void; + + /** + * Reset swiper position to closest slide/snap point for the duration equal to 'speed' parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToClosest(speed?: number, runCallbacks?: boolean): void; + + /** + * Get dynamically calculated amount of slides per view, useful only when slidesPerView set to `auto` + * + */ + slidesPerViewDynamic(): number; + + /** + * Force swiper to update its height (when autoHeight enabled) for the duration equal to + * 'speed' parameter + * + * @param speed Transition duration (in ms). + */ + updateAutoHeight(speed?: number): void; + + /** + * You should call it after you add/remove slides + * manually, or after you hide/show it, or do any + * custom DOM modifications with Swiper + * This method also includes subcall of the following + * methods which you can use separately: + */ + update(): void; + + /** + * recalculate size of swiper container + */ + updateSize(): void; + + /** + * recalculate number of slides and their offsets. Useful after you add/remove slides with JavaScript + */ + updateSlides(): void; + + /** + * recalculate swiper progress + */ + updateProgress(): void; + + /** + * update active/prev/next classes on slides and bullets + */ + updateSlidesClasses(): void; + + /** + * Changes slider direction from horizontal to vertical and back. + * + * @param direction New direction. If not specified, then will automatically changed to opposite direction + * @param needUpdate Will call swiper.update(). Default true + */ + changeDirection(direction?: 'horizontal' | 'vertical', needUpdate?: boolean): void; + + /** + * Changes slider language + * + * @param direction New direction. Should be `rtl` or `ltr` + */ + changeLanguageDirection(direction: 'rtl' | 'ltr'): void; + + /** + * Detach all events listeners + */ + detachEvents(): void; + + /** + * Attach all events listeners again + */ + attachEvents(): void; + + /** + * !INTERNAL + */ + loopCreate(): void; + + /** + * !INTERNAL + */ + loopDestroy(): void; + + /** + * Initialize slider + */ + init(el?: HTMLElement): Swiper; + + /** + * Destroy slider instance and detach all events listeners + * + * @param deleteInstance Set it to false (by default it is true) to not to delete Swiper instance + * @param cleanStyles Set it to true (by default it is true) and all custom styles will be removed from slides, wrapper and container. + * Useful if you need to destroy Swiper and to init again with new options or in different direction + */ + destroy(deleteInstance?: boolean, cleanStyles?: boolean): void; + + /** + * Set custom css3 transform's translate value for swiper wrapper + */ + setTranslate(translate: any): void; + + /** + * Get current value of swiper wrapper css3 transform translate + */ + getTranslate(): any; + + /** + * Animate custom css3 transform's translate value for swiper wrapper + * + * @param translate Translate value (in px) + * @param speed Transition duration (in ms) + * @param runCallbacks Set it to false (by default it is true) and transition will not produce transition events + * @param translateBounds Set it to false (by default it is true) and transition value can extend beyond min and max translate + * + */ + translateTo( + translate: number, + speed: number, + runCallbacks?: boolean, + translateBounds?: boolean, + ): any; + + /** + * Unset grab cursor + */ + unsetGrabCursor(): void; + + /** + * Set grab cursor + */ + setGrabCursor(): void; + + /** + * Add event listener that will be fired on all events + */ + onAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * Remove event listener that will be fired on all events + */ + offAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * !INTERNAL + */ + isHorizontal(): boolean; + + /** + * !INTERNAL + */ + getBreakpoint(breakpoints: SwiperOptions['breakpoints']): string; + + /** + * !INTERNAL + */ + setBreakpoint(): void; + + /** + * !INTERNAL + */ + currentBreakpoint: any; + + /** + * !INTERNAL + */ + destroyed: boolean; + + /** + * !INTERNAL + */ + modules: Array; + + a11y: A11yMethods; + autoplay: AutoplayMethods; + controller: ControllerMethods; + coverflowEffect: CoverflowEffectMethods; + cubeEffect: CubeEffectMethods; + fadeEffect: FadeEffectMethods; + flipEffect: FlipEffectMethods; + creativeEffect: CreativeEffectMethods; + cardsEffect: CardsEffectMethods; + hashNavigation: HashNavigationMethods; + history: HistoryMethods; + keyboard: KeyboardMethods; + mousewheel: MousewheelMethods; + navigation: NavigationMethods; + pagination: PaginationMethods; + parallax: ParallaxMethods; + scrollbar: ScrollbarMethods; + thumbs: ThumbsMethods; + virtual: VirtualMethods; + zoom: ZoomMethods; + freeMode: FreeModeMethods; +} + +interface Swiper extends ManipulationMethods {} + +declare class Swiper implements Swiper { + /** + * Constructs a new Swiper instance. + * + * @param container Where Swiper applies to. + * @param options Instance options. + */ + constructor(container: CSSSelector | HTMLElement, options?: SwiperOptions); + /** + * Installs modules on Swiper in runtime. + */ + static use(modules: SwiperModule[]): void; + + /** + * Swiper default options + */ + static defaults: SwiperOptions; + + /** + * Extend global Swiper defaults + */ + static extendDefaults(options: SwiperOptions): void; + + /** + * Object with global Swiper extended options + */ + static extendedDefaults: SwiperOptions; +} + +export default Swiper; diff --git a/src/assets/js/vendor/swiper/types/swiper-events.d.ts b/src/assets/js/vendor/swiper/types/swiper-events.d.ts new file mode 100644 index 0000000..4e6aaec --- /dev/null +++ b/src/assets/js/vendor/swiper/types/swiper-events.d.ts @@ -0,0 +1,359 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type Swiper from './swiper-class.d.ts'; + +import type { A11yEvents } from './modules/a11y.d.ts'; +import type { AutoplayEvents } from './modules/autoplay.d.ts'; +import type { ControllerEvents } from './modules/controller.d.ts'; +import type { CoverflowEffectEvents } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectEvents } from './modules/effect-cube.d.ts'; +import type { FadeEffectEvents } from './modules/effect-fade.d.ts'; +import type { FlipEffectEvents } from './modules/effect-flip.d.ts'; +import type { CreativeEffectEvents } from './modules/effect-creative.d.ts'; +import type { CardsEffectEvents } from './modules/effect-cards.d.ts'; +import type { HashNavigationEvents } from './modules/hash-navigation.d.ts'; +import type { HistoryEvents } from './modules/history.d.ts'; +import type { KeyboardEvents } from './modules/keyboard.d.ts'; +import type { MousewheelEvents } from './modules/mousewheel.d.ts'; +import type { NavigationEvents } from './modules/navigation.d.ts'; +import type { PaginationEvents } from './modules/pagination.d.ts'; +import type { ParallaxEvents } from './modules/parallax.d.ts'; +import type { ScrollbarEvents } from './modules/scrollbar.d.ts'; +import type { ThumbsEvents } from './modules/thumbs.d.ts'; +import type { VirtualEvents } from './modules/virtual.d.ts'; +import type { ZoomEvents } from './modules/zoom.d.ts'; +import type { FreeModeEvents } from './modules/free-mode.d.ts'; + +export interface SwiperEvents { + // CORE_EVENTS_START + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: Swiper) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: Swiper) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: Swiper) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: Swiper, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: Swiper, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: Swiper, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: Swiper) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: Swiper) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: Swiper) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: Swiper) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: Swiper, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: Swiper, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: Swiper, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: Swiper) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: Swiper) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: Swiper) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: Swiper) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: Swiper) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: Swiper) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: Swiper) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: Swiper, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: Swiper) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: Swiper) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: Swiper) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: Swiper) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: Swiper) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: Swiper) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: Swiper, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: Swiper) => void; + // CORE_EVENTS_END +} + +interface SwiperEvents extends A11yEvents {} +interface SwiperEvents extends AutoplayEvents {} +interface SwiperEvents extends ControllerEvents {} +interface SwiperEvents extends CoverflowEffectEvents {} +interface SwiperEvents extends CubeEffectEvents {} +interface SwiperEvents extends FadeEffectEvents {} +interface SwiperEvents extends FlipEffectEvents {} +interface SwiperEvents extends CreativeEffectEvents {} +interface SwiperEvents extends CardsEffectEvents {} +interface SwiperEvents extends HashNavigationEvents {} +interface SwiperEvents extends HistoryEvents {} +interface SwiperEvents extends KeyboardEvents {} +interface SwiperEvents extends MousewheelEvents {} +interface SwiperEvents extends NavigationEvents {} +interface SwiperEvents extends PaginationEvents {} +interface SwiperEvents extends ParallaxEvents {} +interface SwiperEvents extends ScrollbarEvents {} +interface SwiperEvents extends ThumbsEvents {} +interface SwiperEvents extends VirtualEvents {} +interface SwiperEvents extends ZoomEvents {} +interface SwiperEvents extends FreeModeEvents {} diff --git a/src/assets/js/vendor/swiper/types/swiper-options.d.ts b/src/assets/js/vendor/swiper/types/swiper-options.d.ts new file mode 100644 index 0000000..6d0167f --- /dev/null +++ b/src/assets/js/vendor/swiper/types/swiper-options.d.ts @@ -0,0 +1,1210 @@ +import type { A11yOptions } from './modules/a11y.d.ts'; +import type { AutoplayOptions } from './modules/autoplay.d.ts'; +import type { ControllerOptions } from './modules/controller.d.ts'; +import type { CoverflowEffectOptions } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectOptions } from './modules/effect-cube.d.ts'; +import type { FadeEffectOptions } from './modules/effect-fade.d.ts'; +import type { FlipEffectOptions } from './modules/effect-flip.d.ts'; +import type { CreativeEffectOptions } from './modules/effect-creative.d.ts'; +import type { CardsEffectOptions } from './modules/effect-cards.d.ts'; +import type { HashNavigationOptions } from './modules/hash-navigation.d.ts'; +import type { HistoryOptions } from './modules/history.d.ts'; +import type { KeyboardOptions } from './modules/keyboard.d.ts'; +import type { MousewheelOptions } from './modules/mousewheel.d.ts'; +import type { NavigationOptions } from './modules/navigation.d.ts'; +import type { PaginationOptions } from './modules/pagination.d.ts'; +import type { ParallaxOptions } from './modules/parallax.d.ts'; +import type { ScrollbarOptions } from './modules/scrollbar.d.ts'; +import type { ThumbsOptions } from './modules/thumbs.d.ts'; +import type { VirtualOptions } from './modules/virtual.d.ts'; +import type { ZoomOptions } from './modules/zoom.d.ts'; +import type { FreeModeOptions } from './modules/free-mode.d.ts'; +import type { GridOptions } from './modules/grid.d.ts'; + +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +export interface SwiperOptions { + /** + * Array with Swiper modules + * + * @example + * ```js + * import Swiper from 'swiper'; + * import { Navigation, Pagination } from 'swiper/modules'; + * + * const swiper = new Swiper('.swiper', { + * modules: [ Navigation, Pagination ], + * }); + * ``` + */ + modules?: SwiperModule[]; + /** + * Inject text styles to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStyles?: string[]; + /** + * Inject styles ``s to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStylesUrls?: string[]; + /** + * Whether Swiper should be initialised automatically when you create an instance. + * If disabled, then you need to init it manually by calling `swiper.init()` + * + * @default true + */ + init?: boolean; + + /** + * Whether Swiper initially enabled. When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + * @default true + */ + enabled?: boolean; + + /** + * Swiper will recalculate slides position on window resize (orientationchange) + * + * @default true + */ + updateOnWindowResize?: boolean; + + /** + * When enabled it will use ResizeObserver (if supported by browser) on swiper container to detect container resize (instead of watching for window resize) + * + * @default true + */ + resizeObserver?: boolean; + + /** + * Index number of initial slide. + * + * @default 0 + */ + initialSlide?: number; + + /** + * Can be `'horizontal'` or `'vertical'` (for vertical slider). + * + * @default 'horizontal' + */ + direction?: 'horizontal' | 'vertical'; + + /** + * When enabled, will swipe slides only forward (one-way) regardless of swipe direction + * + * @default false + */ + + oneWayMovement?: boolean; + + /** + * Duration of transition between slides (in ms) + * + * @default 300 + */ + speed?: number; + + /** + * Enabled this option and plugin will set width/height on swiper wrapper equal to total size of all slides. + * Mostly should be used as compatibility fallback option for browser that don't support flexbox layout well + * + * @default false + */ + setWrapperSize?: boolean; + + /** + * Enabled this option and swiper will be operated as usual except it will not move, real translate values on wrapper will not be set. + * Useful when you may need to create custom slide transition + * + * @default false + */ + virtualTranslate?: boolean; + + /** + * Swiper width (in px). Parameter allows to force Swiper width. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + width?: number | null; + + /** + * Swiper height (in px). Parameter allows to force Swiper height. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + height?: number | null; + + /** + * Set to `true` and slider wrapper will adapt its height to the height of the currently active slide + * + * @default false + */ + autoHeight?: boolean; + + /** + * Set to `true` to round values of slides width and height to prevent blurry texts on usual + * resolution screens (if you have such) + * + * @default false + */ + roundLengths?: boolean; + + /** + * Set to `true` on Swiper for correct touch events interception. Use only on + * swipers that use same direction as the parent one + * + * @default false + */ + nested?: boolean; + + /** + * When enabled Swiper will automatically wrap slides with swiper-wrapper element, + * and will create required elements for navigation, pagination and scrollbar + * they are enabled (with their respective params object or with boolean `true`)) + * + * @default false + */ + createElements?: boolean; + + /** + * Event name prefix for all DOM events emitted by Swiper Element (web component) + * + * @default `swiper` + */ + eventsPrefix?: string; + + /** + * CSS selector for focusable elements. Swiping will be disabled on such elements if they are "focused" + * + * @default 'input, select, option, textarea, button, video, label' + */ + focusableElements?: string; + + /** + * If enabled (by default) and navigation elements' parameters passed as a string (like `".pagination"`) + * then Swiper will look for such elements through child elements first. + * Applies for pagination, prev/next buttons and scrollbar elements + * + * @default true + */ + uniqueNavElements?: boolean; + + /** + * Transition effect. Can be `'slide'`, `'fade'`, `'cube'`, `'coverflow'`, `'flip'` or `'creative'` + * + * @default 'slide' + */ + effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards' | string; + + /** + * Fire Transition/SlideChange/Start/End events on swiper initialization. + * Such events will be fired on initialization in case of your initialSlide is not 0, or you use loop mode + * + * @default true + */ + runCallbacksOnInit?: boolean; + + /** + * When enabled Swiper will be disabled and hide navigation buttons on + * case there are not enough slides for sliding. + * + * @default true + */ + watchOverflow?: boolean; + + /** + * userAgent string. Required for browser/device detection when rendered on server-side + * + * @default null + */ + userAgent?: string | null; + + /** + * Required for active slide detection when rendered on server-side and enabled history + * + * @default null + */ + url?: string | null; + + /** + * Register event handlers + */ + on?: { + [event in keyof SwiperEvents]?: SwiperEvents[event]; + }; + + /** + * Add event listener that will be fired on all events + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * onAny(eventName, ...args) { + * console.log('Event: ', eventName); + * console.log('Event data: ', args); + * } + * }); + * ``` + */ + onAny?(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * When enabled it will use modern CSS Scroll Snap API. + * It doesn't support all of Swiper's features, but potentially should bring a much better performance in simple configurations. + * + * This is what is not supported when it is enabled: + * + * - Cube effect + * - `speed` parameter may not have no effect + * - All transition start/end related events (use `slideChange` instead) + * - `slidesPerGroup` has limited support + * - `simulateTouch` doesn't have effect and "dragging" with mouse doesn't work + * - `resistance` doesn't have any effect + * - `allowSlidePrev/Next` + * - `swipeHandler` + * + * In case if you use it with other effects, especially 3D effects, it is required to wrap slide's content with `
    ` element. And if you use any custom styles on slides (like background colors, border radius, border, etc.), they should be set on `swiper-slide-transform` element instead. + * + * @example + * ```html + *
    + *
    + *
    + * + *
    + * ... slide content ... + *
    + *
    + * ... + *
    + *
    + * + * ``` + * + * @default false + */ + cssMode?: boolean; + + // Slides grid + + /** + * Distance between slides in px. + * + * @default 0 + * + * @note If you use "margin" css property to the elements which go into Swiper in which you pass "spaceBetween" into, navigation might not work properly. + */ + spaceBetween?: number | string; + + /** + * Number of slides per view (slides visible at the same time on slider's container). + * @note `slidesPerView: 'auto'` is currently not compatible with multirow mode, when `grid.rows` > 1 + * + * @default 1 + */ + slidesPerView?: number | 'auto'; + + /** + * If total number of slides less than specified here value, then Swiper will enable `backface-visibility: hidden` on slide elements to reduce visual "flicker" in Safari. + * + * @note It is not recommended to enable it on large amount of slides as it will reduce performance + * + * @default 10 + */ + maxBackfaceHiddenSlides?: number; + + /** + * Set numbers of slides to define and enable group sliding. Useful to use with slidesPerView > 1 + * + * @default 1 + */ + slidesPerGroup?: number; + + /** + * The parameter works in the following way: If `slidesPerGroupSkip` equals `0` (default), no slides are excluded from grouping, and the resulting behaviour is the same as without this change. + * + * If `slidesPerGroupSkip` is equal or greater than `1` the first X slides are treated as single groups, whereas all following slides are grouped by the `slidesPerGroup` value. + * + * @default 0 + */ + slidesPerGroupSkip?: number; + + /** + * This param intended to be used only with `slidesPerView: 'auto'` and `slidesPerGroup: 1`. When enabled, it will skip all slides in view on `.slideNext()` & `.slidePrev()` methods calls, on Navigation "buttons" clicks and in autoplay. + * + * @default false + */ + slidesPerGroupAuto?: boolean; + + /** + * If `true`, then active slide will be centered, not always on the left side. + * + * @default false + */ + centeredSlides?: boolean; + + /** + * If `true`, then active slide will be centered without adding gaps at the beginning and end of slider. + * Required `centeredSlides: true`. Not intended to be used with `loop` or `pagination` + * + * @default false + */ + centeredSlidesBounds?: boolean; + + /** + * Add (in px) additional slide offset in the beginning of the container (before all slides) + * + * @default 0 + */ + slidesOffsetBefore?: number; + + /** + * Add (in px) additional slide offset in the end of the container (after all slides) + * + * @default 0 + */ + slidesOffsetAfter?: number; + + /** + * Normalize slide index. + * + * @default true + */ + normalizeSlideIndex?: boolean; + + /** + * When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used `loop` mode and `grid.rows` + * + * @default false + */ + centerInsufficientSlides?: boolean; + + /** + * This option may a little improve desktop usability. If `true`, user will see the "grab" cursor when hover on Swiper + * + * @default false + */ + grabCursor?: boolean; + + /** + * Target element to listen touch events on. Can be `'container'` (to listen for touch events on swiper) or `'wrapper'` + * (to listen for touch events on swiper-wrapper) + * + * @default 'wrapper' + */ + touchEventsTarget?: 'container' | 'wrapper'; + + /** + * Touch ratio + * + * @default 1 + */ + touchRatio?: number; + + /** + * Allowable angle (in degrees) to trigger touch move + * + * @default 45 + */ + touchAngle?: number; + + /** + * If `true`, Swiper will accept mouse events like touch events (click and drag to change slides) + * + * @default true + */ + simulateTouch?: boolean; + + /** + * Set to `false` if you want to disable short swipes + * + * @default true + */ + shortSwipes?: boolean; + + /** + * Set to `false` if you want to disable long swipes + * + * @default true + */ + longSwipes?: boolean; + + /** + * Ratio to trigger swipe to next/previous slide during long swipes + * + * @default 0.5 + */ + longSwipesRatio?: number; + + /** + * Minimal duration (in ms) to trigger swipe to next/previous slide during long swipes + * + * @default 300 + */ + longSwipesMs?: number; + + /** + * If disabled, then slider will be animated only when you release it, it will not move while you hold your finger on it + * + * @default true + */ + followFinger?: boolean; + + /** + * If `false`, then the only way to switch the slide is use of external API functions like slidePrev or slideNext + * + * @default true + */ + allowTouchMove?: boolean; + + /** + * Threshold value in px. If "touch distance" will be lower than this value then swiper will not move + * + * @default 5 + */ + threshold?: number; + + /** + * If disabled, `pointerdown` event won't be prevented + * + * @default true + */ + touchStartPreventDefault?: boolean; + + /** + * Force to always prevent default for `touchstart` (`pointerdown`) event + * + * @default false + */ + touchStartForcePreventDefault?: boolean; + + /** + * If enabled, then propagation of "touchmove" will be stopped + * + * @default false + */ + touchMoveStopPropagation?: boolean; + + /** + * Enable to release Swiper events for swipe-back work in app. If set to `'prevent'` then it will prevent system swipe-back navigation instead. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer (touch) events. + * + * @default false + */ + edgeSwipeDetection?: boolean | string; + + /** + * Area (in px) from left edge of the screen to release touch events for swipe-back in app + * + * @default 20 + */ + edgeSwipeThreshold?: number; + + /** + * Enable to release touch events on slider edge position (beginning, end) to allow for further page scrolling. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer events. Also `threshold` parameter must be set to `0` + * + * @default false + */ + touchReleaseOnEdges?: boolean; + + /** + * Passive event listeners will be used by default where possible to improve scrolling performance on mobile devices. + * But if you need to use `e.preventDefault` and you have conflict with it, then you should disable this parameter + * + * @default true + */ + passiveListeners?: boolean; + + // Touch Resistance + + /** + * Set to `false` if you want to disable resistant bounds + * + * @default true + */ + resistance?: boolean; + + /** + * This option allows you to control resistance ratio + * + * @default 0.85 + */ + resistanceRatio?: number; + + // Swiping / No swiping + /** + * When enabled it won't allow to change slides by swiping or navigation/pagination buttons during transition + * + * @default false + */ + preventInteractionOnTransition?: boolean; + + /** + * Set to `false` to disable swiping to previous slide direction (to left or top) + * + * @default true + */ + allowSlidePrev?: boolean; + + /** + * Set to `false` to disable swiping to next slide direction (to right or bottom) + * + * @default true + */ + allowSlideNext?: boolean; + + /** + * Enable/disable swiping on elements matched to class specified in `noSwipingClass` + * + * @default true + */ + noSwiping?: boolean; + + /** + * Specify `noSwiping`'s element css class + * + * @default 'swiper-no-swiping' + */ + noSwipingClass?: string; + + /** + * Can be used instead of `noSwipingClass` to specify elements to disable swiping on. + * For example `'input'` will disable swiping on all inputs + * + * @default + */ + noSwipingSelector?: string; + + /** + * String with CSS selector or HTML element of the container with pagination that will work as only available handler for swiping + * + * @default null + */ + swipeHandler?: CSSSelector | HTMLElement | null; + + // Clicks + /** + * Set to `true` to prevent accidental unwanted clicks on links during swiping + * + * @default true + */ + preventClicks?: boolean; + + /** + * Set to `true` to stop clicks event propagation on links during swiping + * + * @default true + */ + preventClicksPropagation?: boolean; + + /** + * Set to `true` and click on any slide will produce transition to this slide + * + * @default false + */ + slideToClickedSlide?: boolean; + + // Progress + /** + * Enable this feature to calculate each slides progress and visibility (slides in viewport will have additional visible class) + * + * @default false + */ + watchSlidesProgress?: boolean; + + /** + * Set to `true` to enable continuous loop mode + * + * Because of nature of how the loop mode works (it will rearrange slides), total number of slides must be: + * + * - more than or equal to `slidesPerView` + `slidesPerGroup` + * - even to `slidesPerGroup` (or use `loopAddBlankSlides` parameter) + * - even to `grid.rows` (or use `loopAddBlankSlides` parameter) + * + * @default false + * + */ + loop?: boolean; + + /** + * Automatically adds blank slides if you use Grid or `slidesPerGroup` and the total amount of slides is not even to `slidesPerGroup` or to `grid.rows` + * + * + * @default false + * + */ + loopAddBlankSlides?: boolean; + + /** + * Allows to increase amount of looped slides + * + * @default 0 + */ + loopAdditionalSlides?: number; + + /** + * If enabled then slideNext/Prev will do nothing while slider is animating in loop mode + * + * @default true + */ + loopPreventsSliding?: boolean; + + /** + * Set to `true` to enable "rewind" mode. When enabled, clicking "next" navigation button (or calling `.slideNext()`) when on last slide will slide back to the first slide. Clicking "prev" navigation button (or calling `.slidePrev()`) when on first slide will slide forward to the last slide. + * + * @default false + * + * @note Should not be used together with `loop` mode + */ + rewind?: boolean; + + /** + * Allows to set different parameter for different responsive breakpoints (screen sizes). Not all parameters can be changed in breakpoints, only those which do not require different layout and logic, like `slidesPerView`, `slidesPerGroup`, `spaceBetween`, `grid.rows`. Such parameters like `loop` and `effect` won't work + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * // Default parameters + * slidesPerView: 1, + * spaceBetween: 10, + * // Responsive breakpoints + * breakpoints: { + * // when window width is >= 320px + * 320: { + * slidesPerView: 2, + * spaceBetween: 20 + * }, + * // when window width is >= 480px + * 480: { + * slidesPerView: 3, + * spaceBetween: 30 + * }, + * // when window width is >= 640px + * 640: { + * slidesPerView: 4, + * spaceBetween: 40 + * } + * } + * }) + * ``` + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * slidesPerView: 1, + * spaceBetween: 10, + * // using "ratio" endpoints + * breakpoints: { + * '@0.75': { + * slidesPerView: 2, + * spaceBetween: 20, + * }, + * '@1.00': { + * slidesPerView: 3, + * spaceBetween: 40, + * }, + * '@1.50': { + * slidesPerView: 4, + * spaceBetween: 50, + * }, + * } + * }); + * ``` + */ + breakpoints?: { + [width: number]: SwiperOptions; + [ratio: string]: SwiperOptions; + }; + + /** + * Base for breakpoints (beta). Can be `window` or `container`. If set to `window` (by default) then breakpoint keys mean window width. If set to `container` then breakpoint keys treated as swiper container width + * + * @default 'window' + */ + breakpointsBase?: string; + + // Observer + /** + * Set to `true` to enable Mutation Observer on Swiper and its elements. In this case Swiper will be updated (reinitialized) each time if you change its style (like hide/show) or modify its child elements (like adding/removing slides) + * + * @default false + */ + observer?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper slide children elements + * + * @default false + */ + observeSlideChildren?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper parent elements + * + * @default false + */ + observeParents?: boolean; + + // Namespace + /** + * The beginning of the modifier CSS class that can be added to swiper container depending on different parameters + * + * @default 'swiper-' + */ + containerModifierClass?: string; + + /** + * CSS class name of slide + * + * @default 'swiper-slide' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideClass?: string; + + /** + * CSS class name of currently active slide + * + * @default 'swiper-slide-active' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideActiveClass?: string; + + /** + * CSS class name of currently/partially visible slide + * + * @default 'swiper-slide-visible' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideVisibleClass?: string; + + /** + * CSS class name of fully (when whole slide is in the viewport) visible slide + * + * @default 'swiper-slide-fully-visible' + * + * @note Not supported in Swiper React/Vue + */ + slideFullyVisibleClass?: string; + + /** + * CSS class name of the blank slide added by the loop mode (when `loopAddBlankSlides` is enabled) + * + * @default 'swiper-slide-blank' + * + * @note Not supported in Swiper React/Vue + */ + slideBlankClass?: string; + + /** + * CSS class name of slide which is right after currently active slide + * + * @default 'swiper-slide-next' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideNextClass?: string; + + /** + * CSS class name of slide which is right before currently active slide + * + * @default 'swiper-slide-prev' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slidePrevClass?: string; + + /** + * CSS class name of slides' wrapper + * + * @default 'swiper-wrapper' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + * + */ + wrapperClass?: string; + + /** + * CSS class name of lazy preloader + * + * @default 'swiper-lazy-preloader' + */ + lazyPreloaderClass?: string; + + /** + * Number of next and previous slides to preload. Only applicable if using lazy loading. + * + * @default 0 + */ + lazyPreloadPrevNext?: number; + + /** + * Object with a11y parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * a11y: { + * prevSlideMessage: 'Previous slide', + * nextSlideMessage: 'Next slide', + * }, + * }); + * ``` + */ + a11y?: A11yOptions; + + /** + * Object with autoplay parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + *}); + * ``` + */ + autoplay?: AutoplayOptions | boolean; + + /** + * Object with controller parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * controller: { + * inverse: true, + * }, + * }); + * ``` + */ + controller?: ControllerOptions; + + /** + * Object with Coverflow-effect parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'coverflow', + * coverflowEffect: { + * rotate: 30, + * slideShadows: false, + * }, + * }); + * ``` + */ + coverflowEffect?: CoverflowEffectOptions; + + /** + * Object with Cube-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cube', + * cubeEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + cubeEffect?: CubeEffectOptions; + + /** + * Object with Fade-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'fade', + * fadeEffect: { + * crossFade: true + * }, + * }); + * ``` + */ + fadeEffect?: FadeEffectOptions; + + /** + * Object with Flip-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'flip', + * flipEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + flipEffect?: FlipEffectOptions; + + /** + * Object with Creative-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'creative', + * creativeEffect: { + * prev: { + * // will set `translateZ(-400px)` on previous slides + * translate: [0, 0, -400], + * }, + * next: { + * // will set `translateX(100%)` on next slides + * translate: ['100%', 0, 0], + * }, + * }, + * }); + * ``` + */ + creativeEffect?: CreativeEffectOptions; + + /** + * Object with Cards-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cards', + * cardsEffect: { + * // ... + * }, + * }); + * ``` + */ + cardsEffect?: CardsEffectOptions; + + /** + * Enables hash url navigation to for slides. + * Object with hash navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * hashNavigation: { + * replaceState: true, + * }, + * }); + * ``` + */ + hashNavigation?: HashNavigationOptions | boolean; + + /** + * Enables history push state where every slide will have its own url. In this parameter you have to specify main slides url like `"slides"` and specify every slide url using `data-history` attribute. + * + * Object with history navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * history: { + * replaceState: true, + * }, + * }); + * ``` + * + * @example + * ```html + * + *
    + * ``` + */ + history?: HistoryOptions | boolean; + + /** + * Enables navigation through slides using keyboard. Object with keyboard parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * keyboard: { + * enabled: true, + * onlyInViewport: false, + * }, + * }); + * ``` + */ + keyboard?: KeyboardOptions | boolean; + + /** + * Enables navigation through slides using mouse wheel. Object with mousewheel parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * mousewheel: { + * invert: true, + * }, + * }); + * ``` + */ + mousewheel?: MousewheelOptions | boolean; + + /** + * Object with navigation parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * navigation: { + * nextEl: '.swiper-button-next', + * prevEl: '.swiper-button-prev', + * }, + * }); + * ``` + */ + navigation?: NavigationOptions | boolean; + + /** + * Object with pagination parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * pagination: { + * el: '.swiper-pagination', + * type: 'bullets', + * }, + * }); + * ``` + */ + pagination?: PaginationOptions | boolean; + + /** + * Object with parallax parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * parallax: true, + * }); + * ``` + */ + parallax?: ParallaxOptions | boolean; + + /** + * Object with scrollbar parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ + scrollbar?: ScrollbarOptions | boolean; + + /** + * Object with thumbs component parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * ... + * thumbs: { + * swiper: thumbsSwiper + * } + * }); + * ``` + */ + thumbs?: ThumbsOptions; + + /** + * Enables virtual slides functionality. Object with virtual slides parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * virtual: { + * slides: ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5'], + * }, + * }); + * ``` + */ + virtual?: VirtualOptions | boolean; + + /** + * Enables zooming functionality. Object with zoom parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * zoom: { + * maxRatio: 5, + * }, + * }); + * ``` + */ + zoom?: ZoomOptions | boolean; + + /** + * Enables free mode functionality. Object with free mode parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * freeMode: true, + * }); + * + * const swiper = new Swiper('.swiper', { + * freeMode: { + * enabled: true, + * sticky: true, + * }, + * }); + * ``` + */ + freeMode?: FreeModeOptions | boolean; + + /** + * Object with grid parameters to enable "multirow" slider. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * grid: { + * rows: 2, + * }, + * }); + * ``` + */ + grid?: GridOptions; + + /** + * !INTERNAL When enabled will emit "_containerClasses" and "_slideClass" events + */ + _emitClasses?: boolean; +} diff --git a/src/assets/video/iuav-architettura.mp4 b/src/assets/video/iuav-architettura.mp4 new file mode 100755 index 0000000..d954bf8 --- /dev/null +++ b/src/assets/video/iuav-architettura.mp4 Binary files differ diff --git a/src/assets/video/iuav-design.mp4 b/src/assets/video/iuav-design.mp4 new file mode 100755 index 0000000..c2eb1b3 --- /dev/null +++ b/src/assets/video/iuav-design.mp4 Binary files differ diff --git a/src/assets/video/test.mp4 b/src/assets/video/test.mp4 new file mode 100644 index 0000000..ed139d6 --- /dev/null +++ b/src/assets/video/test.mp4 Binary files differ diff --git a/src/blocks/accordion.twig b/src/blocks/accordion.twig index fb6611a..6df6d58 100644 --- a/src/blocks/accordion.twig +++ b/src/blocks/accordion.twig @@ -2,8 +2,18 @@ # Blocco accordion #} -
    + {% if block.multi_columns %}{% set multi_columns = true %}{% endif %} + +
    + + {# if accordion has columns set threshold and set first column #} + {% if multi_columns %} + {% set threshold = block.content.items|length / 2 %} +
    + {% endif %} + {% for item in block.content.items %} +
    {{item.title}}
    @@ -15,6 +25,15 @@ {% endfor %} {% endif %}
    -
    +
    + + {# if accordion has columns #} + {% if multi_columns and loop.index == threshold %} +
    +
    + {% endif %} + {% endfor %} + {# if accordion has columns set threshold and set first column #} + {% if multi_columns %}
    {% endif %}
    diff --git a/src/blocks/breadcrumbs.twig b/src/blocks/breadcrumbs.twig index 71caaa6..dececcc 100644 --- a/src/blocks/breadcrumbs.twig +++ b/src/blocks/breadcrumbs.twig @@ -1,5 +1,7 @@ {% if block.post_type == 'pages' %} {% set current_post = post_type.pages[currentPage] %} +{% elseif block.post_type == 'taxonomy_archive' %} + {% set current_post = taxonomies[block.taxonomy].terms[current_term] %} {% else %} {% set current_post = post_type[block.post_type].items[currentPost] %} {% endif %} @@ -18,6 +20,17 @@
  • {{parent_page.title}}
  • {% endfor %} {% endif %} -
  • {{current_post.title}}
  • + {% if block.post_type == 'taxonomy_archive' %} +
  • {{current_post.base}}
  • + {% endif %} + {% if block.post_type == 'courses' %} + {% set degree = post_type.degrees.items[current_post.parent] %} +
  • {{degree.title}}
  • + {% endif %} + {% if current_post.name %} +
  • {{current_post.name}}
  • + {% else %} +
  • {{current_post.title}}
  • + {% endif %} \ No newline at end of file diff --git a/src/blocks/carousel.twig b/src/blocks/carousel.twig new file mode 100644 index 0000000..e57b82d --- /dev/null +++ b/src/blocks/carousel.twig @@ -0,0 +1,31 @@ +{# + # Blocco carousel + #} + +
    + +
    + +
    + {% for slide in block.content.items %} +
    +
    + {% include "../layout/partials/picture.twig" with {"image": slide } %} +
    + {% if slide.caption %} +
    +

    {{slide.caption}}

    +
    + {% endif %} +
    + {% endfor %} +
    + +
    + +
    +
    + +
    + +
    diff --git a/src/blocks/composition/composition-title-link.twig b/src/blocks/composition/composition-title-link.twig new file mode 100644 index 0000000..cec6e0e --- /dev/null +++ b/src/blocks/composition/composition-title-link.twig @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/blocks/contacts-section.twig b/src/blocks/contacts-section.twig index 00bfba8..c8e51dd 100644 --- a/src/blocks/contacts-section.twig +++ b/src/blocks/contacts-section.twig @@ -3,12 +3,14 @@ {% set id = block.id %} {% endif %} -
    +
    {% include '../blocks/title.twig' with {'block': block.title } %} {% for row in block.content %}
    -

    {{row.title}}

    -
    + {% if row.title %} +

    {{row.title}}

    + {% endif %} +
    {% for card in row.items %}
    diff --git a/src/blocks/featured-content-columns.twig b/src/blocks/featured-content-columns.twig new file mode 100644 index 0000000..2e29fba --- /dev/null +++ b/src/blocks/featured-content-columns.twig @@ -0,0 +1,25 @@ +{# + # Blocco contenuto in evidenza senza immagine cover su 2 colonne + #} + +
    +
    + {% include '../blocks/title.twig' with {'block': block.content.title } %} +
    +
    +
    + {% include "../layout/partials/picture.twig" with {"image": block.content.image } %} +
    +
    + + {% if block.content.text %} + {% include '../blocks/paragraph.twig' with {'block': block.content.text } %} + {% endif %} + {% if block.content.link %} + {% include '../blocks/link.twig' with {'block': block.content.link } %} + {% endif %} +
    +
    +
    \ No newline at end of file diff --git a/src/blocks/featured-tabs.twig b/src/blocks/featured-tabs.twig new file mode 100644 index 0000000..cbd38fa --- /dev/null +++ b/src/blocks/featured-tabs.twig @@ -0,0 +1,21 @@ +
    +
    +
    + {% for tab in block.content %} + + {% endfor %} +
    + {% for tab in block.content %} +
    +
    +
    + {% include "../layout/partials/picture.twig" with {"image": tab.image } %} +
    +
    + {{tab.text}} +
    +
    +
    + {% endfor %} +
    +
    \ No newline at end of file diff --git a/src/blocks/images-grid.twig b/src/blocks/images-grid.twig index 46c4f51..ddbbde3 100644 --- a/src/blocks/images-grid.twig +++ b/src/blocks/images-grid.twig @@ -1,6 +1,6 @@
    -
    +
    {% for image in block.content.images %}
    {% include "../layout/partials/picture.twig" with {"image": image } %} diff --git a/src/blocks/link.twig b/src/blocks/link.twig index 1d569c5..f2b7a35 100644 --- a/src/blocks/link.twig +++ b/src/blocks/link.twig @@ -1,4 +1,4 @@ - + {{block.content.name}} {% if block.content.external_name %}{{block.content.external_name}}{% endif %} diff --git a/src/blocks/marquee-images.twig b/src/blocks/marquee-images.twig new file mode 100644 index 0000000..0b23ea7 --- /dev/null +++ b/src/blocks/marquee-images.twig @@ -0,0 +1,9 @@ +
    +
    + {% for image in block.content.images %} +
    + {% include "../layout/partials/picture.twig" with {"image": image } %} +
    + {% endfor %} +
    +
    diff --git a/src/blocks/page-title-banner.twig b/src/blocks/page-title-banner.twig index 04fa551..e444bd7 100644 --- a/src/blocks/page-title-banner.twig +++ b/src/blocks/page-title-banner.twig @@ -1,32 +1,18 @@ {% set id = random(99999) %}
    -
    - {% include "../layout/partials/picture.twig" with {"image": block.content.image } %} -
    + {% if block.video is not null %} +
    + {% include "../layout/partials/video.twig" with {"video": block.content.video } %} +
    + {% else %} +
    + {% include "../layout/partials/picture.twig" with {"image": block.content.image } %} +
    + {% endif %} + {% set block_title = {"key": "title", "tag": "h1", "classes": "block-title--lg" } %} {% include "./title.twig" with {"block": block_title, "title": block.content.title } %} -
    - - \ No newline at end of file +
    \ No newline at end of file diff --git a/src/blocks/tease-row.twig b/src/blocks/tease-row.twig index 1d13f91..80195dd 100644 --- a/src/blocks/tease-row.twig +++ b/src/blocks/tease-row.twig @@ -4,22 +4,7 @@ {% set type = group.post_type %} {% for item in group.items %} {% set post = post_type[~type~].items[~item~] %} - -
    - {% if post.featured_image %} - {% include "../layout/partials/picture.twig" with {"image": post.featured_image } %} - {% endif %} -
    - -
    -
    - {% set post_term = post.terms[0] %} - {{taxonomies[~type~].terms[~post_term~].name}} - {{post.date|date('d.m.Y')}} -
    -

    {{post.title}}

    -
    -
    + {% include "./tease.twig" with {"post": post } %} {% endfor %} {% endfor %}
    diff --git a/src/blocks/tease.twig b/src/blocks/tease.twig new file mode 100644 index 0000000..8a1c281 --- /dev/null +++ b/src/blocks/tease.twig @@ -0,0 +1,32 @@ +{% if tease_lg %} + +

    {{post.title}}

    +
    + {% if post.featured_image %} + {% include "../layout/partials/picture.twig" with {"image": post.featured_image } %} + {% endif %} +
    + +
    +

    {{post.excerpt}}

    +
    +
    +{% else %} + +
    + {% if post.featured_image %} + {% include "../layout/partials/picture.twig" with {"image": post.featured_image } %} + {% endif %} +
    + +
    +
    + {% set post_term = post.terms[0] %} + {{taxonomies[~type~].terms[~post_term~].name}} + {{post.date|date('d.m.Y')}} +
    +

    {{post.title}}

    +
    +
    +{% endif %} + diff --git a/src/blocks/title.twig b/src/blocks/title.twig index ca8a6ab..a9a632f 100644 --- a/src/blocks/title.twig +++ b/src/blocks/title.twig @@ -2,11 +2,11 @@ {% set title = block.content.title %} {% endif %} -
    + diff --git a/src/blocks/video.twig b/src/blocks/video.twig new file mode 100644 index 0000000..f6eb945 --- /dev/null +++ b/src/blocks/video.twig @@ -0,0 +1,17 @@ +{# + # Blocco video + #} + +
    +
    + +
    + {% if block.content.caption %} +
    +

    {{block.content.caption}}

    +
    + {% endif %} +
    \ No newline at end of file diff --git a/src/layout/archive-degrees.twig b/src/layout/archive-degrees.twig new file mode 100644 index 0000000..f086bd9 --- /dev/null +++ b/src/layout/archive-degrees.twig @@ -0,0 +1,75 @@ +{% if paths_base == null %} + {% set paths_base = '..' %} +{% endif %} + +{% set bodyClasses = 'archive' %} + +{% extends "./base.twig" %} + +{% block breadcrumbs %} + + {% set breadcrumbs_block = + { + "post_type": "taxonomy_archive", + "taxonomy": "degrees", + "current_term": current_term + } + %} + {% include '../blocks/breadcrumbs.twig' with {'block': breadcrumbs_block } %} + +{% endblock %} + +{% block content %} + + {% for degree in post_type.degrees.items %} + {% if current_term in degree.terms %} +
    + + {% set degree_marquee = + { + "key": "marquee-images", + "speed": "0.003", + "content": { + "images": degree.degree_images, + } + } + %} + {% include '../blocks/marquee-images.twig' with {'block': degree_marquee } %} + + +
    +
    +
    +

    {{degree.title}}

    +
    +
    +

    {{degree.excerpt}}

    +
    +
    +
    + + {% set degree_info_grid_list = + { + "key": "grid-list", + "content": { + "items": [ + degree.degree_info.content.items[0], + degree.degree_info.content.items[9], + degree.degree_info.content.items[2], + degree.degree_info.content.items[4] + ] + } + } + %} + {% include '../blocks/grid-list.twig' with {'block': degree_info_grid_list } %} + + + Vai alla pagina del corso + + +
    + {% endif %} + {% endfor %} + + +{% endblock %} \ No newline at end of file diff --git a/src/layout/base.twig b/src/layout/base.twig index c93c716..39f319d 100644 --- a/src/layout/base.twig +++ b/src/layout/base.twig @@ -37,9 +37,8 @@
    - - {% include "script-footer.twig" %} + diff --git a/src/layout/corso.twig b/src/layout/corso.twig deleted file mode 100644 index d44064e..0000000 --- a/src/layout/corso.twig +++ /dev/null @@ -1,352 +0,0 @@ -{% set paths_base = '../..' %} -{% set bodyClasses = 'single single-course' %} - -{% extends "base.twig" %} - -{% block breadcrumbs %} - - {% set breadcrumbs_block = - { - "post_type": "courses", - "current_id": currentPost - } - %} - {% include '../blocks/breadcrumbs.twig' with {'block': breadcrumbs_block } %} - -{% endblock %} - -{% block banner %} - - {% set banner_block = - { - "key": "page-title-banner", - "content": { - "image": post_type.courses.items[currentPost].image, - "title": post_type.courses.items[currentPost].banner_title - } - } - %} - {% include '../blocks/page-title-banner.twig' with {'block': banner_block } %} - -{% endblock %} - -{% block content %} - - - - -
    -
    - {% set course_grid_list_block = - { - "key": "grid-list", - "content": { - "items": [ - { - "label": "Classe", - "text": post_type.courses.items[currentPost].course_class - }, - { - "label": "Posti disponibili", - "text": post_type.courses.items[currentPost].course_seats - }, - { - "label": "Crediti", - "text": post_type.courses.items[currentPost].course_cfu - }, - { - "label": "Durata", - "text": post_type.courses.items[currentPost].course_duration - }, - { - "label": "Coordinamento", - "text": post_type.courses.items[currentPost].course_coordination - }, - { - "label": "Titolo ottenuto", - "text": post_type.courses.items[currentPost].course_title - }, - { - "label": "Lingua", - "text": post_type.courses.items[currentPost].course_language - }, - { - "label": "Sede", - "text": post_type.courses.items[currentPost].course_location - }, - { - "label": "Dipartimento", - "text": post_type.courses.items[currentPost].course_department - }, - { - "label": "Requisiti di accesso", - "text": post_type.courses.items[currentPost].course_requirements - } - ] - } - } - %} - {% include '../blocks/grid-list.twig' with {'block': course_grid_list_block } %} - -
    - {% set course_grid_list_block = - { - "key": "grid-list", - "content": { - "items": [ - ] - } - } - %} - {% for link in post_type.courses.items[currentPost].course_links %} - {% set block_link = - { - "key": "link", - "url": link.url, - "content": { - "name": link.name, - "type": link.type, - "external_name": link.external_name - } - } - %} - {% include '../blocks/link.twig' with {'block': block_link } %} - {% endfor %} -
    - -
    -
    - {{post_type.courses.items[currentPost].content}} - {% include "./partials/picture.twig" with {"image": post_type.courses.items[currentPost].content_image } %} -
    -
    - - {# Piano di studi #} -
    - - {# Titolo #} - {% set studyplan_block_title = - { - "key": "title", - "tag": "h2", - "classes": "block-title--sm block-title--divider", - "content": { - "title": "Piano di studi" - } - } - %} - {% include '../blocks/title.twig' with {'block': studyplan_block_title } %} - - {# Accordion #} - {% set studyplan_block_accordion = - { - "key": "accordion", - "classes": "", - "content": { - "items": [ - { - "title": "Primo anno", - "inner_blocks": [ - { - "key": "links-list-columns", - "content": { - "list": post_type.courses.items[currentPost].course_study_plan[0] - } - } - ] - }, - { - "title": "Secondo anno", - "inner_blocks": [ - { - "key": "links-list-columns", - "content": { - "list": post_type.courses.items[currentPost].course_study_plan[0] - } - } - ] - }, - { - "title": "Terzo anno", - "inner_blocks": [ - { - "key": "links-list-columns", - "content": { - "list": post_type.courses.items[currentPost].course_study_plan[0] - } - } - ] - }, - { - "title": "Attività non inserite in uno specifico anno di corso", - "inner_blocks": [ - { - "key": "links-list-columns", - "content": { - "list": post_type.courses.items[currentPost].course_study_plan[0] - } - } - ] - } - ] - } - } - %} - {% include '../blocks/accordion.twig' with {'block': studyplan_block_accordion } %} - -
    - - {# Selezioni, immatricolazioni e ammissioni #} -
    - - {# Titolo #} - {% set enrollment_block_title = - { - "key": "title", - "tag": "h2", - "classes": "block-title--sm block-title--divider", - "content": { - "title": "Selezioni, immatricolazioni e ammissioni" - } - } - %} - {% include '../blocks/title.twig' with {'block': enrollment_block_title } %} - - {# Testo #} - {% set enrollment_block_content = - { - "key": "paragraph", - "classes": "block-paragraph--1col", - "content": "

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    " - } - %} - {% include '../blocks/paragraph.twig' with {'block': enrollment_block_content } %} - - {# Download #} - {% set enrollment_block_files = - { - "key": "files-list", - "classes": "", - "content": { - "items": post_type.courses.items[currentPost].course_enrollment.files - } - } - %} - {% include '../blocks/files-list.twig' with {'block': enrollment_block_files } %} - -
    - - {# Tasse e contributi #} -
    - - {# Titolo #} - {% set taxes_block_title = - { - "key": "title", - "tag": "h2", - "classes": "block-title--sm block-title--divider", - "content": { - "title": "Tasse e contributi" - } - } - %} - {% include '../blocks/title.twig' with {'block': taxes_block_title } %} - - {# Testo #} - {% set taxes_block_content = - { - "key": "paragraph", - "classes": "block-paragraph--1col", - "content": "

    Prova titolo
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    " - } - %} - {% include '../blocks/paragraph.twig' with {'block': taxes_block_content } %} - - {# Griglia informativa #} - {% set taxes_block_list = - { - "key": "grid-list", - "classes": "", - "content": { - "items": post_type.courses.items[currentPost].course_taxes.items - } - } - %} - {% include '../blocks/grid-list.twig' with {'block': taxes_block_list } %} - -
    - -
    - {% include '../blocks/featured-content-stacked.twig' with {'block': post_type.courses.items[currentPost].course_focus } %} -
    - - {# Ultime news #} -
    - {# Titolo #} - {% set news_block_title = - { - "key": "title", - "tag": "h2", - "classes": "block-title--sm block-title--divider", - "content": { - "title": "Ultime news" - } - } - %} - {% include '../blocks/title.twig' with {'block': news_block_title } %} - - {# News posts #} - {% include '../blocks/tease-row.twig' with {'block': post_type.courses.items[currentPost].course_news } %} - -
    - - {# Avvisi #} -
    - {# Titolo #} - {% set notices_block_title = - { - "key": "title", - "tag": "h2", - "classes": "block-title--sm block-title--divider", - "content": { - "title": "Avvisi" - } - } - %} - {% include '../blocks/title.twig' with {'block': notices_block_title } %} - - {# News posts #} - {% include '../blocks/tease-row.twig' with {'block': post_type.courses.items[currentPost].course_notices } %} - -
    - - {# Domande frequenti #} -
    - {# Titolo #} - {% set faq_block_title = - { - "key": "title", - "tag": "h2", - "classes": "block-title--sm block-title--divider", - "content": { - "title": "Domande frequenti" - } - } - %} - {% include '../blocks/title.twig' with {'block': faq_block_title } %} - - {% include '../blocks/accordion.twig' with {'block': post_type.courses.items[currentPost].course_faq } %} - -
    - - {# Contatti #} - {% include '../blocks/contacts-section.twig' with {'block': post_type.courses.items[currentPost].course_contacts, 'id': 'contatti' } %} - -{% endblock %} \ No newline at end of file diff --git a/src/layout/course-single.twig b/src/layout/course-single.twig new file mode 100644 index 0000000..3765857 --- /dev/null +++ b/src/layout/course-single.twig @@ -0,0 +1,53 @@ +{% set paths_base = '../..' %} +{% set bodyClasses = 'single single-course' %} + +{% set course = post_type.courses.items[currentPost] %} + +{% extends "base.twig" %} + +{% block breadcrumbs %} + + {% set breadcrumbs_block = + { + "post_type": "courses", + "current_id": currentPost + } + %} + {% include '../blocks/breadcrumbs.twig' with {'block': breadcrumbs_block } %} + +{% endblock %} + + +{% block content %} + + {# Testo #} + {% if course.content %} + {% set course_block_content = + { + "key": "paragraph", + "content": course.content + } + %} + {% include '../blocks/paragraph.twig' with {'block': course_block_content } %} + {% endif %} + + {% include '../blocks/grid-list.twig' with {'block': course.course_info } %} + + {% if course.course_modules %} + {% for module in course.course_modules %} +
    +

    {{module.title}}

    + {% include '../blocks/grid-list.twig' with {'block': module.content } %} +
    + {% endfor %} + {% endif %} + + + {% include '../blocks/accordion.twig' with {'block': course.course_accordion } %} + + {% include '../blocks/featured-content-columns.twig' with {'block': course.course_focus } %} + + {# Contatti #} + {% include '../blocks/contacts-section.twig' with {'block': course.course_contacts, 'id': 'contatti' } %} + +{% endblock %} \ No newline at end of file diff --git a/src/layout/degree-single.twig b/src/layout/degree-single.twig new file mode 100644 index 0000000..aef4cb0 --- /dev/null +++ b/src/layout/degree-single.twig @@ -0,0 +1,261 @@ +{% set paths_base = '../..' %} +{% set bodyClasses = 'single single-degree' %} + +{% set degree = post_type.degrees.items[currentPost] %} + +{% extends "base.twig" %} + +{% block breadcrumbs %} + + {% set breadcrumbs_block = + { + "post_type": "degrees", + "current_id": currentPost + } + %} + {% include '../blocks/breadcrumbs.twig' with {'block': breadcrumbs_block } %} + +{% endblock %} + +{% block banner %} + + {% set banner_block = + { + "key": "page-title-banner", + "content": { + "video": degree.degree_banner.video, + "title": degree.degree_banner.text + } + } + %} + + {% include '../blocks/page-title-banner.twig' with {'block': banner_block } %} + +{% endblock %} + +{% block content %} + + + + +
    +
    +
    + {{degree.content}} + {% for block in degree.content_blocks %} + {% include '../blocks/'~block.key~'.twig' with {'block': block } %} + {% endfor %} +
    +
    +
    + + {% include '../blocks/grid-list.twig' with {'block': degree.degree_info } %} + +
    + {% for link in degree.degree_links %} + {% set block_link = + { + "key": "link", + "url": link.url, + "content": { + "name": link.name, + "type": link.type, + "external_name": link.external_name + } + } + %} + {% include '../blocks/link.twig' with {'block': block_link } %} + {% endfor %} +
    + +
    +
    + + {# Piano di studi #} + {% if degree.degree_curricula is null %} +
    + {% include './partials/degree/study-plan.twig' with {'year_1': degree.degree_study_plan[0], 'year_2': degree.degree_study_plan[0], 'year_3': degree.degree_study_plan[0], 'year_alt': degree.degree_study_plan[0] } %} +
    + {% else %} +
    + {% include './partials/degree/curricula.twig' with {'degree': degree } %} +
    + {% endif %} + + {# Tabs #} + {% if degree.degree_tabs is not null %} +
    + {% include '../blocks/featured-tabs.twig' with {'block': degree.degree_tabs } %} +
    + {% endif %} + + {# Selezioni, immatricolazioni e ammissioni #} +
    + + {# Titolo #} + {% set enrollment_block_title = + { + "key": "title", + "tag": "h2", + "classes": "block-title--sm block-title--divider", + "content": { + "title": "Selezioni, immatricolazioni e ammissioni", + "link": { + "label": "Vedi il processo di ammissione", + "url": "#" + } + } + } + %} + {% include '../blocks/title.twig' with {'block': enrollment_block_title } %} + + {# Testo #} + {% set enrollment_block_content = + { + "key": "paragraph", + "classes": "block-paragraph--1col", + "content": "

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    " + } + %} + {% include '../blocks/paragraph.twig' with {'block': enrollment_block_content } %} + + {# Download #} + {% set enrollment_block_files = + { + "key": "files-list", + "classes": "", + "content": { + "items": degree.degree_enrollment.files + } + } + %} + {% include '../blocks/files-list.twig' with {'block': enrollment_block_files } %} + +
    + + {# Tasse e contributi #} +
    + + {# Titolo #} + {% set taxes_block_title = + { + "key": "title", + "tag": "h2", + "classes": "block-title--sm block-title--divider", + "content": { + "title": "Tasse e contributi", + "link": { + "label": "Vai alla pagina sulle tasse", + "url": "#" + } + } + } + %} + {% include '../blocks/title.twig' with {'block': taxes_block_title } %} + + {# Testo #} + {% set taxes_block_content = + { + "key": "paragraph", + "classes": "block-paragraph--1col", + "content": "

    Prova titolo
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dolor eu arcu interdum laoreet. Mauris sodales rhoncus tellus, nec placerat ligula elementum ultricies. Integer nec congue quam. Integer lobortis justo dui, eget gravida est vestibulum in quisque quis dolor eu arcu.

    " + } + %} + {% include '../blocks/paragraph.twig' with {'block': taxes_block_content } %} + + {# Griglia informativa #} + {% set taxes_block_list = + { + "key": "grid-list", + "classes": "", + "content": { + "items": degree.degree_taxes.items + } + } + %} + {% include '../blocks/grid-list.twig' with {'block': taxes_block_list } %} + +
    + +
    + {% include '../blocks/featured-content-stacked.twig' with {'block': degree.degree_focus } %} +
    + + {# Ultime news #} +
    + {# Titolo #} + {% set news_block_title = + { + "key": "title", + "tag": "h2", + "classes": "block-title--sm block-title--divider", + "content": { + "title": "Ultime news", + "link": { + "label": "Vedi tutte", + "url": "#" + } + } + } + %} + {% include '../blocks/title.twig' with {'block': news_block_title } %} + + {# News posts #} + {% include '../blocks/tease-row.twig' with {'block': degree.degree_news } %} + +
    + + {# Avvisi #} +
    + {# Titolo #} + {% set notices_block_title = + { + "key": "title", + "tag": "h2", + "classes": "block-title--sm block-title--divider", + "content": { + "title": "Avvisi", + "link": { + "label": "Vedi tutti", + "url": "#" + } + } + } + %} + {% include '../blocks/title.twig' with {'block': notices_block_title } %} + + {# News posts #} + {% include '../blocks/tease-row.twig' with {'block': degree.degree_notices } %} + +
    + + {# Domande frequenti #} +
    + {# Titolo #} + {% set faq_block_title = + { + "key": "title", + "tag": "h2", + "classes": "block-title--sm block-title--divider", + "content": { + "title": "Domande frequenti" + } + } + %} + {% include '../blocks/title.twig' with {'block': faq_block_title } %} + + {% include '../blocks/accordion.twig' with {'block': degree.degree_faq } %} + +
    + + {# Contatti #} + {% include '../blocks/contacts-section.twig' with {'block': degree.degree_contacts, 'id': 'contatti' } %} + +{% endblock %} \ No newline at end of file diff --git a/src/layout/html-header.twig b/src/layout/html-header.twig index 9db4206..0c2818f 100644 --- a/src/layout/html-header.twig +++ b/src/layout/html-header.twig @@ -9,7 +9,9 @@ - + + + diff --git a/src/layout/partials/degree/curricula.twig b/src/layout/partials/degree/curricula.twig new file mode 100644 index 0000000..0803e20 --- /dev/null +++ b/src/layout/partials/degree/curricula.twig @@ -0,0 +1,39 @@ +
    +
    + {% for curriculum in degree.degree_curricula %} + + {% endfor %} +
    + {% for curriculum in degree.degree_curricula %} +
    +
    + {% set curriculum_marquee = + { + "key": "marquee-images", + "speed": "0.003", + "content": { + "images": curriculum.images, + } + } + %} + {% include '../../../blocks/marquee-images.twig' with {'block': curriculum_marquee } %} +
    +
    + {{curriculum.excerpt}} +
    +
    + {% include '../../../blocks/grid-list.twig' with {'block': curriculum.info } %} +
    + {{curriculum.content}} +
    +
    + + {% include './study-plan.twig' with { 'year_1': curriculum.study_plan[0], 'year_2': curriculum.study_plan[0], 'year_3': curriculum.study_plan[0], 'year_alt': curriculum.study_plan[0] } %} + + {% for block in curriculum.inner_blocks %} + {% include '../../../blocks/'~block.key~'.twig' with {'block': block } %} + {% endfor %} + +
    + {% endfor %} +
    \ No newline at end of file diff --git a/src/layout/partials/degree/study-plan.twig b/src/layout/partials/degree/study-plan.twig new file mode 100644 index 0000000..37c32cc --- /dev/null +++ b/src/layout/partials/degree/study-plan.twig @@ -0,0 +1,69 @@ +{# Titolo #} +{% set studyplan_block_title = + { + "key": "title", + "tag": "h2", + "classes": "block-title--sm block-title--divider", + "content": { + "title": "Piano di studi" + } + } +%} +{% include '../../../blocks/title.twig' with {'block': studyplan_block_title } %} + +{# Accordion #} +{% set studyplan_block_accordion = + { + "key": "accordion", + "classes": "", + "content": { + "items": [ + { + "title": "Primo anno", + "inner_blocks": [ + { + "key": "links-list-columns", + "content": { + "list": year_1 + } + } + ] + }, + { + "title": "Secondo anno", + "inner_blocks": [ + { + "key": "links-list-columns", + "content": { + "list": year_2 + } + } + ] + }, + { + "title": "Terzo anno", + "inner_blocks": [ + { + "key": "links-list-columns", + "content": { + "list": year_3 + } + } + ] + }, + { + "title": "Attività non inserite in uno specifico anno di corso", + "inner_blocks": [ + { + "key": "links-list-columns", + "content": { + "list": year_alt + } + } + ] + } + ] + } + } +%} +{% include '../../../blocks/accordion.twig' with {'block': studyplan_block_accordion } %} \ No newline at end of file diff --git a/src/layout/partials/header/navbar.twig b/src/layout/partials/header/navbar.twig index 6362904..bc8cdc3 100644 --- a/src/layout/partials/header/navbar.twig +++ b/src/layout/partials/header/navbar.twig @@ -16,7 +16,10 @@ {% endfor %} - +
    + EN + +
    \ No newline at end of file diff --git a/src/layout/partials/header/topbar.twig b/src/layout/partials/header/topbar.twig index 3283244..99a0912 100644 --- a/src/layout/partials/header/topbar.twig +++ b/src/layout/partials/header/topbar.twig @@ -3,7 +3,9 @@ diff --git a/src/layout/partials/menu.twig b/src/layout/partials/menu.twig index f350dcc..9f67656 100644 --- a/src/layout/partials/menu.twig +++ b/src/layout/partials/menu.twig @@ -28,10 +28,7 @@
      {% for sub_item in items %}
    • - + {{sub_item.name}} {% if sub_item.children %} {% include "./menu.twig" with {"items": sub_item.children, "nesting": nesting+1 } %} {% endif %} diff --git a/src/layout/partials/video.twig b/src/layout/partials/video.twig new file mode 100644 index 0000000..2172d7a --- /dev/null +++ b/src/layout/partials/video.twig @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/src/layout/script-footer.twig b/src/layout/script-footer.twig index 5cf652a..9ecf5d9 100644 --- a/src/layout/script-footer.twig +++ b/src/layout/script-footer.twig @@ -1,4 +1,4 @@ - + - + diff --git a/src/pages/corsi-laurea/architettura.twig b/src/pages/corsi-laurea/architettura.twig index c443242..1d13c83 100644 --- a/src/pages/corsi-laurea/architettura.twig +++ b/src/pages/corsi-laurea/architettura.twig @@ -1,4 +1,4 @@ {% set currentPost = 0 %} -{% extends "../../layout/corso.twig" %} +{% extends "../../layout/degree-single.twig" %} diff --git a/src/pages/corsi-laurea/design-prodotto.twig b/src/pages/corsi-laurea/design-prodotto.twig new file mode 100644 index 0000000..58f0d5f --- /dev/null +++ b/src/pages/corsi-laurea/design-prodotto.twig @@ -0,0 +1,4 @@ +{% set currentPost = 2 %} + +{% extends "../../layout/degree-single.twig" %} + diff --git a/src/pages/corsi-laurea/design.twig b/src/pages/corsi-laurea/design.twig new file mode 100644 index 0000000..2d27112 --- /dev/null +++ b/src/pages/corsi-laurea/design.twig @@ -0,0 +1,4 @@ +{% set currentPost = 1 %} + +{% extends "../../layout/degree-single.twig" %} + diff --git a/src/pages/corsi-laurea/index.twig b/src/pages/corsi-laurea/index.twig new file mode 100644 index 0000000..e88094d --- /dev/null +++ b/src/pages/corsi-laurea/index.twig @@ -0,0 +1,6 @@ +{% set paths_base = '../..' %} + +{% set current_term = 0 %} + +{% extends "../../layout/archive-degrees.twig" %} + diff --git a/src/pages/corsi/botanica-innovazione.twig b/src/pages/corsi/botanica-innovazione.twig new file mode 100644 index 0000000..0e7c672 --- /dev/null +++ b/src/pages/corsi/botanica-innovazione.twig @@ -0,0 +1,3 @@ +{% set currentPost = 0 %} + +{% extends "../../layout/course-single.twig" %} \ No newline at end of file diff --git a/src/pages/corsi/laboratorio-design-prodotto.twig b/src/pages/corsi/laboratorio-design-prodotto.twig new file mode 100644 index 0000000..71719e4 --- /dev/null +++ b/src/pages/corsi/laboratorio-design-prodotto.twig @@ -0,0 +1,3 @@ +{% set currentPost = 1 %} + +{% extends "../../layout/course-single.twig" %} \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js index 9c2c5c7..7826c8b 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -7,7 +7,7 @@ screens: { 'sm': '40rem', 'md': '48rem', - 'lg': '64rem', + 'lg': '62rem', 'xl': '80rem', '2xl': '120rem', '3xl': '128rem' @@ -22,11 +22,16 @@ 'md-lg': ['26px', '35px'], 'lg': ['30px', '40px'], 'xl': ['44px', '55px'], + 'xl-md': ['40px', '50px'], '2xl': ['58px', '70px'], + '2xl-md': ['54px', '65px'], '3xl': ['90px', '105px'] }, colors: { - yellow: "#FFCC00", + yellow: { + 100: '#FFCC00', + 200: '#9E7F00' + }, white: '#FFFFFF', grey: { 100: '#EDF2F2', @@ -43,20 +48,20 @@ }, extend: { spacing: { - '15': '3.75rem', - 'xs': 'calc(var(--spacing-size)/2)', - 'sm': 'calc(var(--spacing-size))', - 'base': 'calc(var(--spacing-size)*2)', - 'lg': 'calc(var(--spacing-size)*2.5)', - 'xl': 'calc(var(--spacing-size)*4)', - 'xxl': 'calc(var(--spacing-size)*5)', 'xxxl': '5rem', '3.75': '0.9375rem', '6.25': '1.5625rem', '7.5': '1.875rem', '8.75': '2.1875rem', '12.5': '3.125rem', - '25': '6.25rem' + '15': '3.75rem', + '25': '6.25rem', + 'xs': '1.125rem', + 'sm': '1.5625rem', + 'base': '2.1875rem', + 'md': '3.125rem', + 'lg': '4.5rem', + 'xl': '7.5rem' }, lineHeight: { }