q2-tecton-elements 1.66.2 → 1.67.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-report.json +3106 -2970
- package/dist/cjs/action-sheet-D71RSc-w.js.map +1 -1
- package/dist/cjs/click-elsewhere.q2-option-list.q2-popover.entry.cjs.js.map +1 -0
- package/dist/cjs/{q2-option-list_2.cjs.entry.js → click-elsewhere_3.cjs.entry.js} +168 -20
- package/dist/cjs/click-elsewhere_3.cjs.entry.js.map +1 -0
- package/dist/cjs/{index-DyAq0y0v.js → index-YvKoRT-t.js} +61 -21
- package/dist/cjs/index-YvKoRT-t.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-action-sheet.cjs.entry.js +3 -3
- package/dist/cjs/q2-avatar.cjs.entry.js +33 -2
- package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-badge.cjs.entry.js +1 -1
- package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +22 -8
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-card-image.cjs.entry.js +3 -3
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +4 -4
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +67 -42
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +4 -2
- package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-area.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +4 -2
- package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-bar.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +7 -3
- package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-donut.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +3 -3
- package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-checkbox.q2-tag.entry.cjs.js.map +1 -0
- package/dist/cjs/q2-checkbox_2.cjs.entry.js +322 -0
- package/dist/cjs/q2-checkbox_2.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-context.cjs.entry.js +2 -2
- package/dist/cjs/q2-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +13 -16
- package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-data-table.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/q2-editable-field.cjs.entry.js +2 -2
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-example.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-form.cjs.entry.js +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-grid-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-grid.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +11 -1
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +2 -2
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +3 -3
- package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-item.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-legend.cjs.entry.js +2 -2
- package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-legend.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-link_2.cjs.entry.js +14 -6
- package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +3 -3
- package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-message.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-meter.cjs.entry.js +2 -2
- package/dist/cjs/q2-modal.cjs.entry.js +4 -21
- package/dist/cjs/q2-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
- package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
- package/dist/cjs/q2-option.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +12 -7
- package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pagination.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +3 -3
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pill.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +3 -3
- package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +3 -3
- package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
- package/dist/cjs/q2-section.cjs.entry.js +3 -3
- package/dist/cjs/q2-select.cjs.entry.js +22 -8
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +7 -6
- package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +16 -8
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +7 -4
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +3 -3
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-container.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +3 -3
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/q2-toast.cjs.entry.js +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +33 -3
- package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tooltip.entry.cjs.js.map +1 -1
- package/dist/cjs/{sanitize-html-string-C2iwHNz5.js → sanitize-html-string-CW6y5624.js} +27 -17
- package/dist/cjs/sanitize-html-string-CW6y5624.js.map +1 -0
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/__mocks__/echarts.js +12 -0
- package/dist/collection/__mocks__/echarts.js.map +1 -0
- package/dist/collection/collection-manifest.json +3 -3
- package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.css +84 -89
- package/dist/collection/components/q2-avatar/q2-avatar.js +35 -1
- package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
- package/dist/collection/components/q2-btn/q2-btn.css +10 -3
- package/dist/collection/components/q2-btn/q2-btn.js +42 -6
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.css +4 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
- package/dist/collection/components/q2-card-image/q2-card-image.js +2 -2
- package/dist/collection/components/q2-carousel/q2-carousel.css +143 -13
- package/dist/collection/components/q2-carousel/q2-carousel.js +90 -42
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +2 -11
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
- package/dist/collection/components/q2-chart-area/q2-chart-area.js +18 -16
- package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +8 -6
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +4 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +30 -26
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.css +4 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.js +38 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +1 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +1 -1
- package/dist/collection/components/q2-context/q2-context.js +1 -1
- package/dist/collection/components/q2-currency/q2-currency.js +1 -1
- package/dist/collection/components/q2-data-table/q2-data-table.css +14 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +47 -50
- package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +1 -1
- package/dist/collection/components/q2-editable-field/q2-editable-field.js +2 -2
- package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
- package/dist/collection/components/q2-example/q2-example.js +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.js +9 -9
- package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
- package/dist/collection/components/q2-form/q2-form.js +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
- package/dist/collection/components/q2-grid/q2-grid.js +1 -1
- package/dist/collection/components/q2-grid-area/q2-grid-area.js +1 -1
- package/dist/collection/components/q2-icon/assets/brand.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/browsersos.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/cards.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/communication.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/currencies.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/devices.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/filetypes.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/gestures.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/icon-list.json +1 -1
- package/dist/collection/components/q2-icon/assets/icon-map.json +1 -1
- package/dist/collection/components/q2-icon/assets/legacy.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/mobile.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/assets/status.symbol.svg +1 -1
- package/dist/collection/components/q2-icon/q2-icon.js +8 -0
- package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input.js +42 -42
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/collection/components/q2-item/q2-item.css +4 -0
- package/dist/collection/components/q2-item/q2-item.js +1 -1
- package/dist/collection/components/q2-legend/q2-legend.css +3 -0
- package/dist/collection/components/q2-legend/q2-legend.js +36 -36
- package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
- package/dist/collection/components/q2-link/q2-link.css +5 -2
- package/dist/collection/components/q2-link/q2-link.js +33 -3
- package/dist/collection/components/q2-link/q2-link.js.map +1 -1
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-message/q2-message.css +19 -16
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-message/q2-message.js.map +1 -1
- package/dist/collection/components/q2-meter/q2-meter.js +1 -1
- package/dist/collection/components/q2-modal/q2-modal.css +3 -3
- package/dist/collection/components/q2-modal/q2-modal.js +1 -94
- package/dist/collection/components/q2-modal/q2-modal.js.map +1 -1
- package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.js +13 -13
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/collection/components/q2-pagination/q2-pagination.js +15 -10
- package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
- package/dist/collection/components/q2-pill/q2-pill.css +9 -0
- package/dist/collection/components/q2-pill/q2-pill.js +13 -13
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/collection/components/q2-popover/q2-popover.css +66 -1
- package/dist/collection/components/q2-popover/q2-popover.js +94 -14
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-radio/q2-radio.css +4 -3
- package/dist/collection/components/q2-radio/q2-radio.js +1 -1
- package/dist/collection/components/q2-radio-group/q2-radio-group.css +1 -1
- package/dist/collection/components/q2-radio-group/q2-radio-group.js +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-select/q2-select.js +23 -7
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.css +9 -2
- package/dist/collection/components/q2-stepper/q2-stepper.js +5 -2
- package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +52 -30
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +11 -2
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +20 -6
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.css +7 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.css +3 -0
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-textarea/q2-textarea.css +1 -0
- package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
- package/dist/collection/components/q2-tooltip/q2-tooltip.css +1 -1
- package/dist/collection/components/q2-tooltip/q2-tooltip.js +34 -1
- package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/index.js +1 -0
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/action-sheet.js.map +1 -1
- package/dist/collection/utils/index.js +59 -19
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/components/action-sheet.js.map +1 -1
- package/dist/components/index2.js +59 -19
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-group2.js +1 -1
- package/dist/components/q2-action-sheet.js +1 -1
- package/dist/components/q2-avatar2.js +34 -2
- package/dist/components/q2-avatar2.js.map +1 -1
- package/dist/components/q2-btn2.js +22 -7
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +2 -2
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-card-image.js +2 -2
- package/dist/components/q2-carousel-pane.js +3 -3
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel.js +69 -55
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-area.js +3 -1
- package/dist/components/q2-chart-area.js.map +1 -1
- package/dist/components/q2-chart-bar.js +3 -1
- package/dist/components/q2-chart-bar.js.map +1 -1
- package/dist/components/q2-chart-donut.js +6 -2
- package/dist/components/q2-chart-donut.js.map +1 -1
- package/dist/components/q2-checkbox-group.js +2 -2
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-checkbox2.js +13 -2
- package/dist/components/q2-checkbox2.js.map +1 -1
- package/dist/components/q2-context.js +1 -1
- package/dist/components/q2-currency.js +1 -1
- package/dist/components/q2-data-table.js +46 -25
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-detail.js +1 -1
- package/dist/components/q2-dropdown.js +1 -1
- package/dist/components/q2-editable-field.js +1 -1
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-example.js +1 -1
- package/dist/components/q2-file-picker.js.map +1 -1
- package/dist/components/q2-form.js +1 -1
- package/dist/components/q2-formatted-text.js +1 -1
- package/dist/components/q2-grid-area.js +1 -1
- package/dist/components/q2-grid.js +1 -1
- package/dist/components/q2-icon2.js +10 -0
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-input2.js +1 -1
- package/dist/components/q2-input2.js.map +1 -1
- package/dist/components/q2-item2.js +2 -2
- package/dist/components/q2-item2.js.map +1 -1
- package/dist/components/q2-legend2.js +2 -2
- package/dist/components/q2-legend2.js.map +1 -1
- package/dist/components/q2-link2.js +13 -4
- package/dist/components/q2-link2.js.map +1 -1
- package/dist/components/q2-list2.js +1 -1
- package/dist/components/q2-message2.js +2 -2
- package/dist/components/q2-message2.js.map +1 -1
- package/dist/components/q2-meter.js +1 -1
- package/dist/components/q2-modal.js +2 -23
- package/dist/components/q2-modal.js.map +1 -1
- package/dist/components/q2-month-picker.js +2 -2
- package/dist/components/q2-mutation-observer.js +1 -1
- package/dist/components/q2-optgroup2.js +1 -1
- package/dist/components/q2-option-list2.js +1 -1
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-pagination.js +11 -6
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +2 -2
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +76 -15
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-radio-group.js +2 -2
- package/dist/components/q2-radio-group.js.map +1 -1
- package/dist/components/q2-radio.js +2 -2
- package/dist/components/q2-radio.js.map +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-resize-observer2.js +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-select2.js +23 -8
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +9 -6
- package/dist/components/q2-stepper-pane.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +16 -8
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js +6 -3
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js +2 -2
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag.js +1 -257
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/{esm/q2-tag.entry.js → components/q2-tag2.js} +68 -15
- package/dist/components/q2-tag2.js.map +1 -0
- package/dist/components/q2-textarea.js +2 -2
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/q2-tooltip2.js +35 -3
- package/dist/components/q2-tooltip2.js.map +1 -1
- package/dist/components/sanitize-html-string.js +25 -15
- package/dist/components/sanitize-html-string.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/action-sheet-B7adb3xs.js.map +1 -1
- package/dist/esm/click-elsewhere.q2-option-list.q2-popover.entry.js.map +1 -0
- package/dist/esm/{q2-option-list_2.entry.js → click-elsewhere_3.entry.js} +169 -22
- package/dist/esm/click-elsewhere_3.entry.js.map +1 -0
- package/dist/esm/{index-B4WYBDS9.js → index-C4PILj1_.js} +61 -21
- package/dist/esm/index-C4PILj1_.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group_2.entry.js +3 -3
- package/dist/esm/q2-action-sheet.entry.js +3 -3
- package/dist/esm/q2-avatar.entry.js +33 -2
- package/dist/esm/q2-avatar.entry.js.map +1 -1
- package/dist/esm/q2-badge.entry.js +1 -1
- package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
- package/dist/esm/q2-btn_2.entry.js +22 -8
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +3 -3
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card-image.entry.js +3 -3
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +4 -4
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +67 -42
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +4 -2
- package/dist/esm/q2-chart-area.entry.js.map +1 -1
- package/dist/esm/q2-chart-bar.entry.js +4 -2
- package/dist/esm/q2-chart-bar.entry.js.map +1 -1
- package/dist/esm/q2-chart-donut.entry.js +7 -3
- package/dist/esm/q2-chart-donut.entry.js.map +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +3 -3
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.q2-tag.entry.js.map +1 -0
- package/dist/esm/q2-checkbox_2.entry.js +319 -0
- package/dist/esm/q2-checkbox_2.entry.js.map +1 -0
- package/dist/esm/q2-context.entry.js +2 -2
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +13 -16
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-detail.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js +2 -2
- package/dist/esm/q2-editable-field.entry.js +2 -2
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-example.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js.map +1 -1
- package/dist/esm/q2-form.entry.js +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-grid-area.entry.js +1 -1
- package/dist/esm/q2-grid.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js +11 -1
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +2 -2
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +3 -3
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-legend.entry.js +2 -2
- package/dist/esm/q2-legend.entry.js.map +1 -1
- package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
- package/dist/esm/q2-link_2.entry.js +14 -6
- package/dist/esm/q2-link_2.entry.js.map +1 -1
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +3 -3
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-meter.entry.js +2 -2
- package/dist/esm/q2-modal.entry.js +4 -21
- package/dist/esm/q2-modal.entry.js.map +1 -1
- package/dist/esm/q2-month-picker.entry.js +3 -3
- package/dist/esm/q2-mutation-observer.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +2 -2
- package/dist/esm/q2-option.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +12 -7
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +3 -3
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +3 -3
- package/dist/esm/q2-radio-group.entry.js.map +1 -1
- package/dist/esm/q2-radio.entry.js +3 -3
- package/dist/esm/q2-radio.entry.js.map +1 -1
- package/dist/esm/q2-relative-time.entry.js +2 -2
- package/dist/esm/q2-section.entry.js +3 -3
- package/dist/esm/q2-select.entry.js +22 -8
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +7 -6
- package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +16 -8
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +7 -4
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tab-container.entry.js +3 -3
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +3 -3
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-toast.entry.js +1 -1
- package/dist/esm/q2-tooltip.entry.js +33 -3
- package/dist/esm/q2-tooltip.entry.js.map +1 -1
- package/dist/esm/{sanitize-html-string-BPwFpYg-.js → sanitize-html-string-B35VmRc9.js} +27 -17
- package/dist/esm/sanitize-html-string-B35VmRc9.js.map +1 -0
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/action-sheet-B7adb3xs.js.map +1 -1
- package/dist/q2-tecton-elements/assets/brand.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/browsersos.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/cards.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/communication.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/currencies.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/devices.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/filetypes.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/gestures.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/icon-list.json +1 -1
- package/dist/q2-tecton-elements/assets/icon-map.json +1 -1
- package/dist/q2-tecton-elements/assets/legacy.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/mobile.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
- package/dist/q2-tecton-elements/assets/status.symbol.svg +1 -1
- package/dist/q2-tecton-elements/click-elsewhere.q2-option-list.q2-popover.entry.esm.js.map +1 -0
- package/dist/q2-tecton-elements/{q2-option-list_2.entry.js → click-elsewhere_3.entry.js} +357 -224
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{index-B4WYBDS9.js → index-C4PILj1_.js} +53 -14
- package/dist/q2-tecton-elements/index-C4PILj1_.js.map +1 -0
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.js +68 -30
- package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-badge.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-btn_2.entry.js +30 -21
- package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-card-image.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +17 -17
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.js +269 -242
- package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +6 -5
- package/dist/q2-tecton-elements/q2-chart-area.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-bar.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +4 -3
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-donut.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +13 -11
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.q2-tag.entry.esm.js.map +1 -0
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +482 -0
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-context.entry.js +16 -16
- package/dist/q2-tecton-elements/q2-currency.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.js +26 -28
- package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +79 -79
- package/dist/q2-tecton-elements/q2-editable-field.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-editable-field.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-form.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-grid-area.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-grid.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.js +122 -111
- package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-input.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.js +40 -40
- package/dist/q2-tecton-elements/q2-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-legend.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-legend.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-link.q2-list.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-link_2.entry.js +24 -18
- package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.js +29 -25
- package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-modal.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-modal.entry.js +65 -79
- package/dist/q2-tecton-elements/q2-modal.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +30 -30
- package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-option.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +43 -32
- package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.js +40 -40
- package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-radio-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +23 -23
- package/dist/q2-tecton-elements/q2-radio.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-section.entry.js +12 -12
- package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-select.entry.js +21 -8
- package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +16 -15
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +73 -67
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper.entry.js +38 -36
- package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-container.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-container.entry.js +19 -19
- package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.esm.js.map +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +41 -5
- package/dist/q2-tecton-elements/q2-tooltip.entry.js.map +1 -1
- package/dist/q2-tecton-elements/{sanitize-html-string-BPwFpYg-.js → sanitize-html-string-B35VmRc9.js} +118 -109
- package/dist/q2-tecton-elements/sanitize-html-string-B35VmRc9.js.map +1 -0
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
- package/dist/scripts/docs-generator/index.js +1 -1
- package/dist/scripts/docs-generator/index.js.map +1 -1
- package/dist/types/__mocks__/echarts.d.ts +16 -0
- package/dist/types/components/q2-avatar/q2-avatar.d.ts +9 -0
- package/dist/types/components/q2-btn/q2-btn.d.ts +6 -0
- package/dist/types/components/q2-calendar/q2-calendar-helpers.d.ts +3 -3
- package/dist/types/components/q2-calendar/q2-calendar-types.d.ts +2 -2
- package/dist/types/components/q2-calendar/q2-calendar-validation.d.ts +5 -5
- package/dist/types/components/q2-calendar/q2-calendar.d.ts +8 -8
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +6 -0
- package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +4 -4
- package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +3 -3
- package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +9 -9
- package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +11 -0
- package/dist/types/components/q2-data-table/q2-data-table.d.ts +8 -41
- package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +4 -4
- package/dist/types/components/q2-file-picker/q2-file-picker.d.ts +1 -13
- package/dist/types/components/q2-input/formatting/alpha.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/alphanumeric.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/cif.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/clabe.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/credit-card.d.ts +2 -2
- package/dist/types/components/q2-input/formatting/currency.d.ts +2 -2
- package/dist/types/components/q2-input/formatting/generic.d.ts +2 -2
- package/dist/types/components/q2-input/formatting/iban.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/number.d.ts +3 -2
- package/dist/types/components/q2-input/formatting/numeric.d.ts +2 -2
- package/dist/types/components/q2-input/formatting/phone.d.ts +2 -2
- package/dist/types/components/q2-input/formatting/postal.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/routingnumber.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/ssn.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/swift.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/tin.d.ts +1 -1
- package/dist/types/components/q2-input/q2-input-types.d.ts +2 -22
- package/dist/types/components/q2-input/q2-input.d.ts +16 -15
- package/dist/types/components/q2-legend/q2-legend.d.ts +11 -11
- package/dist/types/components/q2-link/q2-link.d.ts +6 -0
- package/dist/types/components/q2-modal/q2-modal.d.ts +0 -17
- package/dist/types/components/q2-option-list/q2-option-list.d.ts +4 -4
- package/dist/types/components/q2-pagination/q2-pagination.d.ts +2 -0
- package/dist/types/components/q2-pill/q2-pill.d.ts +5 -5
- package/dist/types/components/q2-popover/q2-popover.d.ts +8 -0
- package/dist/types/components/q2-select/q2-select.d.ts +9 -6
- package/dist/types/components/q2-stepper-pane/q2-stepper-pane.d.ts +8 -11
- package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +10 -7
- package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +4 -0
- package/dist/types/components.d.ts +148 -118
- package/dist/types/global.d.ts +2 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utils/action-sheet.d.ts +5 -5
- package/dist/types/utils/index.d.ts +13 -0
- package/package.json +8 -9
- package/dist/cjs/click-elsewhere.cjs.entry.js +0 -97
- package/dist/cjs/click-elsewhere.cjs.entry.js.map +0 -1
- package/dist/cjs/click-elsewhere.entry.cjs.js.map +0 -1
- package/dist/cjs/index-DyAq0y0v.js.map +0 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +0 -110
- package/dist/cjs/q2-checkbox.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-checkbox.entry.cjs.js.map +0 -1
- package/dist/cjs/q2-option-list.q2-popover.entry.cjs.js.map +0 -1
- package/dist/cjs/q2-option-list_2.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-tag.cjs.entry.js +0 -211
- package/dist/cjs/q2-tag.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-tag.entry.cjs.js.map +0 -1
- package/dist/cjs/sanitize-html-string-C2iwHNz5.js.map +0 -1
- package/dist/esm/click-elsewhere.entry.js +0 -95
- package/dist/esm/click-elsewhere.entry.js.map +0 -1
- package/dist/esm/index-B4WYBDS9.js.map +0 -1
- package/dist/esm/q2-checkbox.entry.js +0 -108
- package/dist/esm/q2-checkbox.entry.js.map +0 -1
- package/dist/esm/q2-option-list.q2-popover.entry.js.map +0 -1
- package/dist/esm/q2-option-list_2.entry.js.map +0 -1
- package/dist/esm/q2-tag.entry.js.map +0 -1
- package/dist/esm/sanitize-html-string-BPwFpYg-.js.map +0 -1
- package/dist/q2-tecton-elements/click-elsewhere.entry.esm.js.map +0 -1
- package/dist/q2-tecton-elements/click-elsewhere.entry.js +0 -94
- package/dist/q2-tecton-elements/click-elsewhere.entry.js.map +0 -1
- package/dist/q2-tecton-elements/index-B4WYBDS9.js.map +0 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.esm.js.map +0 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.js +0 -228
- package/dist/q2-tecton-elements/q2-checkbox.entry.js.map +0 -1
- package/dist/q2-tecton-elements/q2-option-list.q2-popover.entry.esm.js.map +0 -1
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/q2-tag.entry.esm.js.map +0 -1
- package/dist/q2-tecton-elements/q2-tag.entry.js +0 -256
- package/dist/q2-tecton-elements/q2-tag.entry.js.map +0 -1
- package/dist/q2-tecton-elements/sanitize-html-string-BPwFpYg-.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isObject","obj","constructor","Object","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","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","c","deleteProps","object","e","nextTick","delay","now","el","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","isNode","node","HTMLElement","nodeType","args","to","i","nextSource","undefined","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","startTime","time","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","elementIsChildOfSlot","slot","elementsQueue","elementToCheck","shift","shadowRoot","elementIsChildOf","parent","isChild","contains","includes","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parentElement","elementOuterSize","size","includeMargins","support","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","getSupport","deviceCached","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","browser","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","getBrowser","Resize","on","emit","observer","animationFrame","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","observerUpdate","attributes","childList","isElement","characterData","init","observeParents","containerParents","hostEl","observeSlideChildren","destroy","disconnect","splice","eventsEmitter","events","handler","priority","self","eventsListeners","method","event","once","onceHandler","off","__emitterProxy","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","unshift","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","swiperSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","slideEl","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","initSlides","unsetSlides","slideSize","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slidesPerViewAutoSlideSize","roundLengths","floor","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","offsetWidth","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","isFractionalSlidesPerView","shouldSnapToSlideEdge","snapToSlideEdge","loop","lastAllowedSnapIndex","minVisibleSlides","accumulatedSize","newSlidesGrid","slidesGridItem","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","remove","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","toggleSlideClasses$1","condition","className","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","toggleSlideClasses","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","column","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","processLazyPreloader","imageEl","slideSelector","closest","lazyEl","lazyPreloaderClass","lazyPreloaderManaged","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEnd","transitionDuration","transitionDelay","transitionEmit","direction","step","transitionStart","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","isInitialVirtual","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","indexAsNumber","newIndex","targetSlideIndex","cols","bothDirections","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","getSlideIndexWhenGrid","isGrid","getSlideIndex","loopCreate","clearBlankSlides","slideBlankClass","recalcSlides","loopAddBlankSlides","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","append","slidesToAdd","byMousewheel","loopedSlides","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndex","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","newSlideTranslate","diff","touchEventsData","startTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","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","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","_loopSwapReset","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isTouchEvent","proceed","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","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","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpointsBase","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","autoheight","centered","removeClasses","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","swiperElementNodeName","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","slideInView","complete","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","res","slideSlots","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","Autoplay","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","timeout","raf","autoplayDelayTotal","autoplayDelayCurrent","autoplayTimeLeft","autoplayStartTime","wasPaused","pausedByTouch","touchStartTimeout","pausedByInteraction","pausedByPointerEnter","onTransitionEnd","calcTimeLeft","getSlideDelay","activeSlideEl","currentSlideDelay","getTotalDelay","totalDelay","run","delayForce","start","stop","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","_s","q2CarouselCss","carouselBreakpoint","carouselDesktopBreakpoint","Q2Carousel","hostRef","guid","createGuid","ariaLiveValue","autoPlayInProgress","carouselWrapperWidth","compactMode","currentPaneCount","paneCount","autoPlay","framelessPanes","fullWidthPanes","hidePagination","showNavigationArrows","configureCarousel","carouselWrapper","carouselOptions","tearDownCarousel","_a","_b","handleAutoPlayPause","action","handlePopovers","carouselPaneWrapperElement","open","left","keydownHandler","_c","_d","onMutationObserved","updateCarouselPaneProps","activeCarouselOptions","setCarouselWrapperWidth","insufficientPanes","paneArray","pane","siblingCount","isActivePane","slotFrameless","renderAutoPlayBtn","h","loc","class","renderInsufficientPanesDisplay","insufficientPanesContainerClasses","renderNextNavBtn","nextPaneAvailable","disabled","renderPaginationArea","useDynamicPaginationDots","paginationContainerClasses","role","btnClasses","withinOneOfActive","withinTwoOfActive","tabIndex","onKeyDown","renderPrevNavBtn","prevPaneAvailable","disconnectedCallback","mutationObserver","componentWillLoad","handleAriaLabel","hasValidChildren","hostElement","filterChildren","universalCarouselOptions","realIndexChange","isPaginationFocused","isCarouselFocused","isFocused","handleAriaLive","mirrorEmit","paginationBtns","focus","preventScroll","afterInit","activePane","slideChangeTransitionEnd","slideChangeTransitionStart","fullWidthDisplayOptions","componentDidLoad","subtree","overrideFocus","carouselPaneClicked","paneIndex","delegateFocus","isEventFromElement","selectCarouselPane","actualIndex","click","togglePlayPause","playPauseBtn","ariaLabelObserver","carouselWrapperWidthChanged","framelessPanesChanged","revampCarousel","indexChanged","peekContentDisplayOptions","indexNum","activeAndFocused","render","carouselContainerClasses","paginationWrapperClasses","Host","Fragment","ref"],"sources":["../../node_modules/.pnpm/swiper@12.1.2/node_modules/swiper/shared/ssr-window.esm.mjs","../../node_modules/.pnpm/swiper@12.1.2/node_modules/swiper/shared/utils.mjs","../../node_modules/.pnpm/swiper@12.1.2/node_modules/swiper/shared/swiper-core.mjs","../../node_modules/.pnpm/swiper@12.1.2/node_modules/swiper/modules/autoplay.mjs","src/components/q2-carousel/q2-carousel.scss?tag=q2-carousel","src/components/q2-carousel/q2-carousel.tsx"],"sourcesContent":["/**\n * SSR Window 5.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: June 27, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target = {}, src = {}) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes = '') {\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype');\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector = '') {\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes = []) {\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n 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'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\nfunction setInnerHTML(el, html = '') {\n if (typeof trustedTypes !== 'undefined') {\n el.innerHTML = trustedTypes.createPolicy('html', {\n createHTML: s => s\n }).createHTML(html);\n } else {\n el.innerHTML = html;\n }\n}\n\nexport { getRotateFix as a, setCSSProperty as b, createElement as c, elementParents as d, elementChildren as e, elementOffset as f, getSlideTransformEl as g, now as h, elementOuterSize as i, elementIndex as j, classesToTokens as k, getTranslate as l, makeElementsArray as m, nextTick as n, elementTransitionEnd as o, isObject as p, elementStyle as q, elementNextAll as r, setInnerHTML as s, elementPrevAll as t, animateCSSModeScroll as u, showWarning as v, elementIsChildOf as w, extend as x, deleteProps as y };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { d as elementParents, q as elementStyle, e as elementChildren, b as setCSSProperty, i as elementOuterSize, r as elementNextAll, t as elementPrevAll, l as getTranslate, u as animateCSSModeScroll, n as nextTick, v as showWarning, c as createElement, w as elementIsChildOf, h as now, x as extend, j as elementIndex, y as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad)(?!\\1).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n const swiperSize = swiper.size - offsetBefore - offsetAfter;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n // set cssMode offsets\n if (params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`);\n setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`);\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides[i];\n if (slide) {\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n }\n\n if (isVirtual && params.slidesPerView === 'auto') {\n if (params.virtual.slidesPerViewAutoSlideSize) {\n slideSize = params.virtual.slidesPerViewAutoSlideSize;\n }\n if (slideSize && slide) {\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n } else if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slide.style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slide) {\n slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slide) {\n slide.swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n // Check if snapToSlideEdge should be applied\n const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0;\n const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView);\n\n // Calculate the last allowed snap index when snapToSlideEdge is enabled\n // This ensures minimum slides are visible at the end\n let lastAllowedSnapIndex = snapGrid.length;\n if (shouldSnapToSlideEdge) {\n let minVisibleSlides;\n if (params.slidesPerView === 'auto') {\n // For 'auto' mode, calculate how many slides fit based on actual sizes\n minVisibleSlides = 1;\n let accumulatedSize = 0;\n for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) {\n accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0);\n if (accumulatedSize <= swiperSize) {\n minVisibleSlides = slidesSizesGrid.length - i;\n } else {\n break;\n }\n }\n } else {\n minVisibleSlides = Math.floor(params.slidesPerView);\n }\n lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0);\n }\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (shouldSnapToSlideEdge) {\n // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex\n if (i <= lastAllowedSnapIndex) {\n newSlidesGrid.push(slidesGridItem);\n }\n } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n // Only add edge-aligned snap if snapToSlideEdge is not enabled\n if (!shouldSnapToSlideEdge) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();\n }\n });\n }\n }\n // Skip removal if managed by React/Vue component\n if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled) {\n if (params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else {\n realIndex = activeIndex;\n }\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n } else if (runCallbacks && activeIndex !== previousIndex) {\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index = 0, speed, runCallbacks = true, internal, initial) {\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n const browser = getBrowser();\n const isSafari = browser.isSafari;\n if (isVirtual && !initial && isSafari && swiper.isElement) {\n swiper.virtual.update(false, false, slideIndex);\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index = 0, speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides,\n slidesOffsetBefore,\n slidesOffsetAfter\n } = swiper.params;\n const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (bothDirections && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (bothDirections) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const isFreeMode = params.freeMode && params.freeMode.enabled;\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks = true, internal) {\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex);\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n swiper.slideToLoop(realIndex);\n } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex, initial) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const clearBlankSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`);\n slides.forEach(el => {\n el.remove();\n });\n if (slides.length > 0) {\n swiper.recalcSlides();\n swiper.updateSlides();\n }\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) {\n clearBlankSlides();\n }\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n 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)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n 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)');\n }\n initSlides();\n } else {\n initSlides();\n }\n const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter;\n swiper.loopFix({\n slideRealIndex,\n direction: bothDirections ? undefined : 'next',\n initial\n });\n}\n\nfunction loopFix({\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n initial,\n byController,\n byMousewheel\n} = {}) {\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides,\n slidesOffsetBefore,\n slidesOffsetAfter,\n initialSlide\n } = params;\n const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!bothDirections && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (bothDirections && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (bothDirections && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections;\n let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n if (isInitialOverflow) {\n slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);\n }\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n if (appendSlidesIndexes.includes(activeSlideIndex)) {\n appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n if (prependSlidesIndexes.includes(activeSlideIndex)) {\n prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {\n return;\n } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n snapToSlideEdge: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n params.modules.forEach(mod => {\n if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) {\n swiper.modules.push(mod);\n }\n });\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n getSlideIndexWhenGrid(index) {\n if (this.grid && this.params.grid && this.params.grid.rows > 1) {\n if (this.params.grid.fill === 'column') {\n index = Math.floor(index / this.params.grid.rows);\n } else if (this.params.grid.fill === 'row') {\n index = index % Math.ceil(this.slides.length / this.params.grid.rows);\n }\n }\n return index;\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate(undefined, true);\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay({\n swiper,\n extendParams,\n on,\n emit,\n params\n}) {\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const getTotalDelay = () => {\n let totalDelay = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0) {\n totalDelay = currentSlideDelay;\n }\n return totalDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = delayForce;\n if (typeof delay === 'undefined') {\n delay = getTotalDelay();\n autoplayDelayTotal = delay;\n autoplayDelayCurrent = delay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n autoplayTimeLeft = getTotalDelay();\n autoplayDelayTotal = getTotalDelay();\n }\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","@import '../../styles/host.scss';\n@import '../../styles/functions';\n\nq2-carousel {\n display: grid;\n grid-template-rows: repeat(2, auto);\n gap: var-list(--tct-carousel-gap, --app-scale-2x, 10px);\n}\n\n.swiper {\n --comp-container-padding: #{var-list(--app-scale-1x, 5px) 0 var-list(--app-scale-2x, 10px)};\n display: block;\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n padding: var-list(var-prefixer(carousel-container-padding), --comp-container-padding, unquote('5px 0 10px'));\n}\n\n.insufficient-pane-feedback {\n text-align: center;\n box-shadow: var-list(--app-shadow-2, unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)'));\n background: var-list(\n --tct-carousel-background,\n var-prefixer(carousel-background-color),\n --tct-white,\n --app-white,\n #ffffff\n );\n border: var-list(var-prefixer(carousel-pane-border-width), 1px) solid\n var-list(var-prefixer(carousel-pane-border-color), var-prefixer(gray-11), --tct-gray-l1, --app-gray-l1, #cccccc);\n border-radius: var-list(var-prefixer(carousel-pane-border-radius), 8px);\n padding: var-list(var-prefixer(carousel-pane-padding), 7px);\n\n &.content-peek-display {\n max-width: 395px;\n margin: 0 auto;\n }\n .insufficient-panes-header,\n .insufficient-panes-body {\n text-align: center;\n }\n\n .insufficient-panes-header strong {\n font-weight: 600;\n }\n\n .insufficient-panes-body {\n margin: 0 auto 2rem auto;\n max-width: 75%;\n }\n .insufficient-panes-icon-wrapper {\n display: flex;\n justify-content: center;\n margin: 1rem 0 2rem 0;\n\n q2-icon {\n width: 38px;\n }\n }\n}\n\n.q2-carousel-pagination-navigation-wrapper {\n grid-row: 2;\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 44px;\n &.evenly-space {\n justify-content: space-between;\n }\n}\n\n.q2-carousel-control-center-tray {\n display: flex;\n align-items: center;\n}\n\n.q2-carousel-swiper-wrapper.compact {\n overflow: visible;\n\n q2-btn {\n margin-top: 4px;\n }\n}\n\n.q2-carousel-pagination {\n height: 12px;\n display: flex;\n align-content: center;\n justify-content: center;\n gap: 0.5rem;\n\n .q2-carousel-page-indicator {\n display: inline-block;\n height: 12px;\n width: 12px;\n border-radius: 50%;\n background-color: var-list(var-prefixer(carousel-pagination-inactive-color), --t-a11y--gray-color-AA, #949494);\n padding: 0;\n border: 0;\n transition: all 0.5s;\n\n &:hover {\n background-color: var-list(var-prefixer(carousel-pagination-active-color), var-prefixer(primary), #006eb2);\n }\n\n &.active-page {\n display: inline-block;\n background-color: var-list(var-prefixer(carousel-pagination-active-color), var-prefixer(primary), #006eb2);\n }\n }\n\n &.dynamic {\n .q2-carousel-page-indicator {\n display: none;\n\n &.active-page,\n &.active-adjacent {\n display: inline-block;\n height: 10px;\n width: 10px;\n }\n\n &.active-adjacent-adjacent {\n display: inline-block;\n height: 8px;\n width: 8px;\n }\n }\n }\n}\n\n.q2-carousel-swiper-container {\n grid-row: 1;\n .swiper-wrapper {\n position: relative;\n width: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n box-sizing: content-box;\n }\n\n /** CONTENT PEEKING **/\n &.content-peek-display .q2-carousel-pane:not(.swiper-slide-active) {\n transform: scale(0.9);\n }\n\n &.frameless-display {\n padding: var-list(var-prefixer(carousel-frameless-container-padding), 0);\n }\n\n &.full-width-display {\n --comp-container-padding: #{var-list(--app-scale-1x, 5px) var-list(--app-scale-2x, 10px)\n var-list(--app-scale-2x, 10px)};\n padding: var-list(\n var-prefixer(carousel-full-width-container-padding),\n --comp-container-padding,\n unquote('5px 10px 10px')\n );\n }\n}\n\n.q2-carousel-navigation-button {\n --tct-btn-icon-hover-background: #{var-list(--tct-carousel-btn-hover-background, --app-gray-l3, #f2f2f2)};\n --tct-icon-stroke-primary: #{var-list(--tct-carousel-btn-icon-stroke-primary, --app-gray, #747474)};\n --tct-icon-stroke-secondary: #{var-list(--tct-carousel-btn-icon-stroke-secondary, --app-gray, #747474)};\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n Watch,\n State,\n Fragment,\n Element,\n Host,\n h,\n Event,\n EventEmitter,\n Listen,\n Method,\n} from '@stencil/core';\nimport Swiper from 'swiper';\nimport { Autoplay } from 'swiper/modules';\nimport type { SwiperOptions } from 'swiper/types';\nimport { createGuid, loc, handleAriaLabel, overrideFocus, isEventFromElement } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { filterChildren, hasValidChildren } from '@/utils/component';\n\nconst carouselBreakpoint = 500; /* width in px of this host element where the layout starts to get unruly */\nconst carouselDesktopBreakpoint = 1024; /* viewport width where we show 3 full panes */\n\n/**\n * @name Carousel\n * @category Display\n * @summary Use for cycling through a series of content slides with swipe or button navigation.\n */\n@Component({ tag: 'q2-carousel', shadow: false, styleUrl: 'q2-carousel.scss' })\nexport class Q2Carousel implements ComponentInterface {\n // #region Own Properties\n\n carouselPaneWrapperElement: HTMLElement;\n carouselWrapper: HTMLElement;\n fullWidthDisplayOptions: SwiperOptions;\n guid = createGuid();\n mutationObserver: MutationObserver;\n swiper?: Swiper = null;\n universalCarouselOptions: SwiperOptions;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n /** Manages re-rendering the component when the `ariaLive` value changes. */\n @State()\n ariaLiveValue: 'polite' | 'off' = 'polite';\n\n /** Manages re-rendering the autoPlay button when clicked. */\n @State()\n autoPlayInProgress: boolean = false;\n\n /** Manages re-rendering the component when resize event is consumed. */\n @State()\n carouselWrapperWidth: number = 0;\n\n /** Manages sizing the component based on changes in `carouselWrapperWidth`. */\n @State()\n compactMode: boolean = false;\n\n /** Manages re-rendering the component when panes are added or removed. */\n @State()\n currentPaneCount: number = this.paneCount;\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true })\n ariaLabel: string;\n\n /** Enables the auto-play feature and starts the carousel without user input. */\n @Prop({ reflect: true })\n autoPlay: boolean = false;\n\n /** Display the carousel panes as frameless with no container or shadow. */\n @Prop({ reflect: true })\n framelessPanes: boolean = false;\n\n /** Display the carousel panes full-width rather than with peeking content. */\n @Prop({ reflect: true })\n fullWidthPanes: boolean = false;\n\n /** Hide the dots below the carousel that provide navigation control and indicate which page is currently active. */\n @Prop({ reflect: true })\n hidePagination: boolean = false;\n\n /** The currently displayed carousel pane. */\n @Prop({ reflect: true, mutable: true })\n index: number = 1;\n\n /**\n * The label that is associated with the carousel. This is not displayed visually, but is presented by screen readers.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string = 'tecton.element.carousel.ariaLabel';\n\n /** Display navigation arrow buttons as another way to navigate the carousel. */\n @Prop({ reflect: true })\n showNavigationArrows: boolean = false;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the displayed carousel pane changes.\n * @deprecated Use 'tctChange' instead\n */\n @Event()\n change: EventEmitter<{ index: number }>;\n\n /**\n * Emitted when the displayed carousel pane changes.\n */\n @Event()\n tctChange: EventEmitter<{ index: number }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n if (!!this.swiper) {\n this.tearDownCarousel();\n }\n\n window.removeEventListener('resize', this.setCarouselWrapperWidth);\n }\n\n componentWillLoad() {\n handleAriaLabel(this);\n this.updateCarouselPaneProps();\n window.addEventListener('resize', this.setCarouselWrapperWidth);\n\n if (!hasValidChildren(this.hostElement, 'q2-carousel-pane')) {\n filterChildren(this.hostElement, 'q2-carousel-pane');\n }\n\n this.universalCarouselOptions = {\n centeredSlides: true,\n focusableElements:\n 'q2-btn, q2-dropdown, q2-item, q2-list, a, input, select, textarea, button, video, label, option',\n autoplay: this.autoPlay,\n modules: [Autoplay],\n on: {\n realIndexChange: swiper => {\n this.index = swiper.realIndex + 1;\n this.updateCarouselPaneProps();\n const isPaginationFocused = !!document.activeElement.closest(\n `#q2-carousel-${this.guid} .q2-carousel-page-indicator`\n );\n const isCarouselFocused = !!document.activeElement.closest(\n `#q2-carousel-${this.guid} q2-carousel-pane`\n );\n const isFocused = isPaginationFocused || isCarouselFocused;\n this.handleAriaLive(isFocused);\n mirrorEmit(this, ['change', 'tctChange'], { index: swiper.realIndex + 1 });\n\n if (isPaginationFocused) {\n this.paginationBtns[swiper.realIndex].focus({ preventScroll: true });\n } else if (isCarouselFocused)\n (swiper.slides[swiper.realIndex] as HTMLElement).focus({\n preventScroll: true,\n });\n },\n afterInit: swiper => {\n this.swiper = swiper;\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n },\n slideChangeTransitionEnd: () => {\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n },\n slideChangeTransitionStart: () => {\n this.activePane?.removeEventListener('popoverStateChanged', this.handlePopovers);\n },\n },\n };\n\n this.fullWidthDisplayOptions = {\n slidesPerView: 1,\n spaceBetween: 100,\n ...this.universalCarouselOptions,\n };\n }\n\n componentDidLoad() {\n this.setCarouselWrapperWidth();\n if (this.carouselWrapper && !!this.paneArray.length) {\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n }\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('clickCarouselPane')\n carouselPaneClicked(event) {\n this.swiper?.slideTo(event.detail.paneIndex);\n (this.swiper?.slides[event.detail.paneIndex] as HTMLElement).focus({ preventScroll: true });\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n const activePane = this.swiper?.slides[this.swiper?.realIndex];\n if (!isEventFromElement(event, this.hostElement) || !activePane) return;\n (activePane as HTMLElement).focus({ preventScroll: true });\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Clicks and Focuses the `q2-carousel-pane` matching the specified index.\n * @testOnly\n */\n @Method()\n async selectCarouselPane(index: number) {\n if (index > this.paneCount) return;\n const actualIndex = index > 0 ? index - 1 : 0;\n const pane = this.paneArray[actualIndex];\n pane?.click();\n pane?.focus({ preventScroll: true });\n }\n\n /**\n * Clicks and Focuses the `<button>` that controls playing or pausing the auto-play feature of the carousel.\n *\n * @warning\n * If the `autoPlay` property is not enabled, this method does nothing.\n *\n * @testOnly\n */\n @Method()\n async togglePlayPause() {\n if (!this.autoPlay) return;\n const playPauseBtn = this.hostElement.querySelector('.q2-carousel-autoplay-control') as HTMLQ2BtnElement;\n playPauseBtn?.click();\n playPauseBtn?.focus();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('carouselWrapperWidth')\n carouselWrapperWidthChanged() {\n this.compactMode = this.carouselWrapperWidth < carouselBreakpoint;\n }\n\n @Watch('framelessPanes')\n framelessPanesChanged() {\n this.updateCarouselPaneProps();\n this.revampCarousel();\n }\n\n @Watch('fullWidthPanes')\n @Watch('framelessPanes')\n @Watch('compactMode')\n @Watch('autoPlay')\n revampCarousel() {\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n }\n\n @Watch('index')\n indexChanged(newIndex) {\n // this allows the carousel to be swiped programmatically via the index prop\n if (newIndex !== this.swiper?.realIndex + 1) {\n this.swiper?.slideTo(this.realIndex);\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get activeCarouselOptions() {\n return this.fullWidthPanes || this.framelessPanes\n ? this.fullWidthDisplayOptions\n : this.peekContentDisplayOptions;\n }\n\n get activePane(): HTMLElement {\n const activeSlide = this.swiper?.slides[this.swiper?.realIndex] ?? 0;\n return activeSlide instanceof HTMLElement ? activeSlide : null;\n }\n\n get insufficientPanes() {\n return this.paneCount < 1;\n }\n\n get paginationBtns(): NodeListOf<HTMLButtonElement> {\n return this.hostElement.querySelectorAll('.q2-carousel-page-indicator');\n }\n\n get paneArray(): HTMLQ2CarouselPaneElement[] {\n return Array.from(this.hostElement.querySelectorAll('q2-carousel-pane'));\n }\n\n get paneCount() {\n return this.paneArray.length;\n }\n\n get peekContentDisplayOptions(): SwiperOptions {\n return {\n slidesPerView: 2,\n spaceBetween: this.compactMode ? 0 : -10,\n centerInsufficientSlides: false,\n breakpoints: {\n [carouselDesktopBreakpoint]: {\n slidesPerView: 3,\n },\n },\n ...this.universalCarouselOptions,\n };\n }\n\n get realIndex(): number {\n const indexNum = Number(this.index);\n return indexNum > 0 ? indexNum - 1 : 0;\n }\n\n get useDynamicPaginationDots() {\n return this.paneCount && this.paneCount > 5;\n }\n\n configureCarousel = (carouselWrapper, carouselOptions) => {\n if (!!this.swiper) {\n this.tearDownCarousel();\n }\n this.autoPlayInProgress = this.autoPlay;\n\n new Swiper(carouselWrapper, carouselOptions);\n this.swiper?.slideTo(this.realIndex);\n if (this.autoPlayInProgress) this.swiper?.autoplay.start();\n };\n\n handleAriaLive(activeAndFocused: boolean) {\n if (this.autoPlayInProgress && !activeAndFocused) {\n this.ariaLiveValue = 'off';\n } else {\n this.ariaLiveValue = 'polite';\n }\n }\n\n handleAutoPlayPause = (action: 'play' | 'pause') => {\n if (!this.autoPlay) return;\n const autoplay = this.swiper?.autoplay;\n switch (action) {\n case 'play':\n autoplay.start();\n this.autoPlayInProgress = true;\n break;\n case 'pause':\n autoplay.stop();\n this.autoPlayInProgress = false;\n break;\n }\n };\n\n handlePopovers = (event: CustomEvent) => {\n const { swiper, carouselPaneWrapperElement } = this;\n if (event.detail.open) {\n carouselPaneWrapperElement.style.left = `${swiper?.translate}px`;\n carouselPaneWrapperElement.style.transform = null;\n swiper?.disable();\n } else {\n carouselPaneWrapperElement.style.left = null;\n carouselPaneWrapperElement.style.transform = `translate3d(${swiper?.translate}px, 0, 0)`;\n swiper?.enable();\n }\n };\n\n keydownHandler = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n this.swiper?.slideNext();\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.swiper?.slidePrev();\n break;\n\n case 'Home':\n event.preventDefault();\n this.swiper?.slideTo(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.swiper?.slideTo(this.paneCount - 1);\n break;\n }\n };\n\n onMutationObserved = () => {\n this.updateCarouselPaneProps();\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n };\n\n setCarouselWrapperWidth = () => {\n if (this.insufficientPanes) return;\n this.carouselWrapperWidth = this.carouselWrapper.clientWidth;\n };\n\n tearDownCarousel = () => {\n this.swiper.destroy();\n this.swiper = null;\n };\n\n updateCarouselPaneProps = () => {\n const { framelessPanes, paneCount, paneArray } = this;\n\n paneArray.forEach((pane, index) => {\n pane.index = index;\n pane.siblingCount = paneCount;\n pane.isActivePane = index === this.realIndex;\n pane.slotFrameless = framelessPanes || undefined;\n });\n this.currentPaneCount = paneCount;\n };\n\n // #endregion\n // #region Render Methods\n\n renderAutoPlayBtn = () => {\n const { autoPlayInProgress } = this;\n return (\n <q2-btn\n type=\"button\"\n hide-label\n label={loc(\n autoPlayInProgress\n ? 'tecton.element.carousel.pausePlayLabel'\n : 'tecton.element.carousel.resumePlayLabel'\n )}\n class=\"q2-carousel-autoplay-control\"\n onClick={() => this.handleAutoPlayPause(autoPlayInProgress ? 'pause' : 'play')}\n >\n <q2-icon type={autoPlayInProgress ? 'pause' : 'play'} />\n </q2-btn>\n );\n };\n\n renderInsufficientPanesDisplay = () => {\n let insufficientPanesContainerClasses = [\n 'insufficient-pane-feedback',\n this.fullWidthPanes ? 'full-width-display' : 'content-peek-display',\n ];\n if (this.compactMode) insufficientPanesContainerClasses = [...insufficientPanesContainerClasses, 'compact'];\n\n return (\n <div class={insufficientPanesContainerClasses.join(' ')}>\n <div class=\"insufficient-panes-icon-wrapper\">\n <q2-icon type=\"warning\" />\n </div>\n <p class=\"insufficient-panes-header\">\n <strong>{loc('tecton.element.carousel.insufficientPanesMessageHeader')}</strong>\n </p>\n <p class=\"insufficient-panes-body\">{loc('tecton.element.carousel.insufficientPanesMessageBody')}</p>\n </div>\n );\n };\n\n renderNextNavBtn = () => {\n const nextPaneAvailable = this.realIndex < this.paneCount - 1;\n\n return (\n <div>\n <q2-btn\n type=\"button\"\n disabled={nextPaneAvailable ? undefined : true}\n class=\"q2-carousel-navigation-button q2-carousel-navigation-button-next\"\n hide-label\n label={loc('tecton.element.carousel.nextItemLabel')}\n onClick={() => this.swiper?.slideNext()}\n >\n <q2-icon type=\"chevron-right\" />\n </q2-btn>\n </div>\n );\n };\n\n renderPaginationArea = () => {\n const { useDynamicPaginationDots, realIndex, paneCount, paneArray } = this;\n let paginationContainerClasses = ['q2-carousel-pagination'];\n if (useDynamicPaginationDots) paginationContainerClasses = [...paginationContainerClasses, 'dynamic'];\n\n return (\n <div\n class={paginationContainerClasses.join(' ')}\n role=\"tablist\"\n aria-label={loc('tecton.element.carousel.tabWrapperLabel')}\n >\n {paneArray.map(pane => {\n let btnClasses = ['q2-carousel-page-indicator', `q2-carousel-page-indicator-${pane.index}`];\n if (pane.isActivePane) btnClasses = [...btnClasses, 'active-page'];\n if (useDynamicPaginationDots) btnClasses = [...btnClasses, 'dynamic'];\n\n const withinOneOfActive = pane.index === realIndex + 1 || pane.index === realIndex - 1;\n if (withinOneOfActive) btnClasses = [...btnClasses, 'active-adjacent'];\n\n const withinTwoOfActive = pane.index === realIndex + 2 || pane.index === realIndex - 2;\n if (withinTwoOfActive) btnClasses = [...btnClasses, 'active-adjacent-adjacent'];\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n tabIndex={pane.isActivePane ? undefined : -1}\n aria-selected={`${pane.isActivePane}`}\n class={btnClasses.join(' ')}\n onClick={() => this.swiper?.slideTo(pane.index)}\n onKeyDown={this.keydownHandler}\n aria-label={loc('tecton.element.carousel.itemDescription', [\n (pane.index + 1).toString(),\n paneCount.toString(),\n ])}\n ></button>\n );\n })}\n </div>\n );\n };\n\n renderPrevNavBtn = () => {\n const prevPaneAvailable = this.realIndex > 0;\n\n return (\n <div>\n <q2-btn\n type=\"button\"\n disabled={prevPaneAvailable ? undefined : true}\n class=\"q2-carousel-navigation-button q2-carousel-navigation-button-prev\"\n hide-label\n label={loc('tecton.element.carousel.previousItemLabel')}\n onClick={() => this.swiper?.slidePrev()}\n >\n <q2-icon type=\"chevron-left\" />\n </q2-btn>\n </div>\n );\n };\n\n render() {\n const {\n paneCount,\n fullWidthPanes,\n framelessPanes,\n compactMode,\n showNavigationArrows,\n insufficientPanes,\n autoPlay,\n hidePagination,\n ariaLiveValue,\n label,\n } = this;\n let carouselContainerClasses = ['q2-carousel-swiper-container', 'swiper'];\n if (fullWidthPanes) carouselContainerClasses = [...carouselContainerClasses, 'full-width-display'];\n if (framelessPanes) carouselContainerClasses = [...carouselContainerClasses, 'frameless-display'];\n if (!fullWidthPanes && !framelessPanes)\n carouselContainerClasses = [...carouselContainerClasses, 'content-peek-display'];\n if (compactMode) carouselContainerClasses = [...carouselContainerClasses, 'compact'];\n\n let paginationWrapperClasses = ['q2-carousel-pagination-navigation-wrapper'];\n if (showNavigationArrows) paginationWrapperClasses = [...paginationWrapperClasses, 'evenly-space'];\n\n return (\n <Host\n id={`q2-carousel-${this.guid}`}\n class=\"q2-carousel-instance\"\n >\n {insufficientPanes ? (\n this.renderInsufficientPanesDisplay()\n ) : (\n <Fragment>\n {paneCount > 1 && (\n <div class={paginationWrapperClasses.join(' ')}>\n {showNavigationArrows && this.renderPrevNavBtn()}\n\n <div class=\"q2-carousel-control-center-tray\">\n {!hidePagination && this.renderPaginationArea()}\n\n {autoPlay && this.renderAutoPlayBtn()}\n </div>\n\n {showNavigationArrows && this.renderNextNavBtn()}\n </div>\n )}\n\n <section\n class={carouselContainerClasses.join(' ')}\n ref={el => (this.carouselWrapper = el)}\n aria-roledescription=\"carousel\"\n aria-label={loc(label)}\n >\n <div\n class=\"q2-carousel-swiper-wrapper swiper-wrapper\"\n ref={el => (this.carouselPaneWrapperElement = el)}\n aria-live={ariaLiveValue}\n onKeyDown={this.keydownHandler}\n >\n <slot></slot>\n </div>\n </section>\n </Fragment>\n )}\n </Host>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["isObject","obj","constructor","Object","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","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","c","deleteProps","object","e","nextTick","delay","now","el","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","isNode","node","HTMLElement","nodeType","args","to","i","nextSource","undefined","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","startTime","time","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","elementIsChildOfSlot","slot","elementsQueue","elementToCheck","shift","shadowRoot","elementIsChildOf","parent","isChild","contains","includes","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parentElement","elementOuterSize","size","includeMargins","support","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","getSupport","deviceCached","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","browser","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","getBrowser","Resize","on","emit","observer","animationFrame","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","observerUpdate","attributes","childList","isElement","characterData","init","observeParents","containerParents","hostEl","observeSlideChildren","destroy","disconnect","splice","eventsEmitter","events","handler","priority","self","eventsListeners","method","event","once","onceHandler","off","__emitterProxy","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","unshift","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","swiperSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","slideEl","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","initSlides","unsetSlides","slideSize","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slidesPerViewAutoSlideSize","roundLengths","floor","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","offsetWidth","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","isFractionalSlidesPerView","shouldSnapToSlideEdge","snapToSlideEdge","loop","lastAllowedSnapIndex","minVisibleSlides","accumulatedSize","newSlidesGrid","slidesGridItem","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","remove","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","toggleSlideClasses$1","condition","className","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","toggleSlideClasses","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","column","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","processLazyPreloader","imageEl","slideSelector","closest","lazyEl","lazyPreloaderClass","lazyPreloaderManaged","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEnd","transitionDuration","transitionDelay","transitionEmit","direction","step","transitionStart","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","isInitialVirtual","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","indexAsNumber","newIndex","targetSlideIndex","cols","bothDirections","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","getSlideIndexWhenGrid","isGrid","getSlideIndex","loopCreate","clearBlankSlides","slideBlankClass","recalcSlides","loopAddBlankSlides","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","append","slidesToAdd","byMousewheel","loopedSlides","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndex","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","newSlideTranslate","diff","touchEventsData","startTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","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","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","_loopSwapReset","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isTouchEvent","proceed","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","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","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpointsBase","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","autoheight","centered","removeClasses","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","swiperElementNodeName","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","slideInView","complete","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","res","slideSlots","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","Autoplay","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","timeout","raf","autoplayDelayTotal","autoplayDelayCurrent","autoplayTimeLeft","autoplayStartTime","wasPaused","pausedByTouch","touchStartTimeout","pausedByInteraction","pausedByPointerEnter","onTransitionEnd","calcTimeLeft","getSlideDelay","activeSlideEl","currentSlideDelay","getTotalDelay","totalDelay","run","delayForce","start","stop","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","_s","q2CarouselCss","carouselBreakpoint","carouselDesktopBreakpoint","Q2Carousel","hostRef","guid","createGuid","ariaLiveValue","autoPlayInProgress","carouselWrapperWidth","compactMode","currentPaneCount","paneCount","autoPlay","framelessPanes","fullWidthPanes","hidePagination","showNavigationArrows","configureCarousel","carouselWrapper","carouselOptions","_a","mutationObserver","tearDownCarousel","targetIndex","_b","_c","activePane","handlePopovers","_d","hostElement","subtree","handleAutoPlayPause","action","carouselPaneWrapperElement","open","left","keydownHandler","onMutationObserved","updateCarouselPaneProps","activeCarouselOptions","setCarouselWrapperWidth","insufficientPanes","paneArray","pane","domIndex","swiperIndex","siblingCount","isActivePane","slotFrameless","renderAutoPlayBtn","h","class","loc","xmlns","viewBox","d","renderInsufficientPanesDisplay","insufficientPanesContainerClasses","renderNextNavBtn","renderPaginationArea","useDynamicPaginationDots","paginationContainerClasses","role","isActive","btnClasses","withinOneOfActive","withinTwoOfActive","tabIndex","onKeyDown","renderPrevNavBtn","disconnectedCallback","componentWillLoad","handleAriaLabel","hasValidChildren","filterChildren","universalCarouselOptions","realIndexChange","isPaginationFocused","isCarouselFocused","isFocused","handleAriaLive","mirrorEmit","paginationBtns","focus","preventScroll","afterInit","slideChangeTransitionEnd","slideChangeTransitionStart","fullWidthDisplayOptions","componentDidLoad","overrideFocus","carouselPaneClicked","paneIndex","delegateFocus","isEventFromElement","selectCarouselPane","actualIndex","togglePlayPause","playPauseBtn","click","ariaLabelObserver","carouselWrapperWidthChanged","framelessPanesChanged","revampCarousel","indexChanged","peekContentDisplayOptions","indexNum","activeAndFocused","render","arrowPosition","carouselContainerClasses","paginationWrapperClasses","Host","Fragment","ref"],"sources":["../../node_modules/.pnpm/swiper@12.1.2/node_modules/swiper/shared/ssr-window.esm.mjs","../../node_modules/.pnpm/swiper@12.1.2/node_modules/swiper/shared/utils.mjs","../../node_modules/.pnpm/swiper@12.1.2/node_modules/swiper/shared/swiper-core.mjs","../../node_modules/.pnpm/swiper@12.1.2/node_modules/swiper/modules/autoplay.mjs","src/components/q2-carousel/q2-carousel.scss?tag=q2-carousel","src/components/q2-carousel/q2-carousel.tsx"],"sourcesContent":["/**\n * SSR Window 5.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: June 27, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target = {}, src = {}) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes = '') {\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype');\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector = '') {\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes = []) {\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n 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'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\nfunction setInnerHTML(el, html = '') {\n if (typeof trustedTypes !== 'undefined') {\n el.innerHTML = trustedTypes.createPolicy('html', {\n createHTML: s => s\n }).createHTML(html);\n } else {\n el.innerHTML = html;\n }\n}\n\nexport { getRotateFix as a, setCSSProperty as b, createElement as c, elementParents as d, elementChildren as e, elementOffset as f, getSlideTransformEl as g, now as h, elementOuterSize as i, elementIndex as j, classesToTokens as k, getTranslate as l, makeElementsArray as m, nextTick as n, elementTransitionEnd as o, isObject as p, elementStyle as q, elementNextAll as r, setInnerHTML as s, elementPrevAll as t, animateCSSModeScroll as u, showWarning as v, elementIsChildOf as w, extend as x, deleteProps as y };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { d as elementParents, q as elementStyle, e as elementChildren, b as setCSSProperty, i as elementOuterSize, r as elementNextAll, t as elementPrevAll, l as getTranslate, u as animateCSSModeScroll, n as nextTick, v as showWarning, c as createElement, w as elementIsChildOf, h as now, x as extend, j as elementIndex, y as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad)(?!\\1).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n const swiperSize = swiper.size - offsetBefore - offsetAfter;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n // set cssMode offsets\n if (params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`);\n setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`);\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides[i];\n if (slide) {\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n }\n\n if (isVirtual && params.slidesPerView === 'auto') {\n if (params.virtual.slidesPerViewAutoSlideSize) {\n slideSize = params.virtual.slidesPerViewAutoSlideSize;\n }\n if (slideSize && slide) {\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n } else if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slide.style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slide) {\n slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slide) {\n slide.swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n // Check if snapToSlideEdge should be applied\n const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0;\n const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView);\n\n // Calculate the last allowed snap index when snapToSlideEdge is enabled\n // This ensures minimum slides are visible at the end\n let lastAllowedSnapIndex = snapGrid.length;\n if (shouldSnapToSlideEdge) {\n let minVisibleSlides;\n if (params.slidesPerView === 'auto') {\n // For 'auto' mode, calculate how many slides fit based on actual sizes\n minVisibleSlides = 1;\n let accumulatedSize = 0;\n for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) {\n accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0);\n if (accumulatedSize <= swiperSize) {\n minVisibleSlides = slidesSizesGrid.length - i;\n } else {\n break;\n }\n }\n } else {\n minVisibleSlides = Math.floor(params.slidesPerView);\n }\n lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0);\n }\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (shouldSnapToSlideEdge) {\n // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex\n if (i <= lastAllowedSnapIndex) {\n newSlidesGrid.push(slidesGridItem);\n }\n } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n // Only add edge-aligned snap if snapToSlideEdge is not enabled\n if (!shouldSnapToSlideEdge) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();\n }\n });\n }\n }\n // Skip removal if managed by React/Vue component\n if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled) {\n if (params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else {\n realIndex = activeIndex;\n }\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n } else if (runCallbacks && activeIndex !== previousIndex) {\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index = 0, speed, runCallbacks = true, internal, initial) {\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n const browser = getBrowser();\n const isSafari = browser.isSafari;\n if (isVirtual && !initial && isSafari && swiper.isElement) {\n swiper.virtual.update(false, false, slideIndex);\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index = 0, speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides,\n slidesOffsetBefore,\n slidesOffsetAfter\n } = swiper.params;\n const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (bothDirections && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (bothDirections) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const isFreeMode = params.freeMode && params.freeMode.enabled;\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks = true, internal) {\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex);\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n swiper.slideToLoop(realIndex);\n } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex, initial) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const clearBlankSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`);\n slides.forEach(el => {\n el.remove();\n });\n if (slides.length > 0) {\n swiper.recalcSlides();\n swiper.updateSlides();\n }\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) {\n clearBlankSlides();\n }\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n 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)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n 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)');\n }\n initSlides();\n } else {\n initSlides();\n }\n const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter;\n swiper.loopFix({\n slideRealIndex,\n direction: bothDirections ? undefined : 'next',\n initial\n });\n}\n\nfunction loopFix({\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n initial,\n byController,\n byMousewheel\n} = {}) {\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides,\n slidesOffsetBefore,\n slidesOffsetAfter,\n initialSlide\n } = params;\n const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!bothDirections && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (bothDirections && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (bothDirections && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections;\n let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n if (isInitialOverflow) {\n slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);\n }\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n if (appendSlidesIndexes.includes(activeSlideIndex)) {\n appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n if (prependSlidesIndexes.includes(activeSlideIndex)) {\n prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {\n return;\n } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n snapToSlideEdge: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n params.modules.forEach(mod => {\n if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) {\n swiper.modules.push(mod);\n }\n });\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n getSlideIndexWhenGrid(index) {\n if (this.grid && this.params.grid && this.params.grid.rows > 1) {\n if (this.params.grid.fill === 'column') {\n index = Math.floor(index / this.params.grid.rows);\n } else if (this.params.grid.fill === 'row') {\n index = index % Math.ceil(this.slides.length / this.params.grid.rows);\n }\n }\n return index;\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate(undefined, true);\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay({\n swiper,\n extendParams,\n on,\n emit,\n params\n}) {\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const getTotalDelay = () => {\n let totalDelay = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0) {\n totalDelay = currentSlideDelay;\n }\n return totalDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = delayForce;\n if (typeof delay === 'undefined') {\n delay = getTotalDelay();\n autoplayDelayTotal = delay;\n autoplayDelayCurrent = delay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n autoplayTimeLeft = getTotalDelay();\n autoplayDelayTotal = getTotalDelay();\n }\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","@import '../../styles/host.scss';\n@import '../../styles/functions';\n\nq2-carousel {\n display: grid;\n grid-template-rows: repeat(2, auto);\n gap: var-list(--tct-carousel-gap, --app-scale-2x, 10px);\n}\n\n.swiper {\n --comp-container-padding: #{var-list(--app-scale-1x, 5px) 0 var-list(--app-scale-2x, 10px)};\n display: block;\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n padding: var-list(var-prefixer(carousel-container-padding), --comp-container-padding, unquote('5px 0 10px'));\n}\n\n.insufficient-pane-feedback {\n text-align: center;\n box-shadow: var-list(--app-shadow-2, unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)'));\n background: var-list(\n --tct-carousel-background,\n var-prefixer(carousel-background-color),\n --tct-white,\n --app-white,\n #ffffff\n );\n border: var-list(var-prefixer(carousel-pane-border-width), 1px) solid\n var-list(var-prefixer(carousel-pane-border-color), var-prefixer(gray-11), --tct-gray-l1, --app-gray-l1, #cccccc);\n border-radius: var-list(var-prefixer(carousel-pane-border-radius), 8px);\n padding: var-list(var-prefixer(carousel-pane-padding), 7px);\n\n &.content-peek-display {\n max-width: 395px;\n margin: 0 auto;\n }\n .insufficient-panes-header,\n .insufficient-panes-body {\n text-align: center;\n }\n\n .insufficient-panes-header strong {\n font-weight: 600;\n }\n\n .insufficient-panes-body {\n margin: 0 auto 2rem auto;\n max-width: 75%;\n }\n .insufficient-panes-icon-wrapper {\n display: flex;\n justify-content: center;\n margin: 1rem 0 2rem 0;\n\n q2-icon {\n width: 38px;\n }\n }\n}\n\n.q2-carousel-pagination-navigation-wrapper {\n grid-row: 2;\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 44px;\n &.evenly-space {\n justify-content: space-between;\n }\n &.center-space {\n justify-content: center;\n .q2-carousel-control-center-tray {\n margin: var-list(--tct-carouse-pagination-center-tray-margin, unquote('0 24px'));\n }\n }\n}\n\n.q2-carousel-floating-arrow-wrapper {\n --comp-pagination-arrow-height: #{var-list(--tct-carousel-floating-nav-arrow-height, 44px)};\n width: auto;\n z-index: 2;\n display: flex;\n position: absolute;\n left: 10px;\n right: 10px;\n top: calc(50% - var(--comp-pagination-arrow-height) / 2);\n height: var(--comp-pagination-arrow-height);\n justify-content: space-between;\n align-items: center;\n}\n\n.q2-carousel-control-center-tray {\n display: flex;\n align-items: center;\n gap: var-list(--tct-carousel-control-gap, 16px);\n}\n\n.q2-carousel-swiper-wrapper.compact {\n overflow: visible;\n\n q2-btn {\n margin-top: 4px;\n }\n}\n\n.q2-carousel-pagination {\n height: var-list(--tct-carousel-pagination-height, 12px);\n display: flex;\n align-content: center;\n justify-content: center;\n gap: 0.5rem;\n\n .q2-carousel-page-indicator {\n display: inline-block;\n height: var-list(--tct-carousel-page-indicator-size, 8px);\n width: var-list(--tct-carousel-page-indicator-size, 8px);\n border-radius: 50%;\n background-color: var-list(\n --tct-carousel-page-indicator-inactive-color,\n --t-gray11,\n #CCCCCC\n );\n padding: 0;\n border: 0;\n transition: var-list(--tct-carouse-pagination-transition, unquote('all 0.5s'));\n\n &:hover, &.active-page {\n display: inline-block;\n background-color: var-list(\n --tct-carousel-indicator-active,\n --t-primary,\n #6A4A9E\n );\n }\n }\n\n &.dynamic {\n .q2-carousel-page-indicator {\n display: none;\n\n &.active-page,\n &.active-adjacent {\n display: inline-block;\n height: 10px;\n width: 10px;\n }\n\n &.active-adjacent-adjacent {\n display: inline-block;\n height: 8px;\n width: 8px;\n }\n }\n }\n\n &.autoplay {\n align-items: center;\n gap: var-list(--tct-carousel-pagination-gap, --app-scale-2x, 8px);\n &.autoplay-on {\n --comp-carousel-indicator-grow-animation: autoplay-progress 3s linear forwards;\n }\n .q2-carousel-page-indicator {\n height: var-list(--tct-carousel-page-indicator-height, 8px);\n width: var-list(--tct-carousel-page-indicator-width, 8px);\n transition: none;\n\n &.active-page {\n width: var-list(--tct-carousel-active-page-indicator-width, 24px);\n border-radius: var-list(--tct-carousel-active-page-border-radius, 4px);\n background-color: var-list(\n --tct-carousel-indicator-inactive,\n --t-gray11,\n #CCCCCC\n );\n position: relative;\n overflow: hidden;\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n border-radius: var-list(--tct-carousel-active-page-border-radius-pseudo, 4px);\n background-color: var-list(\n --tct-carousel-indicator-active,\n --t-primary,\n #6A4A9E\n );\n transform-origin: left;\n animation: var(--comp-carousel-indicator-grow-animation, none);\n }\n }\n }\n }\n}\n\n@keyframes autoplay-progress {\n from {\n transform: scaleX(0);\n }\n to {\n transform: scaleX(1);\n }\n}\n\n.q2-carousel-swiper-container {\n grid-row: 1;\n .swiper-wrapper {\n position: relative;\n width: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n box-sizing: content-box;\n }\n\n /** CONTENT PEEKING **/\n &.content-peek-display .q2-carousel-pane:not(.swiper-slide-active) {\n transform: #{scale(var-list(--tct-carousel-neighbor-pane-scale, 1))};\n }\n\n &.frameless-display {\n padding: var-list(var-prefixer(carousel-frameless-container-padding), 0);\n }\n\n &.full-width-display {\n --comp-container-padding: #{var-list(--app-scale-1x, 5px) var-list(--app-scale-2x, 10px)\n var-list(--app-scale-2x, 10px)};\n padding: var-list(\n var-prefixer(carousel-full-width-container-padding),\n --comp-container-padding,\n unquote('5px 10px 10px')\n );\n }\n}\n\n.q2-carousel-navigation-button {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n width: 44px;\n height: 44px;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n opacity: var-list(--tct-carousel-navigation-arrow-opacity, 1);\n -webkit-tap-highlight-color: transparent;\n\n &::before {\n content: '';\n position: absolute;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: var-list(\n --tct-carousel-navigation-arrow-background-color,\n --t-primary,\n #6A4A9E\n );\n transition: background-color #{var-list(--t-tween-time-in-2, 200ms)} #{var-list(--t-tween-ease-inout, cubic-bezier(0.4,0,0.2,1))};\n }\n\n &:hover::before,\n &:focus-visible::before {\n background-color: #{var-list(--tct-carousel-btn-hover-background, --t-primary-d1, #5F438E)};\n }\n\n &:focus-visible {\n outline: none;\n &::before {\n outline: 2px solid #{var-list(--const-focus-color, #1a73e8)};\n outline-offset: 2px;\n }\n }\n\n q2-icon {\n position: relative;\n --tct-icon-size: 16px;\n --tct-icon-stroke-primary: #{var-list(--tct-carousel-btn-icon-stroke-primary, --t-base)};\n --tct-icon-stroke-secondary: #{var-list(--tct-carousel-btn-icon-stroke-secondary, --app-gray, #747474)};\n }\n}\n\n.q2-carousel-autoplay-control {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n width: 44px;\n height: 44px;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n\n &::before {\n content: '';\n position: absolute;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: transparent;\n transition: background-color #{var-list(--t-tween-time-in-2, 200ms)} #{var-list(--t-tween-ease-inout, cubic-bezier(0.4,0,0.2,1))};\n }\n\n &:hover::before,\n &:focus-visible::before {\n background-color: #{var-list(--tct-carousel-autoplay-hover-background, --t-gray13, #E6E6E6)};\n }\n\n &:focus-visible {\n outline: none;\n\n &::before {\n outline: 2px solid #{var-list(--const-focus-color, #1a73e8)};\n outline-offset: 2px;\n }\n }\n\n .autoplay-icon {\n position: relative;\n width: var-list(--tct-carousel-autoplay-icon-width, 16px);\n height: var-list(--tct-carousel-autoplay-icon-height, 16px);\n color: #{var-list(--tct-carousel-autoplay-icon-color, --t-gray6, #4D4D4D)};\n }\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n Watch,\n State,\n Fragment,\n Element,\n Host,\n h,\n Event,\n EventEmitter,\n Listen,\n Method,\n} from '@stencil/core';\nimport Swiper from 'swiper';\nimport { Autoplay } from 'swiper/modules';\nimport type { SwiperOptions } from 'swiper/types';\nimport { createGuid, loc, handleAriaLabel, overrideFocus, isEventFromElement } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nimport { filterChildren, hasValidChildren } from '@/utils/component';\n\nconst carouselBreakpoint = 500; /* width in px of this host element where the layout starts to get unruly */\nconst carouselDesktopBreakpoint = 1024; /* viewport width where we show 3 full panes */\n\n/**\n * @name Carousel\n * @category Display\n * @summary Use for cycling through a series of content slides with swipe or button navigation.\n */\n@Component({ tag: 'q2-carousel', shadow: false, styleUrl: 'q2-carousel.scss' })\nexport class Q2Carousel implements ComponentInterface {\n // #region Own Properties\n\n carouselPaneWrapperElement: HTMLElement;\n carouselWrapper: HTMLElement;\n fullWidthDisplayOptions: SwiperOptions;\n guid = createGuid();\n mutationObserver: MutationObserver;\n swiper?: Swiper = null;\n universalCarouselOptions: SwiperOptions;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n /** Manages re-rendering the component when the `ariaLive` value changes. */\n @State()\n ariaLiveValue: 'polite' | 'off' = 'polite';\n\n /** Manages re-rendering the autoPlay button when clicked. */\n @State()\n autoPlayInProgress: boolean = false;\n\n /** Manages re-rendering the component when resize event is consumed. */\n @State()\n carouselWrapperWidth: number = 0;\n\n /** Manages sizing the component based on changes in `carouselWrapperWidth`. */\n @State()\n compactMode: boolean = false;\n\n /** Manages re-rendering the component when panes are added or removed. */\n @State()\n currentPaneCount: number = this.paneCount;\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true })\n ariaLabel: string;\n\n /** Position to show the navigation arrows\n * `float`: vertically centered and float over the carousel pane.\n * `bottom`: bottom area around pagination indicator, the arrows at far left/right edges.\n * `hug`: bottom area around pagination indicator and wraps the pagination indicator.\n */\n @Prop({ reflect: true })\n arrowPosition: 'bottom' | 'hug' | 'float' | undefined;\n\n /** Enables the auto-play feature and starts the carousel without user input. */\n @Prop({ reflect: true })\n autoPlay: boolean = false;\n\n /** Display the carousel panes as frameless with no container or shadow. */\n @Prop({ reflect: true })\n framelessPanes: boolean = false;\n\n /** Display the carousel panes full-width rather than with peeking content. */\n @Prop({ reflect: true })\n fullWidthPanes: boolean = false;\n\n /** Hide the dots below the carousel that provide navigation control and indicate which page is currently active. */\n @Prop({ reflect: true })\n hidePagination: boolean = false;\n\n /** The currently displayed carousel pane. */\n @Prop({ reflect: true, mutable: true })\n index: number = 1;\n\n /**\n * The label that is associated with the carousel. This is not displayed visually, but is presented by screen readers.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string = 'tecton.element.carousel.ariaLabel';\n\n /** Display navigation arrow buttons as another way to navigate the carousel. */\n @Prop({ reflect: true })\n showNavigationArrows: boolean = false;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the displayed carousel pane changes.\n * @deprecated Use 'tctChange' instead\n */\n @Event()\n change: EventEmitter<{ index: number }>;\n\n /**\n * Emitted when the displayed carousel pane changes.\n */\n @Event()\n tctChange: EventEmitter<{ index: number }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n if (!!this.swiper) {\n this.tearDownCarousel();\n }\n\n window.removeEventListener('resize', this.setCarouselWrapperWidth);\n }\n\n componentWillLoad() {\n handleAriaLabel(this);\n this.updateCarouselPaneProps();\n window.addEventListener('resize', this.setCarouselWrapperWidth);\n\n if (!hasValidChildren(this.hostElement, 'q2-carousel-pane')) {\n filterChildren(this.hostElement, 'q2-carousel-pane');\n }\n\n this.universalCarouselOptions = {\n centeredSlides: true,\n loop: true,\n focusableElements:\n 'q2-btn, q2-dropdown, q2-item, q2-list, a, input, select, textarea, button, video, label, option',\n autoplay: this.autoPlay,\n modules: [Autoplay],\n on: {\n realIndexChange: swiper => {\n this.index = swiper.realIndex + 1;\n this.updateCarouselPaneProps();\n const isPaginationFocused = !!document.activeElement.closest(\n `#q2-carousel-${this.guid} .q2-carousel-page-indicator`\n );\n const isCarouselFocused = !!document.activeElement.closest(\n `#q2-carousel-${this.guid} q2-carousel-pane`\n );\n const isFocused = isPaginationFocused || isCarouselFocused;\n this.handleAriaLive(isFocused);\n mirrorEmit(this, ['change', 'tctChange'], { index: swiper.realIndex + 1 });\n\n if (isPaginationFocused) {\n this.paginationBtns[swiper.realIndex].focus({ preventScroll: true });\n } else if (isCarouselFocused)\n (swiper.slides[swiper.activeIndex] as HTMLElement).focus({\n preventScroll: true,\n });\n },\n afterInit: swiper => {\n this.swiper = swiper;\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n },\n slideChangeTransitionEnd: () => {\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n },\n slideChangeTransitionStart: () => {\n this.activePane?.removeEventListener('popoverStateChanged', this.handlePopovers);\n },\n },\n };\n\n this.fullWidthDisplayOptions = {\n slidesPerView: 1,\n spaceBetween: 100,\n ...this.universalCarouselOptions,\n };\n }\n\n componentDidLoad() {\n this.setCarouselWrapperWidth();\n if (this.carouselWrapper && !!this.paneArray.length) {\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n }\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('clickCarouselPane')\n carouselPaneClicked(event) {\n this.swiper?.slideToLoop(event.detail.paneIndex);\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n const activePane = this.swiper?.slides[this.swiper?.realIndex];\n if (!isEventFromElement(event, this.hostElement) || !activePane) return;\n (activePane as HTMLElement).focus({ preventScroll: true });\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Clicks and Focuses the `q2-carousel-pane` matching the specified index.\n * @testOnly\n */\n @Method()\n async selectCarouselPane(index: number) {\n if (index > this.paneCount) return;\n const actualIndex = index > 0 ? index - 1 : 0;\n this.swiper?.slideToLoop(actualIndex);\n const activeSlide = this.swiper?.slides[this.swiper?.activeIndex] as HTMLElement;\n activeSlide?.focus({ preventScroll: true });\n }\n\n /**\n * Clicks and Focuses the `<button>` that controls playing or pausing the auto-play feature of the carousel.\n *\n * @warning\n * If the `autoPlay` property is not enabled, this method does nothing.\n *\n * @testOnly\n */\n @Method()\n async togglePlayPause() {\n if (!this.autoPlay) return;\n const playPauseBtn = this.hostElement.querySelector('.q2-carousel-autoplay-control') as HTMLButtonElement;\n playPauseBtn?.click();\n playPauseBtn?.focus();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('carouselWrapperWidth')\n carouselWrapperWidthChanged() {\n this.compactMode = this.carouselWrapperWidth < carouselBreakpoint;\n }\n\n @Watch('framelessPanes')\n framelessPanesChanged() {\n this.updateCarouselPaneProps();\n this.revampCarousel();\n }\n\n @Watch('fullWidthPanes')\n @Watch('framelessPanes')\n @Watch('compactMode')\n @Watch('autoPlay')\n revampCarousel() {\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n }\n\n @Watch('index')\n indexChanged(newIndex) {\n // this allows the carousel to be swiped programmatically via the index prop\n if (newIndex !== this.swiper?.realIndex + 1) {\n this.swiper?.slideToLoop(this.realIndex);\n // this.swiper?.slideTo(this.realIndex);\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get activeCarouselOptions() {\n return this.fullWidthPanes || this.framelessPanes\n ? this.fullWidthDisplayOptions\n : this.peekContentDisplayOptions;\n }\n\n get activePane(): HTMLElement {\n const activeSlide = this.swiper?.slides[this.swiper?.activeIndex] ?? 0;\n return activeSlide instanceof HTMLElement ? activeSlide : null;\n }\n\n get insufficientPanes() {\n return this.paneCount < 1;\n }\n\n get paginationBtns(): NodeListOf<HTMLButtonElement> {\n return this.hostElement.querySelectorAll('.q2-carousel-page-indicator');\n }\n\n get paneArray(): HTMLQ2CarouselPaneElement[] {\n return Array.from(this.hostElement.querySelectorAll('q2-carousel-pane'));\n }\n\n get paneCount() {\n return this.paneArray.length;\n }\n\n get peekContentDisplayOptions(): SwiperOptions {\n return {\n slidesPerView: 2,\n spaceBetween: this.compactMode ? 0 : 10,\n centerInsufficientSlides: false,\n breakpoints: {\n [carouselDesktopBreakpoint]: {\n slidesPerView: 2,\n },\n },\n ...this.universalCarouselOptions,\n };\n }\n\n get realIndex(): number {\n const indexNum = Number(this.index);\n return indexNum > 0 ? indexNum - 1 : 0;\n }\n\n get useDynamicPaginationDots() {\n return this.paneCount && this.paneCount > 5;\n }\n\n configureCarousel = (carouselWrapper, carouselOptions) => {\n // Disconnect observer to prevent infinite loop from Swiper's internal DOM changes (e.g. loop mode)\n this.mutationObserver?.disconnect();\n\n if (!!this.swiper) {\n this.tearDownCarousel();\n }\n this.autoPlayInProgress = this.autoPlay;\n\n // Save the target index before Swiper init — the realIndexChange callback\n // fires during construction and may overwrite this.index\n const targetIndex = this.realIndex;\n new Swiper(carouselWrapper, carouselOptions);\n this.swiper?.slideToLoop(targetIndex, 0);\n // Ensure popover listener is on the active pane after initial positioning\n this.activePane?.addEventListener('popoverStateChanged', this.handlePopovers);\n if (this.autoPlayInProgress) this.swiper?.autoplay.start();\n\n // Re-observe after Swiper's DOM changes have settled\n requestAnimationFrame(() => {\n this.mutationObserver?.observe(this.hostElement, { childList: true, subtree: true });\n });\n };\n\n handleAriaLive(activeAndFocused: boolean) {\n if (this.autoPlayInProgress && !activeAndFocused) {\n this.ariaLiveValue = 'off';\n } else {\n this.ariaLiveValue = 'polite';\n }\n }\n\n handleAutoPlayPause = (action: 'play' | 'pause') => {\n if (!this.autoPlay) return;\n const autoplay = this.swiper?.autoplay;\n switch (action) {\n case 'play':\n autoplay.start();\n this.autoPlayInProgress = true;\n break;\n case 'pause':\n autoplay.stop();\n this.autoPlayInProgress = false;\n break;\n }\n };\n\n handlePopovers = (event: CustomEvent) => {\n const { swiper, carouselPaneWrapperElement } = this;\n if (event.detail.open) {\n carouselPaneWrapperElement.style.left = `${swiper?.translate}px`;\n carouselPaneWrapperElement.style.transform = null;\n swiper?.disable();\n } else {\n carouselPaneWrapperElement.style.left = null;\n carouselPaneWrapperElement.style.transform = `translate3d(${swiper?.translate}px, 0, 0)`;\n swiper?.enable();\n }\n };\n\n keydownHandler = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n this.swiper?.slideNext();\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.swiper?.slidePrev();\n break;\n\n case 'Home':\n event.preventDefault();\n this.swiper?.slideToLoop(0);\n break;\n\n case 'End':\n event.preventDefault();\n this.swiper?.slideToLoop(this.paneCount - 1);\n break;\n }\n };\n\n onMutationObserved = () => {\n if (this.paneCount !== this.currentPaneCount) {\n this.updateCarouselPaneProps();\n this.configureCarousel(this.carouselWrapper, this.activeCarouselOptions);\n }\n };\n\n setCarouselWrapperWidth = () => {\n if (this.insufficientPanes) return;\n this.carouselWrapperWidth = this.carouselWrapper.clientWidth;\n };\n\n tearDownCarousel = () => {\n this.swiper.destroy();\n this.swiper = null;\n };\n\n updateCarouselPaneProps = () => {\n const { framelessPanes, paneCount, paneArray } = this;\n\n paneArray.forEach((pane, domIndex) => {\n const swiperIndex = pane.getAttribute('data-swiper-slide-index');\n const index = swiperIndex !== null ? parseInt(swiperIndex, 10) : domIndex;\n pane.index = index;\n pane.siblingCount = paneCount;\n pane.isActivePane = index === this.realIndex;\n pane.slotFrameless = framelessPanes || undefined;\n });\n this.currentPaneCount = paneCount;\n };\n\n // #endregion\n // #region Render Methods\n\n renderAutoPlayBtn = () => {\n const { autoPlayInProgress } = this;\n return (\n <button\n type=\"button\"\n class=\"q2-carousel-autoplay-control\"\n aria-label={loc(\n autoPlayInProgress\n ? 'tecton.element.carousel.pausePlayLabel'\n : 'tecton.element.carousel.resumePlayLabel'\n )}\n onClick={() => this.handleAutoPlayPause(autoPlayInProgress ? 'pause' : 'play')}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n class=\"autoplay-icon\"\n aria-hidden=\"true\"\n >\n {autoPlayInProgress ? (\n <path d=\"M7.667 3.667h-2c-.737 0-1.334.597-1.334 1.333v14c0 .736.597 1.333 1.334 1.333h2C8.403 20.333 9 19.736 9 19V5c0-.736-.597-1.333-1.333-1.333Zm10.666 0h-2C15.597 3.667 15 4.264 15 5v14c0 .736.597 1.333 1.333 1.333h2c.737 0 1.334-.597 1.334-1.333V5c0-.736-.597-1.333-1.334-1.333Z\" />\n ) : (\n <path d=\"m6.868 3.837 12.656 7.008a1.316 1.316 0 0 1 0 2.31L6.868 20.163c-.892.494-1.993-.144-1.993-1.155V4.992c0-1.01 1.1-1.65 1.993-1.155Z\" />\n )}\n </svg>\n </button>\n );\n };\n\n renderInsufficientPanesDisplay = () => {\n let insufficientPanesContainerClasses = [\n 'insufficient-pane-feedback',\n this.fullWidthPanes ? 'full-width-display' : 'content-peek-display',\n ];\n if (this.compactMode) insufficientPanesContainerClasses = [...insufficientPanesContainerClasses, 'compact'];\n\n return (\n <div class={insufficientPanesContainerClasses.join(' ')}>\n <div class=\"insufficient-panes-icon-wrapper\">\n <q2-icon type=\"warning\" />\n </div>\n <p class=\"insufficient-panes-header\">\n <strong>{loc('tecton.element.carousel.insufficientPanesMessageHeader')}</strong>\n </p>\n <p class=\"insufficient-panes-body\">{loc('tecton.element.carousel.insufficientPanesMessageBody')}</p>\n </div>\n );\n };\n\n renderNextNavBtn = () => {\n return (\n <div class=\"next-btn\">\n <button\n type=\"button\"\n class=\"q2-carousel-navigation-button q2-carousel-navigation-button-next\"\n aria-label={loc('tecton.element.carousel.nextItemLabel')}\n onClick={() => this.swiper?.slideNext()}\n >\n <q2-icon type=\"arrow-right\" />\n </button>\n </div>\n );\n };\n\n renderPaginationArea = () => {\n const { useDynamicPaginationDots, realIndex, paneCount } = this;\n const paginationContainerClasses = ['q2-carousel-pagination', 'autoplay'];\n if (useDynamicPaginationDots) paginationContainerClasses.push('dynamic');\n if (this.autoPlayInProgress) paginationContainerClasses.push('autoplay-on');\n\n return (\n <div\n class={paginationContainerClasses.join(' ')}\n role=\"tablist\"\n aria-label={loc('tecton.element.carousel.tabWrapperLabel')}\n >\n {Array.from({ length: paneCount }, (_, i) => i).map(index => {\n const isActive = index === realIndex;\n let btnClasses = ['q2-carousel-page-indicator', `q2-carousel-page-indicator-${index}`];\n if (isActive) btnClasses = [...btnClasses, 'active-page'];\n if (useDynamicPaginationDots) btnClasses = [...btnClasses, 'dynamic'];\n\n const withinOneOfActive = index === realIndex + 1 || index === realIndex - 1;\n if (withinOneOfActive) btnClasses = [...btnClasses, 'active-adjacent'];\n\n const withinTwoOfActive = index === realIndex + 2 || index === realIndex - 2;\n if (withinTwoOfActive) btnClasses = [...btnClasses, 'active-adjacent-adjacent'];\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n tabIndex={isActive ? undefined : -1}\n aria-selected={`${isActive}`}\n class={btnClasses.join(' ')}\n onClick={() => this.swiper?.slideToLoop(index)}\n onKeyDown={this.keydownHandler}\n aria-label={loc('tecton.element.carousel.itemDescription', [\n (index + 1).toString(),\n paneCount.toString(),\n ])}\n ></button>\n );\n })}\n </div>\n );\n };\n\n renderPrevNavBtn = () => {\n return (\n <div class=\"prev-btn\">\n <button\n type=\"button\"\n class=\"q2-carousel-navigation-button q2-carousel-navigation-button-prev\"\n aria-label={loc('tecton.element.carousel.previousItemLabel')}\n onClick={() => this.swiper?.slidePrev()}\n >\n <q2-icon type=\"arrow-left\" />\n </button>\n </div>\n );\n };\n\n render() {\n const {\n paneCount,\n fullWidthPanes,\n framelessPanes,\n compactMode,\n showNavigationArrows,\n arrowPosition = 'bottom',\n insufficientPanes,\n autoPlay,\n hidePagination,\n ariaLiveValue,\n label,\n } = this;\n let carouselContainerClasses = ['q2-carousel-swiper-container', 'swiper'];\n if (fullWidthPanes) carouselContainerClasses = [...carouselContainerClasses, 'full-width-display'];\n if (framelessPanes) carouselContainerClasses = [...carouselContainerClasses, 'frameless-display'];\n if (!fullWidthPanes && !framelessPanes)\n carouselContainerClasses = [...carouselContainerClasses, 'content-peek-display'];\n if (compactMode) carouselContainerClasses = [...carouselContainerClasses, 'compact'];\n\n const paginationWrapperClasses = ['q2-carousel-pagination-navigation-wrapper'];\n if (showNavigationArrows && arrowPosition === 'bottom') paginationWrapperClasses.push('evenly-space');\n if (showNavigationArrows && arrowPosition === 'hug') paginationWrapperClasses.push('center-space');\n\n return (\n <Host\n id={`q2-carousel-${this.guid}`}\n class=\"q2-carousel-instance\"\n >\n {insufficientPanes ? (\n this.renderInsufficientPanesDisplay()\n ) : (\n <Fragment>\n {paneCount > 1 && (\n <div class={paginationWrapperClasses.join(' ')}>\n {showNavigationArrows &&\n ['bottom', 'hug'].includes(arrowPosition) &&\n this.renderPrevNavBtn()}\n\n <div class=\"q2-carousel-control-center-tray\">\n {!hidePagination && this.renderPaginationArea()}\n {autoPlay && this.renderAutoPlayBtn()}\n </div>\n\n {showNavigationArrows &&\n ['bottom', 'hug'].includes(arrowPosition) &&\n this.renderNextNavBtn()}\n </div>\n )}\n\n <section\n class={carouselContainerClasses.join(' ')}\n ref={el => (this.carouselWrapper = el)}\n aria-roledescription=\"carousel\"\n aria-label={loc(label)}\n >\n <div\n class=\"q2-carousel-swiper-wrapper swiper-wrapper\"\n ref={el => (this.carouselPaneWrapperElement = el)}\n aria-live={ariaLiveValue}\n onKeyDown={this.keydownHandler}\n >\n <slot></slot>\n </div>\n {showNavigationArrows && arrowPosition === 'float' && (\n <div class=\"q2-carousel-floating-arrow-wrapper\">\n {this.renderPrevNavBtn()}\n {this.renderNextNavBtn()}\n </div>\n )}\n </section>\n </Fragment>\n )}\n </Host>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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","ignoreList":[]}
|