@nanoporetech-digital/components 5.10.0 → 5.11.0
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/CHANGELOG.md +37 -0
- package/dist/cjs/{algolia-data-6841724e.js → algolia-data-dba27b97.js} +2 -2
- package/dist/cjs/{algolia-data-6841724e.js.map → algolia-data-dba27b97.js.map} +1 -1
- package/dist/cjs/{algoliasearch-lite.esm.browser-992a2eff.js → algoliasearch-lite.esm.browser-b74ca774.js} +30 -5
- package/dist/cjs/algoliasearch-lite.esm.browser-b74ca774.js.map +1 -0
- package/dist/cjs/{component-store-6d7b8855.js → component-store-149aeffe.js} +2 -2
- package/dist/cjs/{component-store-6d7b8855.js.map → component-store-149aeffe.js.map} +1 -1
- package/dist/cjs/fade-dcabf3c1.js +211 -0
- package/dist/cjs/fade-dcabf3c1.js.map +1 -0
- package/dist/cjs/{form-control-8db579a2.js → form-control-f100407e.js} +2 -2
- package/dist/cjs/{form-control-8db579a2.js.map → form-control-f100407e.js.map} +1 -1
- package/dist/cjs/fullscreen-d24940a1.js +133 -0
- package/dist/cjs/fullscreen-d24940a1.js.map +1 -0
- package/dist/cjs/{global-3a6a7873.js → global-a5710651.js} +7 -7
- package/dist/cjs/{global-3a6a7873.js.map → global-a5710651.js.map} +1 -1
- package/dist/cjs/{index-1d3ebe1a.js → index-14451c95.js} +8 -6
- package/dist/cjs/index-14451c95.js.map +1 -0
- package/dist/cjs/{index-0f470227.js → index-f6f89d47.js} +2 -2
- package/dist/cjs/{index-0f470227.js.map → index-f6f89d47.js.map} +1 -1
- package/dist/cjs/lazyload-f6be7590.js +95 -0
- package/dist/cjs/lazyload-f6be7590.js.map +1 -0
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/nano-accordion.cjs.entry.js +1 -1
- package/dist/cjs/nano-alert.cjs.entry.js +3 -3
- package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
- package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-pagination.cjs.entry.js +2 -7
- package/dist/cjs/nano-algolia-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-results.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia-results.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia.cjs.entry.js +982 -26
- package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-aspect-ratio.cjs.entry.js +1 -1
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +10 -4
- package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-checkbox.cjs.entry.js +4 -2
- package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +4 -4
- package/dist/cjs/nano-components.cjs.js.map +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +4 -4
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-input.cjs.entry.js +1 -1
- package/dist/cjs/nano-date-picker.cjs.entry.js +2 -2
- package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-demo.cjs.entry.js +1 -1
- package/dist/cjs/nano-details.cjs.entry.js +2 -2
- package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +5 -5
- package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-drawer.cjs.entry.js +5 -5
- package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +7 -5
- package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-file-upload.cjs.entry.js +2 -2
- package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +4 -4
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +122 -153
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +3 -3
- package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-grid-item.cjs.entry.js +1 -1
- package/dist/cjs/nano-grid_2.cjs.entry.js +2 -2
- package/dist/cjs/nano-grid_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-hero.cjs.entry.js +2 -2
- package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon-button_2.cjs.entry.js +24 -4
- package/dist/cjs/nano-icon-button_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon.cjs.entry.js +4 -4
- package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +3 -3
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-menu-drawer.cjs.entry.js +2 -2
- package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-overflow-nav.cjs.entry.js +2 -2
- package/dist/cjs/nano-overflow-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/nano-progress-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-range.cjs.entry.js +2 -2
- package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-rating.cjs.entry.js +2 -2
- package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-slide.cjs.entry.js +1 -1
- package/dist/cjs/nano-slides-2f3dcc02.js +2975 -0
- package/dist/cjs/nano-slides-2f3dcc02.js.map +1 -0
- package/dist/cjs/nano-slides.cjs.entry.js +3 -4292
- package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sortable.cjs.entry.js +1 -1
- package/dist/cjs/nano-spinner.cjs.entry.js +2 -2
- package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +3 -2
- package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +4 -4
- package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js +2 -2
- package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-72d5dc63.js → nano-table-26845696.js} +5 -5
- package/dist/cjs/{nano-table-72d5dc63.js.map → nano-table-26845696.js.map} +1 -1
- package/dist/cjs/nano-table.cjs.entry.js +3 -3
- package/dist/cjs/page-dots-ae2cefb4.js +140 -0
- package/dist/cjs/page-dots-ae2cefb4.js.map +1 -0
- package/dist/cjs/{scroll-fc1b8387.js → scroll-e8c21f80.js} +8 -4
- package/dist/cjs/scroll-e8c21f80.js.map +1 -0
- package/dist/cjs/{table.worker-3df34efe.js → table.worker-a5996745.js} +4 -4
- package/dist/cjs/table.worker-a5996745.js.map +1 -0
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/alert/alert.css +1 -2
- package/dist/collection/components/algolia/algolia-data.js.map +1 -1
- package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
- package/dist/collection/components/algolia/algolia-pagination.js +0 -5
- package/dist/collection/components/algolia/algolia-pagination.js.map +1 -1
- package/dist/collection/components/algolia/algolia-results.js.map +1 -1
- package/dist/collection/components/algolia/algolia.js +4 -27
- package/dist/collection/components/algolia/algolia.js.map +1 -1
- package/dist/collection/components/algolia/lib/squirrelly/browser.js +10 -0
- package/dist/collection/components/algolia/lib/squirrelly/browser.js.map +1 -0
- package/dist/collection/components/algolia/lib/squirrelly/compile-string.js +151 -0
- package/dist/collection/components/algolia/lib/squirrelly/compile-string.js.map +1 -0
- package/dist/collection/components/algolia/lib/squirrelly/compile.js +44 -0
- package/dist/collection/components/algolia/lib/squirrelly/compile.js.map +1 -0
- package/dist/collection/components/algolia/lib/squirrelly/config.js +68 -0
- package/dist/collection/components/algolia/lib/squirrelly/config.js.map +1 -0
- package/dist/collection/components/algolia/lib/squirrelly/container-utils.js +57 -0
- package/dist/collection/components/algolia/lib/squirrelly/container-utils.js.map +1 -0
- package/dist/collection/components/algolia/lib/squirrelly/containers.js +128 -0
- package/dist/collection/components/algolia/lib/squirrelly/containers.js.map +1 -0
- package/dist/collection/components/algolia/lib/squirrelly/err.js +39 -0
- package/dist/collection/components/algolia/lib/squirrelly/err.js.map +1 -0
- package/dist/collection/components/algolia/lib/squirrelly/parse.js +327 -0
- package/dist/collection/components/algolia/lib/squirrelly/parse.js.map +1 -0
- package/dist/collection/components/algolia/lib/squirrelly/render.js +62 -0
- package/dist/collection/components/algolia/lib/squirrelly/render.js.map +1 -0
- package/dist/collection/components/algolia/lib/squirrelly/storage.js +32 -0
- package/dist/collection/components/algolia/lib/squirrelly/storage.js.map +1 -0
- package/dist/collection/components/algolia/lib/squirrelly/utils.js +102 -0
- package/dist/collection/components/algolia/lib/squirrelly/utils.js.map +1 -0
- package/dist/collection/{utils → components/algolia/lib}/template.js +1 -2
- package/dist/collection/components/algolia/lib/template.js.map +1 -0
- package/dist/collection/components/checkbox/checkbox-group.css +17 -15
- package/dist/collection/components/checkbox/checkbox-group.js +29 -2
- package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.css +20 -22
- package/dist/collection/components/checkbox/checkbox.js +2 -0
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/date-picker/date-picker.css +5 -10
- package/dist/collection/components/details/details.css +4 -4
- package/dist/collection/components/dialog/dialog.css +3 -6
- package/dist/collection/components/dialog/dialog.js +1 -1
- package/dist/collection/components/dialog/dialog.js.map +1 -1
- package/dist/collection/components/drawer/drawer.css +18 -24
- package/dist/collection/components/drawer/drawer.js +1 -1
- package/dist/collection/components/drawer/drawer.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.js +1 -1
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/field-validator/field-validator.js +5 -3
- package/dist/collection/components/field-validator/field-validator.js.map +1 -1
- package/dist/collection/components/file-upload/file-upload.css +16 -30
- package/dist/collection/components/global-nav/global-nav.js +118 -157
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-nav/style/global-nav.css +97 -138
- package/dist/collection/components/global-search-results/global-search-results.css +85 -127
- package/dist/collection/components/global-search-results/global-search-results.js +1 -1
- package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
- package/dist/collection/components/hero/hero.css +13 -26
- package/dist/collection/components/icon/icon.css +6 -6
- package/dist/collection/components/icon/icon.js +2 -2
- package/dist/collection/components/icon/icon.js.map +1 -1
- package/dist/collection/components/img/img.css +7 -17
- package/dist/collection/components/input/input.css +15 -36
- package/dist/collection/components/menu/menu.css +1 -1
- package/dist/collection/components/menu/menu.js +1 -1
- package/dist/collection/components/menu/menu.js.map +1 -1
- package/dist/collection/components/menu-drawer/menu-drawer.css +5 -14
- package/dist/collection/components/nav-item/nav-item.css +25 -46
- package/dist/collection/components/option/option.css +3 -5
- package/dist/collection/components/overflow-nav/overflow-nav.css +16 -27
- package/dist/collection/components/progress-bar/progress-bar.css +2 -2
- package/dist/collection/components/range/range.css +17 -19
- package/dist/collection/components/rating/rating.css +2 -8
- package/dist/collection/components/select/select.css +30 -53
- package/dist/collection/components/slides/lib/js/animate.js +29 -54
- package/dist/collection/components/slides/lib/js/animate.js.map +1 -0
- package/dist/collection/components/slides/lib/js/cell.js +12 -24
- package/dist/collection/components/slides/lib/js/cell.js.map +1 -0
- package/dist/collection/components/slides/lib/js/drag.js +65 -116
- package/dist/collection/components/slides/lib/js/drag.js.map +1 -0
- package/dist/collection/components/slides/lib/js/fade.js +52 -79
- package/dist/collection/components/slides/lib/js/fade.js.map +1 -0
- package/dist/collection/components/slides/lib/js/flickity.js +118 -206
- package/dist/collection/components/slides/lib/js/flickity.js.map +1 -0
- package/dist/collection/components/slides/lib/js/fullscreen.js +21 -40
- package/dist/collection/components/slides/lib/js/fullscreen.js.map +1 -0
- package/dist/collection/components/slides/lib/js/index.js +4 -6
- package/dist/collection/components/slides/lib/js/index.js.map +1 -0
- package/dist/collection/components/slides/lib/js/lazyload.js +21 -36
- package/dist/collection/components/slides/lib/js/lazyload.js.map +1 -0
- package/dist/collection/components/slides/lib/js/page-dots.js +21 -45
- package/dist/collection/components/slides/lib/js/page-dots.js.map +1 -0
- package/dist/collection/components/slides/lib/js/player.js +12 -40
- package/dist/collection/components/slides/lib/js/player.js.map +1 -0
- package/dist/collection/components/slides/lib/js/prev-next-button.js +24 -52
- package/dist/collection/components/slides/lib/js/prev-next-button.js.map +1 -0
- package/dist/collection/components/slides/lib/js/slide.js +10 -15
- package/dist/collection/components/slides/lib/js/slide.js.map +1 -0
- package/dist/collection/components/slides/lib/js/utils/event-emitter.js +75 -0
- package/dist/collection/components/slides/lib/js/utils/event-emitter.js.map +1 -0
- package/dist/collection/components/slides/lib/js/utils/gestures.js +436 -0
- package/dist/collection/components/slides/lib/js/utils/gestures.js.map +1 -0
- package/dist/collection/components/slides/lib/js/utils/get-size.js +160 -0
- package/dist/collection/components/slides/lib/js/utils/get-size.js.map +1 -0
- package/dist/collection/components/slides/lib/js/utils/utils.js +166 -0
- package/dist/collection/components/slides/lib/js/utils/utils.js.map +1 -0
- package/dist/collection/components/slides/slides.css +18 -19
- package/dist/collection/components/slides/slides.js +31 -5
- package/dist/collection/components/slides/slides.js.map +1 -1
- package/dist/collection/components/spinner/spinner.css +1 -2
- package/dist/collection/components/sticker/sticker.js +2 -1
- package/dist/collection/components/sticker/sticker.js.map +1 -1
- package/dist/collection/components/table/table.css +29 -48
- package/dist/collection/components/tabs/tab-group.css +10 -14
- package/dist/collection/components/tabs/tab.css +8 -18
- package/dist/collection/components/tooltip/tooltip.css +34 -31
- package/dist/collection/components/tooltip/tooltip.js +23 -3
- package/dist/collection/components/tooltip/tooltip.js.map +1 -1
- package/dist/collection/global/script/global.js +6 -6
- package/dist/collection/global/script/global.js.map +1 -1
- package/dist/collection/utils/scroll.js +7 -3
- package/dist/collection/utils/scroll.js.map +1 -1
- package/dist/components/algolia-data.js.map +1 -1
- package/dist/components/algolia.js +978 -23
- package/dist/components/algolia.js.map +1 -1
- package/dist/components/algoliasearch-lite.esm.browser.js +29 -4
- package/dist/components/algoliasearch-lite.esm.browser.js.map +1 -1
- package/dist/components/date-picker.js +1 -1
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/fade.js +208 -0
- package/dist/components/fade.js.map +1 -0
- package/dist/components/fullscreen.js +130 -0
- package/dist/components/fullscreen.js.map +1 -0
- package/dist/components/icon.js +3 -3
- package/dist/components/icon.js.map +1 -1
- package/dist/components/img.js +1 -1
- package/dist/components/img.js.map +1 -1
- package/dist/components/index.js +6 -6
- package/dist/components/index.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/lazyload.js +92 -0
- package/dist/components/lazyload.js.map +1 -0
- package/dist/components/menu.js +2 -2
- package/dist/components/menu.js.map +1 -1
- package/dist/components/nano-alert.js +1 -1
- package/dist/components/nano-alert.js.map +1 -1
- package/dist/components/nano-algolia-filter.js.map +1 -1
- package/dist/components/nano-algolia-pagination.js +0 -5
- package/dist/components/nano-algolia-pagination.js.map +1 -1
- package/dist/components/nano-algolia-results.js.map +1 -1
- package/dist/components/nano-checkbox-group.js +10 -3
- package/dist/components/nano-checkbox-group.js.map +1 -1
- package/dist/components/nano-checkbox.js +3 -1
- package/dist/components/nano-checkbox.js.map +1 -1
- package/dist/components/nano-details.js +1 -1
- package/dist/components/nano-details.js.map +1 -1
- package/dist/components/nano-dialog.js +2 -2
- package/dist/components/nano-dialog.js.map +1 -1
- package/dist/components/nano-drawer.js +2 -2
- package/dist/components/nano-drawer.js.map +1 -1
- package/dist/components/nano-field-validator.js +5 -3
- package/dist/components/nano-field-validator.js.map +1 -1
- package/dist/components/nano-file-upload.js +1 -1
- package/dist/components/nano-file-upload.js.map +1 -1
- package/dist/components/nano-global-nav.js +119 -152
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/nano-global-search-results.js +2 -2
- package/dist/components/nano-global-search-results.js.map +1 -1
- package/dist/components/nano-hero.js +1 -1
- package/dist/components/nano-hero.js.map +1 -1
- package/dist/components/nano-menu-drawer.js +1 -1
- package/dist/components/nano-menu-drawer.js.map +1 -1
- package/dist/components/nano-overflow-nav.js +1 -1
- package/dist/components/nano-overflow-nav.js.map +1 -1
- package/dist/components/nano-range.js +1 -1
- package/dist/components/nano-range.js.map +1 -1
- package/dist/components/nano-rating.js +1 -1
- package/dist/components/nano-rating.js.map +1 -1
- package/dist/components/nano-slides.js +760 -2090
- package/dist/components/nano-slides.js.map +1 -1
- package/dist/components/nano-tab-group.js +1 -1
- package/dist/components/nano-tab-group.js.map +1 -1
- package/dist/components/nano-tab.js +1 -1
- package/dist/components/nano-tab.js.map +1 -1
- package/dist/components/nav-item.js +1 -1
- package/dist/components/nav-item.js.map +1 -1
- package/dist/components/option.js +1 -1
- package/dist/components/option.js.map +1 -1
- package/dist/components/page-dots.js +137 -0
- package/dist/components/page-dots.js.map +1 -0
- package/dist/components/progress-bar.js +1 -1
- package/dist/components/progress-bar.js.map +1 -1
- package/dist/components/scroll.js +7 -3
- package/dist/components/scroll.js.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/spinner.js +1 -1
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/sticker.js +2 -1
- package/dist/components/sticker.js.map +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/table.js.map +1 -1
- package/dist/components/tooltip.js +24 -4
- package/dist/components/tooltip.js.map +1 -1
- package/dist/esm/{algolia-data-ebf2a439.js → algolia-data-1b42827c.js} +2 -2
- package/dist/esm/{algolia-data-ebf2a439.js.map → algolia-data-1b42827c.js.map} +1 -1
- package/dist/esm/{algoliasearch-lite.esm.browser-04891fdc.js → algoliasearch-lite.esm.browser-d71a28dc.js} +30 -5
- package/dist/esm/algoliasearch-lite.esm.browser-d71a28dc.js.map +1 -0
- package/dist/esm/{component-store-54df2005.js → component-store-f7eb0a56.js} +2 -2
- package/dist/esm/{component-store-54df2005.js.map → component-store-f7eb0a56.js.map} +1 -1
- package/dist/esm/fade-1aa7a6db.js +209 -0
- package/dist/esm/fade-1aa7a6db.js.map +1 -0
- package/dist/esm/{form-control-eb06e009.js → form-control-881fa3af.js} +2 -2
- package/dist/esm/{form-control-eb06e009.js.map → form-control-881fa3af.js.map} +1 -1
- package/dist/esm/fullscreen-86fa276a.js +131 -0
- package/dist/esm/fullscreen-86fa276a.js.map +1 -0
- package/dist/esm/{global-f6e05656.js → global-be484e8c.js} +7 -7
- package/dist/esm/{global-f6e05656.js.map → global-be484e8c.js.map} +1 -1
- package/dist/esm/{index-e8891229.js → index-3003356f.js} +2 -2
- package/dist/esm/{index-e8891229.js.map → index-3003356f.js.map} +1 -1
- package/dist/esm/{index-06666022.js → index-9695db0a.js} +8 -6
- package/dist/esm/index-9695db0a.js.map +1 -0
- package/dist/esm/lazyload-994232a6.js +93 -0
- package/dist/esm/lazyload-994232a6.js.map +1 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/nano-accordion.entry.js +1 -1
- package/dist/esm/nano-alert.entry.js +3 -3
- package/dist/esm/nano-alert.entry.js.map +1 -1
- package/dist/esm/nano-algolia-filter.entry.js +3 -3
- package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
- package/dist/esm/nano-algolia-pagination.entry.js +2 -7
- package/dist/esm/nano-algolia-pagination.entry.js.map +1 -1
- package/dist/esm/nano-algolia-results.entry.js +2 -2
- package/dist/esm/nano-algolia-results.entry.js.map +1 -1
- package/dist/esm/nano-algolia.entry.js +982 -26
- package/dist/esm/nano-algolia.entry.js.map +1 -1
- package/dist/esm/nano-aspect-ratio.entry.js +1 -1
- package/dist/esm/nano-checkbox-group.entry.js +10 -4
- package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
- package/dist/esm/nano-checkbox.entry.js +4 -2
- package/dist/esm/nano-checkbox.entry.js.map +1 -1
- package/dist/esm/nano-components.js +5 -5
- package/dist/esm/nano-components.js.map +1 -1
- package/dist/esm/nano-datalist_3.entry.js +4 -4
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-date-input.entry.js +1 -1
- package/dist/esm/nano-date-picker.entry.js +2 -2
- package/dist/esm/nano-date-picker.entry.js.map +1 -1
- package/dist/esm/nano-demo.entry.js +1 -1
- package/dist/esm/nano-details.entry.js +2 -2
- package/dist/esm/nano-details.entry.js.map +1 -1
- package/dist/esm/nano-dialog.entry.js +5 -5
- package/dist/esm/nano-dialog.entry.js.map +1 -1
- package/dist/esm/nano-drawer.entry.js +5 -5
- package/dist/esm/nano-drawer.entry.js.map +1 -1
- package/dist/esm/nano-dropdown.entry.js +1 -1
- package/dist/esm/nano-dropdown.entry.js.map +1 -1
- package/dist/esm/nano-field-validator.entry.js +7 -5
- package/dist/esm/nano-field-validator.entry.js.map +1 -1
- package/dist/esm/nano-file-upload.entry.js +2 -2
- package/dist/esm/nano-file-upload.entry.js.map +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +4 -4
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +122 -153
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +3 -3
- package/dist/esm/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm/nano-grid-item.entry.js +1 -1
- package/dist/esm/nano-grid_2.entry.js +2 -2
- package/dist/esm/nano-grid_2.entry.js.map +1 -1
- package/dist/esm/nano-hero.entry.js +2 -2
- package/dist/esm/nano-hero.entry.js.map +1 -1
- package/dist/esm/nano-icon-button_2.entry.js +24 -4
- package/dist/esm/nano-icon-button_2.entry.js.map +1 -1
- package/dist/esm/nano-icon.entry.js +4 -4
- package/dist/esm/nano-icon.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +3 -3
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-menu-drawer.entry.js +2 -2
- package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
- package/dist/esm/nano-overflow-nav.entry.js +2 -2
- package/dist/esm/nano-overflow-nav.entry.js.map +1 -1
- package/dist/esm/nano-progress-bar.entry.js +2 -2
- package/dist/esm/nano-progress-bar.entry.js.map +1 -1
- package/dist/esm/nano-range.entry.js +2 -2
- package/dist/esm/nano-range.entry.js.map +1 -1
- package/dist/esm/nano-rating.entry.js +2 -2
- package/dist/esm/nano-rating.entry.js.map +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +1 -1
- package/dist/esm/nano-slide.entry.js +1 -1
- package/dist/esm/nano-slides-9908c44d.js +2970 -0
- package/dist/esm/nano-slides-9908c44d.js.map +1 -0
- package/dist/esm/nano-slides.entry.js +2 -4295
- package/dist/esm/nano-slides.entry.js.map +1 -1
- package/dist/esm/nano-sortable.entry.js +1 -1
- package/dist/esm/nano-spinner.entry.js +2 -2
- package/dist/esm/nano-spinner.entry.js.map +1 -1
- package/dist/esm/nano-split-pane.entry.js +1 -1
- package/dist/esm/nano-sticker.entry.js +3 -2
- package/dist/esm/nano-sticker.entry.js.map +1 -1
- package/dist/esm/nano-tab-content.entry.js +1 -1
- package/dist/esm/nano-tab-group.entry.js +4 -4
- package/dist/esm/nano-tab-group.entry.js.map +1 -1
- package/dist/esm/nano-tab.entry.js +2 -2
- package/dist/esm/nano-tab.entry.js.map +1 -1
- package/dist/esm/{nano-table-5af42ba4.js → nano-table-55d753cb.js} +5 -5
- package/dist/esm/{nano-table-5af42ba4.js.map → nano-table-55d753cb.js.map} +1 -1
- package/dist/esm/nano-table.entry.js +3 -3
- package/dist/esm/page-dots-467ace2e.js +138 -0
- package/dist/esm/page-dots-467ace2e.js.map +1 -0
- package/dist/esm/{scroll-ec7ac257.js → scroll-ac332213.js} +8 -4
- package/dist/esm/scroll-ac332213.js.map +1 -0
- package/dist/esm/{table.worker-3cae908c.js → table.worker-34706ecc.js} +4 -4
- package/dist/esm/table.worker-34706ecc.js.map +1 -0
- package/dist/nano-components/{p-74a7fc4f.js → active-element-75b7c8a0.js} +1 -1
- package/dist/nano-components/algolia-data-1b42827c.js +5 -0
- package/dist/nano-components/{p-a26bdb65.js.map → algolia-data-1b42827c.js.map} +1 -1
- package/dist/nano-components/algoliasearch-lite.esm.browser-d71a28dc.js +5 -0
- package/dist/nano-components/algoliasearch-lite.esm.browser-d71a28dc.js.map +1 -0
- package/dist/nano-components/component-store-f7eb0a56.js +5 -0
- package/dist/nano-components/{p-dd5687db.js.map → component-store-f7eb0a56.js.map} +1 -1
- package/dist/nano-components/{p-cecb9af1.js → date-utils-6b7a6e1f.js} +1 -1
- package/dist/nano-components/{p-cdfc507e.js → dom-8599fac1.js} +1 -1
- package/dist/nano-components/{p-842cf127.js → drag-1723a4cc.js} +1 -1
- package/dist/nano-components/{p-9bfdee71.js → events-6a805b42.js} +1 -1
- package/dist/nano-components/fade-1aa7a6db.js +5 -0
- package/dist/nano-components/fade-1aa7a6db.js.map +1 -0
- package/dist/nano-components/{p-f8f89998.js → focus-visible-8b2c14da.js} +1 -1
- package/dist/nano-components/form-control-881fa3af.js +5 -0
- package/dist/nano-components/{p-dc805ecc.js.map → form-control-881fa3af.js.map} +1 -1
- package/dist/nano-components/fullscreen-86fa276a.js +5 -0
- package/dist/nano-components/fullscreen-86fa276a.js.map +1 -0
- package/dist/nano-components/{p-d4f6ec9f.js → global-be484e8c.js} +2 -2
- package/dist/nano-components/{p-d4f6ec9f.js.map → global-be484e8c.js.map} +1 -1
- package/dist/nano-components/index-3003356f.js +5 -0
- package/dist/nano-components/{p-70747f20.js.map → index-3003356f.js.map} +1 -1
- package/dist/nano-components/{p-d6a04b3a.js → index-9695db0a.js} +2 -2
- package/dist/nano-components/{p-d6a04b3a.js.map → index-9695db0a.js.map} +1 -1
- package/dist/nano-components/{p-bb07c3d0.js → index-f626f476.js} +1 -1
- package/dist/nano-components/index.esm.js +1 -1
- package/dist/nano-components/index.esm.js.map +1 -1
- package/dist/nano-components/lazyload-994232a6.js +5 -0
- package/dist/nano-components/lazyload-994232a6.js.map +1 -0
- package/dist/nano-components/{p-2155fc2c.js → local-my-account-6662da72.js} +1 -1
- package/dist/nano-components/{p-ee045579.js → math-c02ddfda.js} +1 -1
- package/dist/nano-components/modal-bd9638c0.js +5 -0
- package/dist/nano-components/{p-2234694a.js.map → modal-bd9638c0.js.map} +1 -1
- package/dist/nano-components/nano-accordion.entry.js +5 -0
- package/dist/nano-components/{p-9f60ff14.entry.js.map → nano-accordion.entry.js.map} +1 -1
- package/dist/nano-components/nano-alert.entry.js +5 -0
- package/dist/nano-components/{p-191352c4.entry.js.map → nano-alert.entry.js.map} +1 -1
- package/dist/nano-components/nano-algolia-filter.entry.js +5 -0
- package/dist/nano-components/nano-algolia-filter.entry.js.map +1 -0
- package/dist/nano-components/nano-algolia-pagination.entry.js +5 -0
- package/dist/nano-components/nano-algolia-pagination.entry.js.map +1 -0
- package/dist/nano-components/nano-algolia-results.entry.js +5 -0
- package/dist/nano-components/nano-algolia-results.entry.js.map +1 -0
- package/dist/nano-components/nano-algolia.entry.js +5 -0
- package/dist/nano-components/nano-algolia.entry.js.map +1 -0
- package/dist/nano-components/nano-aspect-ratio.entry.js +5 -0
- package/dist/nano-components/{p-87329424.entry.js.map → nano-aspect-ratio.entry.js.map} +1 -1
- package/dist/nano-components/nano-checkbox-group.entry.js +5 -0
- package/dist/nano-components/nano-checkbox-group.entry.js.map +1 -0
- package/dist/nano-components/nano-checkbox.entry.js +5 -0
- package/dist/nano-components/nano-checkbox.entry.js.map +1 -0
- package/dist/nano-components/nano-components.css +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/nano-datalist_3.entry.js +5 -0
- package/dist/nano-components/nano-datalist_3.entry.js.map +1 -0
- package/dist/nano-components/nano-date-input.entry.js +5 -0
- package/dist/nano-components/{p-d4e44f93.entry.js.map → nano-date-input.entry.js.map} +1 -1
- package/dist/nano-components/nano-date-picker.entry.js +5 -0
- package/dist/nano-components/{p-efd3e121.entry.js.map → nano-date-picker.entry.js.map} +1 -1
- package/dist/nano-components/nano-demo.entry.js +5 -0
- package/dist/nano-components/{p-e98835e2.entry.js.map → nano-demo.entry.js.map} +1 -1
- package/dist/nano-components/nano-details.entry.js +5 -0
- package/dist/nano-components/nano-details.entry.js.map +1 -0
- package/dist/nano-components/nano-dialog.entry.js +5 -0
- package/dist/nano-components/{p-79fff4fd.entry.js.map → nano-dialog.entry.js.map} +1 -1
- package/dist/nano-components/nano-drawer.entry.js +5 -0
- package/dist/nano-components/nano-drawer.entry.js.map +1 -0
- package/dist/nano-components/nano-dropdown.entry.js +5 -0
- package/dist/nano-components/nano-dropdown.entry.js.map +1 -0
- package/dist/nano-components/nano-field-validator.entry.js +5 -0
- package/dist/nano-components/nano-field-validator.entry.js.map +1 -0
- package/dist/nano-components/nano-file-upload.entry.js +5 -0
- package/dist/nano-components/nano-file-upload.entry.js.map +1 -0
- package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +5 -0
- package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -0
- package/dist/nano-components/nano-global-nav.entry.js +5 -0
- package/dist/nano-components/nano-global-nav.entry.js.map +1 -0
- package/dist/nano-components/nano-global-search-results.entry.js +5 -0
- package/dist/nano-components/nano-global-search-results.entry.js.map +1 -0
- package/dist/nano-components/nano-grid-item.entry.js +5 -0
- package/dist/nano-components/{p-9c290055.entry.js.map → nano-grid-item.entry.js.map} +1 -1
- package/dist/nano-components/nano-grid_2.entry.js +5 -0
- package/dist/nano-components/{p-7c82af28.entry.js.map → nano-grid_2.entry.js.map} +1 -1
- package/dist/nano-components/nano-hero.entry.js +5 -0
- package/dist/nano-components/{p-328ef9d3.entry.js.map → nano-hero.entry.js.map} +1 -1
- package/dist/nano-components/nano-icon-button_2.entry.js +5 -0
- package/dist/nano-components/nano-icon-button_2.entry.js.map +1 -0
- package/dist/nano-components/nano-icon.entry.js +5 -0
- package/dist/nano-components/nano-icon.entry.js.map +1 -0
- package/dist/nano-components/nano-input.entry.js +5 -0
- package/dist/nano-components/nano-input.entry.js.map +1 -0
- package/dist/nano-components/nano-menu-drawer.entry.js +5 -0
- package/dist/nano-components/nano-menu-drawer.entry.js.map +1 -0
- package/dist/nano-components/nano-overflow-nav.entry.js +5 -0
- package/dist/nano-components/nano-overflow-nav.entry.js.map +1 -0
- package/dist/nano-components/nano-progress-bar.entry.js +5 -0
- package/dist/nano-components/nano-progress-bar.entry.js.map +1 -0
- package/dist/nano-components/nano-range.entry.js +5 -0
- package/dist/nano-components/nano-range.entry.js.map +1 -0
- package/dist/nano-components/nano-rating.entry.js +5 -0
- package/dist/nano-components/nano-rating.entry.js.map +1 -0
- package/dist/nano-components/nano-resize-observe_2.entry.js +5 -0
- package/dist/nano-components/{p-e6a0675e.entry.js.map → nano-resize-observe_2.entry.js.map} +1 -1
- package/dist/nano-components/nano-slide.entry.js +5 -0
- package/dist/nano-components/{p-3d8fb8a1.entry.js.map → nano-slide.entry.js.map} +1 -1
- package/dist/nano-components/nano-slides-9908c44d.js +20 -0
- package/dist/nano-components/nano-slides-9908c44d.js.map +1 -0
- package/dist/nano-components/nano-slides.entry.js +5 -0
- package/dist/nano-components/nano-sortable.entry.js +5 -0
- package/dist/nano-components/{p-3ae362ae.entry.js.map → nano-sortable.entry.js.map} +1 -1
- package/dist/nano-components/nano-spinner.entry.js +5 -0
- package/dist/nano-components/{p-9925e504.entry.js.map → nano-spinner.entry.js.map} +1 -1
- package/dist/nano-components/nano-split-pane.entry.js +5 -0
- package/dist/nano-components/{p-6c4171fa.entry.js.map → nano-split-pane.entry.js.map} +1 -1
- package/dist/nano-components/nano-sticker.entry.js +5 -0
- package/dist/nano-components/nano-sticker.entry.js.map +1 -0
- package/dist/nano-components/nano-tab-content.entry.js +5 -0
- package/dist/nano-components/{p-3f40e370.entry.js.map → nano-tab-content.entry.js.map} +1 -1
- package/dist/nano-components/nano-tab-group.entry.js +5 -0
- package/dist/nano-components/nano-tab-group.entry.js.map +1 -0
- package/dist/nano-components/nano-tab.entry.js +5 -0
- package/dist/nano-components/{p-3cac5f6d.entry.js.map → nano-tab.entry.js.map} +1 -1
- package/dist/nano-components/nano-table-55d753cb.js +5 -0
- package/dist/nano-components/nano-table-55d753cb.js.map +1 -0
- package/dist/nano-components/nano-table.entry.js +5 -0
- package/dist/nano-components/page-dots-467ace2e.js +5 -0
- package/dist/nano-components/page-dots-467ace2e.js.map +1 -0
- package/dist/nano-components/{p-cd1fd454.js → popover-e5e7a641.js} +1 -1
- package/dist/nano-components/scroll-ac332213.js +5 -0
- package/dist/nano-components/scroll-ac332213.js.map +1 -0
- package/dist/nano-components/{p-dc565459.js → slot-8126e238.js} +1 -1
- package/dist/nano-components/{p-f88fa15c.js → tabbable-26a66a22.js} +1 -1
- package/dist/nano-components/table.worker-34706ecc.js +5 -0
- package/dist/nano-components/{p-411bb8f1.js → theme-82feb8cf.js} +1 -1
- package/dist/nano-components/{p-7bff5224.js → throttle-ac4fcefa.js} +1 -1
- package/dist/nano-components/{p-c3e8e3f9.js → transitions-fb09eb32.js} +1 -1
- package/dist/themes/nanopore.cn.css +1 -1
- package/dist/themes/nanopore.cn.css.map +1 -1
- package/dist/themes/nanopore.css +1 -1
- package/dist/themes/nanopore.css.map +1 -1
- package/dist/types/components/algolia/algolia-data.d.ts +1 -1
- package/dist/types/components/algolia/algolia-filter.d.ts +1 -1
- package/dist/types/components/algolia/algolia-pagination.d.ts +1 -1
- package/dist/types/components/algolia/algolia-results.d.ts +1 -1
- package/dist/types/components/algolia/algolia.d.ts +1 -7
- package/dist/types/components/algolia/lib/squirrelly/browser.d.ts +6 -0
- package/dist/types/components/algolia/lib/squirrelly/compile-string.d.ts +5 -0
- package/dist/types/components/algolia/lib/squirrelly/compile.d.ts +3 -0
- package/dist/types/components/algolia/lib/squirrelly/config.d.ts +48 -0
- package/dist/types/components/algolia/lib/squirrelly/container-utils.d.ts +8 -0
- package/dist/types/components/algolia/lib/squirrelly/containers.d.ts +18 -0
- package/dist/types/components/algolia/lib/squirrelly/err.d.ts +6 -0
- package/dist/types/components/algolia/lib/squirrelly/parse.d.ts +23 -0
- package/dist/types/components/algolia/lib/squirrelly/render.d.ts +3 -0
- package/dist/types/components/algolia/lib/squirrelly/storage.d.ts +13 -0
- package/dist/types/components/algolia/lib/squirrelly/utils.d.ts +8 -0
- package/dist/types/components/algolia/lib/template.d.ts +2 -0
- package/dist/types/components/checkbox/checkbox-group.d.ts +5 -0
- package/dist/types/components/global-nav/global-nav.d.ts +15 -20
- package/dist/types/components/slides/lib/js/animate.d.ts +2 -0
- package/dist/types/components/slides/lib/js/cell.d.ts +1 -0
- package/dist/types/components/slides/lib/js/drag.d.ts +1 -0
- package/dist/types/components/slides/lib/js/fade.d.ts +1 -0
- package/dist/types/components/slides/lib/js/flickity.d.ts +23 -0
- package/dist/types/components/slides/lib/js/fullscreen.d.ts +1 -0
- package/dist/types/components/slides/lib/js/index.d.ts +5 -0
- package/dist/types/components/slides/lib/js/lazyload.d.ts +1 -0
- package/dist/types/components/slides/lib/js/page-dots.d.ts +1 -0
- package/dist/types/components/slides/lib/js/player.d.ts +1 -0
- package/dist/types/components/slides/lib/js/prev-next-button.d.ts +1 -0
- package/dist/types/components/slides/lib/js/slide.d.ts +1 -0
- package/dist/types/components/slides/lib/js/utils/event-emitter.d.ts +1 -0
- package/dist/types/components/slides/lib/js/utils/gestures.d.ts +26 -0
- package/dist/types/components/slides/lib/js/utils/get-size.d.ts +6 -0
- package/dist/types/components/slides/lib/js/utils/utils.d.ts +5 -0
- package/dist/types/components/slides/slides-interface.d.ts +17 -7
- package/dist/types/components/slides/slides.d.ts +5 -0
- package/dist/types/components.d.ts +10 -10
- package/dist/types/utils/scroll.d.ts +5 -1
- package/docs-json.json +33 -24
- package/docs-vscode.json +4 -0
- package/hydrate/index.js +4147 -3953
- package/package.json +5 -8
- package/dist/cjs/_commonjsHelpers-29614748.js +0 -30
- package/dist/cjs/_commonjsHelpers-29614748.js.map +0 -1
- package/dist/cjs/algoliasearch-lite.esm.browser-992a2eff.js.map +0 -1
- package/dist/cjs/index-1d3ebe1a.js.map +0 -1
- package/dist/cjs/scroll-fc1b8387.js.map +0 -1
- package/dist/cjs/table.worker-3df34efe.js.map +0 -1
- package/dist/collection/components/slides/lib/js/add-remove-cell.js +0 -128
- package/dist/collection/components/slides/lib/js/images-loaded.js +0 -24
- package/dist/collection/components/slides/slides-interface.js +0 -2
- package/dist/collection/components/slides/slides-interface.js.map +0 -1
- package/dist/collection/utils/template.js.map +0 -1
- package/dist/components/_commonjsHelpers.js +0 -26
- package/dist/components/_commonjsHelpers.js.map +0 -1
- package/dist/esm/_commonjsHelpers-04a0e019.js +0 -26
- package/dist/esm/_commonjsHelpers-04a0e019.js.map +0 -1
- package/dist/esm/algoliasearch-lite.esm.browser-04891fdc.js.map +0 -1
- package/dist/esm/index-06666022.js.map +0 -1
- package/dist/esm/scroll-ec7ac257.js.map +0 -1
- package/dist/esm/table.worker-3cae908c.js.map +0 -1
- package/dist/nano-components/p-0563e812.entry.js +0 -5
- package/dist/nano-components/p-0563e812.entry.js.map +0 -1
- package/dist/nano-components/p-0bc40dd1.entry.js +0 -5
- package/dist/nano-components/p-0bc40dd1.entry.js.map +0 -1
- package/dist/nano-components/p-0e0f07f0.entry.js +0 -5
- package/dist/nano-components/p-0e0f07f0.entry.js.map +0 -1
- package/dist/nano-components/p-0e4da739.entry.js +0 -5
- package/dist/nano-components/p-0e4da739.entry.js.map +0 -1
- package/dist/nano-components/p-16e75af9.entry.js +0 -5
- package/dist/nano-components/p-16e75af9.entry.js.map +0 -1
- package/dist/nano-components/p-17eb456c.entry.js +0 -5
- package/dist/nano-components/p-17eb456c.entry.js.map +0 -1
- package/dist/nano-components/p-191352c4.entry.js +0 -5
- package/dist/nano-components/p-1987f7a9.js +0 -5
- package/dist/nano-components/p-1a55e282.entry.js +0 -5
- package/dist/nano-components/p-1a55e282.entry.js.map +0 -1
- package/dist/nano-components/p-2234694a.js +0 -5
- package/dist/nano-components/p-2a105609.entry.js +0 -5
- package/dist/nano-components/p-2a105609.entry.js.map +0 -1
- package/dist/nano-components/p-2c0218e6.entry.js +0 -5
- package/dist/nano-components/p-2c0218e6.entry.js.map +0 -1
- package/dist/nano-components/p-328ef9d3.entry.js +0 -5
- package/dist/nano-components/p-359b7cd2.entry.js +0 -5
- package/dist/nano-components/p-359b7cd2.entry.js.map +0 -1
- package/dist/nano-components/p-36c3ded8.entry.js +0 -5
- package/dist/nano-components/p-36c3ded8.entry.js.map +0 -1
- package/dist/nano-components/p-3ae362ae.entry.js +0 -5
- package/dist/nano-components/p-3cac5f6d.entry.js +0 -5
- package/dist/nano-components/p-3d8fb8a1.entry.js +0 -5
- package/dist/nano-components/p-3eeaba47.entry.js +0 -5
- package/dist/nano-components/p-3eeaba47.entry.js.map +0 -1
- package/dist/nano-components/p-3f40e370.entry.js +0 -5
- package/dist/nano-components/p-51133e62.entry.js +0 -5
- package/dist/nano-components/p-51133e62.entry.js.map +0 -1
- package/dist/nano-components/p-54c4a2f5.entry.js +0 -5
- package/dist/nano-components/p-54c4a2f5.entry.js.map +0 -1
- package/dist/nano-components/p-5fc3035d.entry.js +0 -5
- package/dist/nano-components/p-5fc3035d.entry.js.map +0 -1
- package/dist/nano-components/p-650aa197.entry.js +0 -5
- package/dist/nano-components/p-650aa197.entry.js.map +0 -1
- package/dist/nano-components/p-67ab5a5f.entry.js +0 -5
- package/dist/nano-components/p-67ab5a5f.entry.js.map +0 -1
- package/dist/nano-components/p-688f1a55.entry.js +0 -5
- package/dist/nano-components/p-688f1a55.entry.js.map +0 -1
- package/dist/nano-components/p-6c4171fa.entry.js +0 -5
- package/dist/nano-components/p-70747f20.js +0 -5
- package/dist/nano-components/p-7670058b.entry.js +0 -5
- package/dist/nano-components/p-7670058b.entry.js.map +0 -1
- package/dist/nano-components/p-79fff4fd.entry.js +0 -5
- package/dist/nano-components/p-7c82af28.entry.js +0 -5
- package/dist/nano-components/p-87329424.entry.js +0 -5
- package/dist/nano-components/p-8fe51abf.js +0 -5
- package/dist/nano-components/p-935968b8.entry.js +0 -23
- package/dist/nano-components/p-935968b8.entry.js.map +0 -1
- package/dist/nano-components/p-9925e504.entry.js +0 -5
- package/dist/nano-components/p-9c290055.entry.js +0 -5
- package/dist/nano-components/p-9f60ff14.entry.js +0 -5
- package/dist/nano-components/p-a225e976.entry.js +0 -5
- package/dist/nano-components/p-a225e976.entry.js.map +0 -1
- package/dist/nano-components/p-a26bdb65.js +0 -5
- package/dist/nano-components/p-abd11243.entry.js +0 -5
- package/dist/nano-components/p-abd11243.entry.js.map +0 -1
- package/dist/nano-components/p-b27b56d3.js +0 -5
- package/dist/nano-components/p-b27b56d3.js.map +0 -1
- package/dist/nano-components/p-c80336b2.entry.js +0 -5
- package/dist/nano-components/p-c80336b2.entry.js.map +0 -1
- package/dist/nano-components/p-cad86fb8.js +0 -5
- package/dist/nano-components/p-cad86fb8.js.map +0 -1
- package/dist/nano-components/p-d4e44f93.entry.js +0 -5
- package/dist/nano-components/p-dc4020f8.js +0 -5
- package/dist/nano-components/p-dc4020f8.js.map +0 -1
- package/dist/nano-components/p-dc6cb252.entry.js +0 -5
- package/dist/nano-components/p-dc6cb252.entry.js.map +0 -1
- package/dist/nano-components/p-dc805ecc.js +0 -5
- package/dist/nano-components/p-dd5687db.js +0 -5
- package/dist/nano-components/p-e6a0675e.entry.js +0 -5
- package/dist/nano-components/p-e98835e2.entry.js +0 -5
- package/dist/nano-components/p-efd3e121.entry.js +0 -5
- package/dist/nano-components/p-f73f52ed.entry.js +0 -5
- package/dist/nano-components/p-f73f52ed.entry.js.map +0 -1
- package/dist/nano-components/p-fbde7010.entry.js +0 -5
- package/dist/nano-components/p-fcbc9122.entry.js +0 -5
- package/dist/nano-components/p-fcbc9122.entry.js.map +0 -1
- package/dist/types/utils/template.d.ts +0 -2
- /package/dist/nano-components/{p-74a7fc4f.js.map → active-element-75b7c8a0.js.map} +0 -0
- /package/dist/nano-components/{p-cecb9af1.js.map → date-utils-6b7a6e1f.js.map} +0 -0
- /package/dist/nano-components/{p-cdfc507e.js.map → dom-8599fac1.js.map} +0 -0
- /package/dist/nano-components/{p-842cf127.js.map → drag-1723a4cc.js.map} +0 -0
- /package/dist/nano-components/{p-9bfdee71.js.map → events-6a805b42.js.map} +0 -0
- /package/dist/nano-components/{p-f8f89998.js.map → focus-visible-8b2c14da.js.map} +0 -0
- /package/dist/nano-components/{p-bb07c3d0.js.map → index-f626f476.js.map} +0 -0
- /package/dist/nano-components/{p-1987f7a9.js.map → local-my-account-6662da72.js.map} +0 -0
- /package/dist/nano-components/{p-ee045579.js.map → math-c02ddfda.js.map} +0 -0
- /package/dist/nano-components/{p-2155fc2c.js.map → nano-slides.entry.js.map} +0 -0
- /package/dist/nano-components/{p-8fe51abf.js.map → nano-table.entry.js.map} +0 -0
- /package/dist/nano-components/{p-cd1fd454.js.map → popover-e5e7a641.js.map} +0 -0
- /package/dist/nano-components/{p-dc565459.js.map → slot-8126e238.js.map} +0 -0
- /package/dist/nano-components/{p-f88fa15c.js.map → tabbable-26a66a22.js.map} +0 -0
- /package/dist/nano-components/{p-fbde7010.entry.js.map → table.worker-34706ecc.js.map} +0 -0
- /package/dist/nano-components/{p-f258383d.js → table.worker-f258383d.js} +0 -0
- /package/dist/nano-components/{p-411bb8f1.js.map → theme-82feb8cf.js.map} +0 -0
- /package/dist/nano-components/{p-7bff5224.js.map → throttle-ac4fcefa.js.map} +0 -0
- /package/dist/nano-components/{p-c3e8e3f9.js.map → transitions-fb09eb32.js.map} +0 -0
@@ -0,0 +1,5 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import{r as e,c as t,h as o,a as i}from"./index-9695db0a.js";const n=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:flex;align-items:center;justify-content:center;inline-size:100%;min-block-size:100%;font-size:18px;text-align:center;box-sizing:border-box;overflow:hidden;transition:opacity 0.2s;opacity:0;flex-direction:column}:host([ready]){opacity:1}:host(:not([ready])){flex:1 0 auto}";const s=class{constructor(o){e(this,o);this.nanoSlideReady=t(this,"nanoSlideReady",7);this.ready=null}readyChange(e,t){if(typeof t!=="undefined"&&t===false&&e===true){this.nanoSlideReady.emit()}}componentDidLoad(){if(typeof this.ready==="boolean")return;setTimeout((()=>{this.nanoSlideReady.emit();this.ready=true}))}render(){return o(i,null,o("slot",null))}static get watchers(){return{ready:["readyChange"]}}};s.style=n;export{s as nano_slide};
|
5
|
+
//# sourceMappingURL=nano-slide.entry.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["slideCss","Slide","readyChange","newReady","oldReady","this","nanoSlideReady","emit","componentDidLoad","ready","setTimeout","render","h","Host"],"sources":["./src/components/slides/slide.scss?tag=nano-slide&encapsulation=shadow","./src/components/slides/slide.tsx"],"sourcesContent":["// Slide\n// --------------------------------------------------\n\n:host {\n // Center slide text vertically\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 100%;\n min-block-size: 100%;\n font-size: 18px;\n text-align: center;\n box-sizing: border-box;\n overflow: hidden;\n transition: opacity 0.2s;\n opacity: 0;\n flex-direction: column;\n}\n\n:host([ready]) {\n opacity: 1;\n}\n\n:host(:not([ready])) {\n flex: 1 0 auto;\n}\n","import {\n Component,\n ComponentInterface,\n Host,\n h,\n Event,\n EventEmitter,\n Prop,\n Watch,\n} from '@stencil/core';\n\n@Component({\n tag: 'nano-slide',\n styleUrl: 'slide.scss',\n shadow: true,\n})\nexport class Slide implements ComponentInterface {\n /**\n * Fired when the slide has loaded.\n */\n @Event() nanoSlideReady!: EventEmitter<void>;\n\n /**\n * Used to to inform the parent slides components of readiness.\n * This will automatically be set to true when the slide has loaded but can be set and updated manually.\n */\n @Prop({ mutable: true, reflect: true }) ready: boolean | null = null;\n\n @Watch('ready')\n readyChange(newReady: boolean | null, oldReady?: boolean | null) {\n if (\n typeof oldReady !== 'undefined' &&\n oldReady === false &&\n newReady === true\n ) {\n this.nanoSlideReady.emit();\n }\n }\n\n componentDidLoad() {\n // ready state is being loaded manually\n if (typeof this.ready === 'boolean') return;\n setTimeout(() => {\n this.nanoSlideReady.emit();\n this.ready = true;\n });\n }\n\n render() {\n return (\n <Host>\n <slot />\n </Host>\n );\n }\n}\n"],"mappings":";;;
|
1
|
+
{"version":3,"names":["slideCss","Slide","readyChange","newReady","oldReady","this","nanoSlideReady","emit","componentDidLoad","ready","setTimeout","render","h","Host"],"sources":["./src/components/slides/slide.scss?tag=nano-slide&encapsulation=shadow","./src/components/slides/slide.tsx"],"sourcesContent":["// Slide\n// --------------------------------------------------\n\n:host {\n // Center slide text vertically\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 100%;\n min-block-size: 100%;\n font-size: 18px;\n text-align: center;\n box-sizing: border-box;\n overflow: hidden;\n transition: opacity 0.2s;\n opacity: 0;\n flex-direction: column;\n}\n\n:host([ready]) {\n opacity: 1;\n}\n\n:host(:not([ready])) {\n flex: 1 0 auto;\n}\n","import {\n Component,\n ComponentInterface,\n Host,\n h,\n Event,\n EventEmitter,\n Prop,\n Watch,\n} from '@stencil/core';\n\n@Component({\n tag: 'nano-slide',\n styleUrl: 'slide.scss',\n shadow: true,\n})\nexport class Slide implements ComponentInterface {\n /**\n * Fired when the slide has loaded.\n */\n @Event() nanoSlideReady!: EventEmitter<void>;\n\n /**\n * Used to to inform the parent slides components of readiness.\n * This will automatically be set to true when the slide has loaded but can be set and updated manually.\n */\n @Prop({ mutable: true, reflect: true }) ready: boolean | null = null;\n\n @Watch('ready')\n readyChange(newReady: boolean | null, oldReady?: boolean | null) {\n if (\n typeof oldReady !== 'undefined' &&\n oldReady === false &&\n newReady === true\n ) {\n this.nanoSlideReady.emit();\n }\n }\n\n componentDidLoad() {\n // ready state is being loaded manually\n if (typeof this.ready === 'boolean') return;\n setTimeout(() => {\n this.nanoSlideReady.emit();\n this.ready = true;\n });\n }\n\n render() {\n return (\n <Host>\n <slot />\n </Host>\n );\n }\n}\n"],"mappings":";;;6DAAA,MAAMA,EAAW,wY,MCgBJC,EAAK,M,mFAUgD,I,CAGhEC,YAAYC,EAA0BC,GACpC,UACSA,IAAa,aACpBA,IAAa,OACbD,IAAa,KACb,CACAE,KAAKC,eAAeC,M,EAIxBC,mBAEE,UAAWH,KAAKI,QAAU,UAAW,OACrCC,YAAW,KACTL,KAAKC,eAAeC,OACpBF,KAAKI,MAAQ,IAAI,G,CAIrBE,SACE,OACEC,EAACC,EAAI,KACHD,EAAA,a"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import{r as t,c as i,h as s,a as n,g as e}from"./index-9695db0a.js";function o(){}const h=o.prototype;h.on=function(t,i){if(!t||!i){return}const s=this._events=this._events||{};const n=s[t]=s[t]||[];if(n.indexOf(i)==-1){n.push(i)}return this};h.once=function(t,i){if(!t||!i){return}this.on(t,i);const s=this._onceEvents=this._onceEvents||{};const n=s[t]=s[t]||{};n[i]=true;return this};h.off=function(t,i){const s=this._events&&this._events[t];if(!s||!s.length){return}const n=s.indexOf(i);if(n!=-1){s.splice(n,1)}return this};h.emitEvent=function(t,i){let s=this._events&&this._events[t];if(!s||!s.length){return}s=s.slice(0);i=i||[];const n=this._onceEvents&&this._onceEvents[t];for(let e=0;e<s.length;e++){const o=s[e];const h=n&&n[o];if(h){this.off(t,o);delete n[o]}o.apply(this,i)}return this};h.allOff=function(){delete this._events;delete this._onceEvents};
|
5
|
+
/*!
|
6
|
+
* getSize v2.0.3
|
7
|
+
* measure size of elements
|
8
|
+
* MIT license
|
9
|
+
*/function c(t){const i=parseFloat(t);const s=t.indexOf("%")==-1&&!isNaN(i);return s&&i}function r(){}const u=typeof console=="undefined"?r:function(t){console.error(t)};const f=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];const a=f.length;function l(){const t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0};for(let i=0;i<a;i++){const s=f[i];t[s]=0}return t}function d(t){const i=getComputedStyle(t);if(!i){u("Style returned "+i+". Are you running this code in a hidden iframe on Firefox? "+"See https://bit.ly/getsizebug1")}return i}let p=false;let y;function b(){if(p){return}p=true;const t=document.createElement("div");t.style.width="200px";t.style.padding="1px 2px 3px 4px";t.style.borderStyle="solid";t.style.borderWidth="1px 2px 3px 4px";t.style.boxSizing="border-box";const i=document.body||document.documentElement;i.appendChild(t);const s=d(t);y=Math.round(c(s.width))==200;g.isBoxSizeOuter=y;i.removeChild(t)}function g(t){b();if(typeof t=="string"){t=document.querySelector(t)}if(!t||typeof t!="object"||!t.nodeType){return}const i=d(t);if(i.display=="none"){return l()}const s={};s.width=t.offsetWidth;s.height=t.offsetHeight;const n=s.isBorderBox=i.boxSizing=="border-box";for(let t=0;t<a;t++){const n=f[t];const e=i[n];const o=parseFloat(e);s[n]=!isNaN(o)?o:0}const e=s.paddingLeft+s.paddingRight;const o=s.paddingTop+s.paddingBottom;const h=s.marginLeft+s.marginRight;const r=s.marginTop+s.marginBottom;const u=s.borderLeftWidth+s.borderRightWidth;const p=s.borderTopWidth+s.borderBottomWidth;const g=n&&y;const k=c(i.width);if(k!==false){s.width=k+(g?0:e+u)}const w=c(i.height);if(w!==false){s.height=w+(g?0:o+p)}s.innerWidth=s.width-(e+u);s.innerHeight=s.height-(o+p);s.outerWidth=s.width+h;s.outerHeight=s.height+r;return s}const k={};k.extend=function(t,i){for(const s in i){t[s]=i[s]}return t};k.docReady=function(t){const i=document.readyState;if(i=="complete"||i=="interactive"){setTimeout(t)}else{document.addEventListener("DOMContentLoaded",t)}};k.toDashed=function(t){return t.replace(/(.)([A-Z])/g,(function(t,i,s){return i+"-"+s})).toLowerCase()};k.modulo=function(t,i){return(t%i+i)%i};const w=Array.prototype.slice;k.makeArray=function(t){if(Array.isArray(t)){return t}if(t===null||t===undefined){return[]}const i=typeof t=="object"&&typeof t.length=="number";if(i){return w.call(t)}return[t]};k.getParent=function(t,i){while(t.parentNode&&t!=document.body){t=t.parentElement;if(t.matches(i)){return t}}};k.getQueryElement=function(t){if(typeof t=="string"){return document.querySelector(t)}return t};k.handleEvent=function(t){const i="on"+t.type;if(this[i]){this[i](t)}};k.filterFindElements=function(t,i){t=k.makeArray(t);const s=[];t.forEach((function(t){if(!(t instanceof HTMLElement)){return}if(!i){s.push(t);return}if(t.matches(i)){s.push(t)}const n=t.querySelectorAll(i);for(let t=0;t<n.length;t++){s.push(n[t])}}));return s};k.debounceMethod=function(t,i,s){s=s||100;const n=t.prototype[i];const e=i+"Timeout";t.prototype[i]=function(...t){const i=this[e];clearTimeout(i);const o=this;this[e]=setTimeout((function(){n.apply(o,t);delete o[e]}),s)}};const m=window.console;k.htmlInit=function(t,i){k.docReady((function(){const s=k.toDashed(i);const n="data-"+s;const e=document.querySelectorAll("["+n+"]");const o=document.querySelectorAll(".js-"+s);const h=k.makeArray(e).concat(k.makeArray(o));const c=n+"-options";h.forEach((function(i){const s=i.getAttribute(n)||i.getAttribute(c);let e;try{e=s&&JSON.parse(s)}catch(t){if(m){m.error("Error parsing "+n+" on "+i.className+": "+t)}return}new t(i,e)}))}))};function v(t,i){this.element=t;this.parent=i;this.create()}const x=v.prototype;x.create=function(){this.element.style.position="absolute";this.element.setAttribute("aria-hidden","true");this.x=0;this.shift=0;Array.from(this.element.querySelectorAll("*")).forEach((t=>{t.setAttribute("tabindex","-1")}))};x.destroy=function(){this.unselect();this.element.style.position="";const t=this.parent.originSide;this.element.style[t]=""};x.getSize=function(){this.size=g(this.element)};x.setPosition=function(t){this.x=t;this.updateTarget();this.renderPosition(t)};x.updateTarget=x.setDefaultTarget=function(){const t=this.parent.originSide=="left"?"marginLeft":"marginRight";this.target=this.x+this.size[t]+this.size.width*this.parent.cellAlign};x.renderPosition=function(t){const i=this.parent.originSide;this.element.style[i]=this.parent.getPositionValue(t)};x.select=function(){this.element.classList.add("is-selected");this.element.removeAttribute("aria-hidden");Array.from(this.element.querySelectorAll("*")).forEach((t=>{t.removeAttribute("tabindex")}))};x.unselect=function(){this.element.classList.remove("is-selected");this.element.setAttribute("aria-hidden","true");Array.from(this.element.querySelectorAll("*")).forEach((t=>{t.setAttribute("tabindex","-1")}))};x.wrapShift=function(t){this.shift=t;this.renderPosition(this.x+this.parent.slideableWidth*t)};x.remove=function(){this.element.parentNode.removeChild(this.element)};function z(t){this.parent=t;this.isOriginLeft=t.originSide=="left";this.cells=[];this.outerWidth=0;this.height=0}const S=z.prototype;S.addCell=function(t){this.cells.push(t);this.outerWidth+=t.size.outerWidth;this.height=Math.max(t.size.outerHeight,this.height);if(this.cells.length==1){this.x=t.x;const i=this.isOriginLeft?"marginLeft":"marginRight";this.firstMargin=t.size[i]}};S.updateTarget=function(){const t=this.isOriginLeft?"marginRight":"marginLeft";const i=this.getLastCell();const s=i?i.size[t]:0;const n=this.outerWidth-(this.firstMargin+s);this.target=this.x+this.firstMargin+n*this.parent.cellAlign};S.getLastCell=function(){return this.cells[this.cells.length-1]};S.select=function(){this.cells.forEach((function(t){t.select()}))};S.unselect=function(){this.cells.forEach((function(t){t.unselect()}))};S.getCellElements=function(){return this.cells.map((function(t){return t.element}))};const C={};C.startAnimation=function(){if(this.isAnimating){return}this.isAnimating=true;this.restingFrames=0;this.animate()};C.animate=function(){this.applyDragForce();this.applySelectedAttraction();const t=this.x;this.integratePhysics();this.positionSlider();this.settle(t);if(this.isAnimating){const t=this;requestAnimationFrame((function i(){t.animate()}))}};C.positionSlider=function(){let t=this.x;if(this.options.wrapAround&&this.cells.length>1){t=k.modulo(t,this.slideableWidth);t=t-this.slideableWidth;this.shiftWrapCells(t)}this.setTranslateX(t,this.isAnimating);this.dispatchScrollEvent()};C.setTranslateX=function(t,i){t+=this.cursorPosition;t=this.options.rightToLeft?-t:t;const s=this.getPositionValue(t);this.slider.style.transform="translate3d("+s+",0,0)"};C.dispatchScrollEvent=function(){const t=this.slides[0];if(!t){return}const i=-this.x-t.target;const s=i/this.slidesWidth;this.dispatchEvent("scroll",null,[s,i])};C.positionSliderAtSelected=function(){if(!this.cells.length){return}this.x=-this.selectedSlide.target;this.velocity=0;this.positionSlider()};C.getPositionValue=function(t){if(this.options.percentPosition){return Math.round(t/this.size.innerWidth*1e4)*.01+"%"}else{return Math.round(t)+"px"}};C.settle=function(t){if(!this.isPointerDown&&Math.round(this.x*100)==Math.round(t*100)){this.restingFrames++}if(this.restingFrames>2){this.isAnimating=false;delete this.isFreeScrolling;this.positionSlider();this.dispatchEvent("settle",null,[this.selectedIndex])}};C.shiftWrapCells=function(t){const i=this.cursorPosition+t;this._shiftCells(this.beforeShiftCells,i,-1);const s=this.size.innerWidth-(t+this.slideableWidth+this.cursorPosition);this._shiftCells(this.afterShiftCells,s,1)};C._shiftCells=function(t,i,s){for(let n=0;n<t.length;n++){const e=t[n];const o=i>0?s:0;e.wrapShift(o);i-=e.size.outerWidth}};C._unshiftCells=function(t){if(!t||!t.length){return}for(let i=0;i<t.length;i++){t[i].wrapShift(0)}};C.integratePhysics=function(){this.x+=this.velocity;this.velocity*=this.getFrictionFactor()};C.applyForce=function(t){this.velocity+=t};C.getFrictionFactor=function(){return 1-this.options[this.isFreeScrolling?"freeScrollFriction":"friction"]};C.getRestingPosition=function(){return this.x+this.velocity/(1-this.getFrictionFactor())};C.applyDragForce=function(){if(!this.isDraggable||!this.isPointerDown){return}const t=this.dragX-this.x;const i=t-this.velocity;this.applyForce(i)};C.applySelectedAttraction=function(){const t=this.isDraggable&&this.isPointerDown;if(t||this.isFreeScrolling||!this.slides.length){return}const i=this.selectedSlide.target*-1-this.x;const s=i*this.options.selectedAttraction;this.applyForce(s)};const M=window.getComputedStyle;const T=window.console;function L(t,i){t=k.makeArray(t);while(t.length){i.appendChild(t.shift())}}let P=0;const A={};function E(t,i){const s=k.getQueryElement(t);if(!s){if(T){T.error("Bad element for Flickity: "+(s||t))}return}this.element=s;if(this.element.flickityGUID){const t=A[this.element.flickityGUID];if(!A[this.element.flickityGUID])return;t.option(i);return t}this.options=k.extend({},this.constructor.defaults);this.option(i);this._create()}E.defaults={accessibility:true,cellAlign:"center",freeScrollFriction:.075,friction:.28,namespaceJQueryEvents:true,percentPosition:true,resize:true,selectedAttraction:.025,setGallerySize:true};E.createMethods=[];const j=E.prototype;k.extend(j,o.prototype);j._create=function(){const t=this.guid=++P;this.element.flickityGUID=t;A[t]=this;this.selectedIndex=0;this.restingFrames=0;this.x=0;this.velocity=0;this.originSide=this.options.rightToLeft?"right":"left";this.viewport=document.createElement("div");this.viewport.className="flickity-viewport";this.viewport.part.add("slide-viewport");this._createSlider();if(this.options.resize||this.options.watchCSS){window.addEventListener("resize",this)}for(const t in this.options.on){const i=this.options.on[t];this.on(t,i)}E.createMethods.forEach((function(t){this[t]()}),this);if(this.options.watchCSS){this.watchCSS()}else{this.activate()}};j.option=function(t){k.extend(this.options,t)};j.activate=function(){if(this.isActive){return}this.isActive=true;this.element.classList.add("flickity-enabled");if(this.options.rightToLeft){this.element.classList.add("flickity-rtl")}this.getSize();const t=this.element.children;L(t,this.slider);this.viewport.appendChild(this.slider);this.element.appendChild(this.viewport);this.reloadCells();if(this.options.accessibility){this.element.tabIndex=0;this.element.addEventListener("keydown",this)}this.emitEvent("activate");this.selectInitialIndex();this.isInitActivated=true;this.dispatchEvent("ready")};j._createSlider=function(){const t=document.createElement("div");t.className="flickity-slider";t.style[this.originSide]=0;this.slider=t};j._filterFindCellElements=function(t){return k.filterFindElements(t,this.options.cellSelector)};j.reloadCells=function(){this.cells=this._makeCells(this.slider.getRootNode().host?this.slider.getRootNode().host.children:this.slider.children);this.positionCells();this._getWrapShiftCells();this.setGallerySize()};j._makeCells=function(t){const i=this._filterFindCellElements(t);const s=i.map((function(t){return new v(t,this)}),this);return s};j.getLastCell=function(){return this.cells[this.cells.length-1]};j.getLastSlide=function(){return this.slides[this.slides.length-1]};j.positionCells=function(){this._sizeCells(this.cells);this._positionCells(0)};j._positionCells=function(t){t=t||0;this.maxCellHeight=t?this.maxCellHeight||0:0;let i=0;if(t>0){const s=this.cells[t-1];i=s.x+s.size.outerWidth}const s=this.cells.length;for(let n=t;n<s;n++){const t=this.cells[n];t.setPosition(i);i+=t.size.outerWidth;this.maxCellHeight=Math.max(t.size.outerHeight,this.maxCellHeight)}this.slideableWidth=i;this.updateSlides();this._containSlides();this.slidesWidth=s?this.getLastSlide().target-this.slides[0].target:0};j._sizeCells=function(t){t.forEach((function(t){t.getSize()}))};j.updateSlides=function(){this.slides=[];if(!this.cells.length){return}let t=new z(this);this.slides.push(t);const i=this.originSide=="left";const s=i?"marginRight":"marginLeft";const n=this._getCanCellFit();this.cells.forEach((function(i,e){if(!t.cells.length){t.addCell(i);return}const o=t.outerWidth-t.firstMargin+(i.size.outerWidth-i.size[s]);if(n.call(this,e,o)){t.addCell(i)}else{t.updateTarget();t=new z(this);this.slides.push(t);t.addCell(i)}}),this);t.updateTarget();this.updateSelectedSlide()};j._getCanCellFit=function(){const t=this.options.groupCells;if(!t){return function(){return false}}else if(typeof t=="number"){const i=parseInt(t,10);return function(t){return t%i!==0}}const i=typeof t=="string"&&t.match(/^(\d+)%$/);const s=i?parseInt(i[1],10)/100:1;return function(t,i){return i<=(this.size.innerWidth+1)*s}};j._init=j.reposition=function(){this.positionCells();this.positionSliderAtSelected()};j.getSize=function(){this.size=g(this.element);this.setCellAlign();this.cursorPosition=this.size.innerWidth*this.cellAlign};const O={center:{left:.5,right:.5},left:{left:0,right:1},right:{right:0,left:1}};j.setCellAlign=function(){const t=O[this.options.cellAlign];this.cellAlign=t?t[this.originSide]:this.options.cellAlign};j.setGallerySize=function(){if(this.options.setGallerySize){const t=this.options.adaptiveHeight&&this.selectedSlide?this.selectedSlide.height:this.maxCellHeight;this.viewport.style.height=t+"px"}};j._getWrapShiftCells=function(){if(!this.options.wrapAround){return}this._unshiftCells(this.beforeShiftCells);this._unshiftCells(this.afterShiftCells);let t=this.cursorPosition;const i=this.cells.length-1;this.beforeShiftCells=this._getGapCells(t,i,-1);t=this.size.innerWidth-this.cursorPosition;this.afterShiftCells=this._getGapCells(t,0,1)};j._getGapCells=function(t,i,s){const n=[];while(t>0){const e=this.cells[i];if(!e){break}n.push(e);i+=s;t-=e.size.outerWidth}return n};j._containSlides=function(){if(!this.options.contain||this.options.wrapAround||!this.cells.length){return}const t=this.options.rightToLeft;const i=t?"marginRight":"marginLeft";const s=t?"marginLeft":"marginRight";const n=this.slideableWidth-this.getLastCell().size[s];const e=n<this.size.innerWidth;const o=this.cursorPosition+this.cells[0].size[i];const h=n-this.size.innerWidth*(1-this.cellAlign);this.slides.forEach((function(t){if(e){t.target=n*this.cellAlign}else{t.target=Math.max(t.target,o);t.target=Math.min(t.target,h)}}),this)};j.dispatchEvent=function(t,i,s){const n=i?[i].concat(s):s;this.emitEvent(t,n)};j.select=function(t,i,s){if(!this.isActive){return}t=parseInt(t,10);this._wrapSelect(t);if(this.options.wrapAround||i){t=k.modulo(t,this.slides.length)}if(!this.slides[t]){return}const n=this.selectedIndex;this.selectedIndex=t;this.updateSelectedSlide();if(s){this.positionSliderAtSelected()}else{this.startAnimation()}if(this.options.adaptiveHeight){this.setGallerySize()}this.dispatchEvent("select",null,[t]);if(t!=n){this.dispatchEvent("change",null,[t])}this.dispatchEvent("cellSelect")};j._wrapSelect=function(t){const i=this.slides.length;const s=this.options.wrapAround&&i>1;if(!s){return t}const n=k.modulo(t,i);const e=Math.abs(n-this.selectedIndex);const o=Math.abs(n+i-this.selectedIndex);const h=Math.abs(n-i-this.selectedIndex);if(!this.isDragSelect&&o<e){t+=i}else if(!this.isDragSelect&&h<e){t-=i}if(t<0){this.x-=this.slideableWidth}else if(t>=i){this.x+=this.slideableWidth}};j.previous=function(t,i){this.select(this.selectedIndex-1,t,i)};j.next=function(t,i){this.select(this.selectedIndex+1,t,i)};j.updateSelectedSlide=function(){const t=this.slides[this.selectedIndex];if(!t){return}this.unselectSelectedSlide();this.selectedSlide=t;t.select();this.selectedCells=t.cells;this.selectedElements=t.getCellElements();this.selectedCell=t.cells[0];this.selectedElement=this.selectedElements[0]};j.unselectSelectedSlide=function(){if(this.selectedSlide){this.selectedSlide.unselect()}};j.selectInitialIndex=function(){const t=this.options.initialIndex;if(this.isInitActivated){this.select(this.selectedIndex,false,true);return}if(t&&typeof t=="string"){const i=this.queryCell(t);if(i){this.selectCell(t,false,true);return}}let i=0;if(t&&this.slides[t]){i=t}this.select(i,false,true)};j.selectCell=function(t,i,s){const n=this.queryCell(t);if(!n){return}const e=this.getCellSlideIndex(n);this.select(e,i,s)};j.getCellSlideIndex=function(t){for(let i=0;i<this.slides.length;i++){const s=this.slides[i];const n=s.cells.indexOf(t);if(n!=-1){return i}}};j.getCell=function(t){for(let i=0;i<this.cells.length;i++){const s=this.cells[i];if(s.element==t){return s}}};j.getCells=function(t){t=k.makeArray(t);const i=[];t.forEach((function(t){const s=this.getCell(t);if(s){i.push(s)}}),this);return i};j.getCellElements=function(){return this.cells.map((function(t){return t.element}))};j.getParentCell=function(t){const i=this.getCell(t);if(i){return i}t=k.getParent(t,".flickity-slider > *");return this.getCell(t)};j.getAdjacentCellElements=function(t,i){if(!t){return this.selectedSlide.getCellElements()}i=i===undefined?this.selectedIndex:i;const s=this.slides.length;if(1+t*2>=s){return this.getCellElements()}let n=[];for(let e=i-t;e<=i+t;e++){const t=this.options.wrapAround?k.modulo(e,s):e;const i=this.slides[t];if(i){n=n.concat(i.getCellElements())}}return n};j.queryCell=function(t){if(typeof t=="number"){return this.cells[t]}if(typeof t=="string"){if(t.match(/^[#\.]?[\d\/]/)){return}t=this.element.querySelector(t)}return this.getCell(t)};j.uiChange=function(){this.emitEvent("uiChange")};j.childUIPointerDown=function(t){if(t.type!="touchstart"){t.preventDefault()}this.focus()};j.onresize=function(){this.watchCSS();this.resize()};k.debounceMethod(E,"onresize",150);j.resize=function(){if(!this.isActive){return}this.getSize();if(this.options.wrapAround){this.x=k.modulo(this.x,this.slideableWidth)}this.positionCells();this._getWrapShiftCells();this.setGallerySize();this.emitEvent("resize");const t=this.selectedElements&&this.selectedElements[0];this.selectCell(t,false,true)};j.watchCSS=function(){const t=this.options.watchCSS;if(!t){return}const i=M(this.element,":after").content;if(i.indexOf("flickity")!=-1){this.activate()}else{this.deactivate()}};j.onkeydown=function(t){const i=document.activeElement&&document.activeElement!=this.element;if(!this.options.accessibility||i){return}const s=E.keyboardHandlers[t.keyCode];if(s){s.call(this)}};E.keyboardHandlers={37:function(){const t=this.options.rightToLeft?"next":"previous";this.uiChange();this[t]()},39:function(){const t=this.options.rightToLeft?"previous":"next";this.uiChange();this[t]()}};j.focus=function(){const t=window.pageYOffset;this.element.focus({preventScroll:true});if(window.pageYOffset!=t){window.scrollTo(window.pageXOffset,t)}};j.deactivate=function(){if(!this.isActive){return}this.element.classList.remove("flickity-enabled");this.element.classList.remove("flickity-rtl");this.unselectSelectedSlide();this.cells.forEach((function(t){t.destroy()}));this.element.removeChild(this.viewport);L(this.slider.children,this.element);if(this.options.accessibility){this.element.removeAttribute("tabIndex");this.element.removeEventListener("keydown",this)}this.isActive=false;this.emitEvent("deactivate")};j.destroy=function(){this.deactivate();window.removeEventListener("resize",this);this.allOff();this.emitEvent("destroy");delete this.element.flickityGUID;delete A[this.guid]};k.extend(j,C);E.data=function(t){t=k.getQueryElement(t);const i=t&&t.flickityGUID;return i&&A[i]};k.htmlInit(E,"flickity");E.Cell=v;E.Slide=z;
|
10
|
+
/*!
|
11
|
+
* Unipointer v2.4.0
|
12
|
+
* base class for doing one thing with pointer event
|
13
|
+
* MIT license
|
14
|
+
*/function R(){}function D(){}const N=D.prototype=Object.create(o.prototype);N.bindStartEvent=function(t){this._bindStartEvent(t,true)};N.unbindStartEvent=function(t){this._bindStartEvent(t,false)};N._bindStartEvent=function(t,i){i=i===undefined?true:i;const s=i?"addEventListener":"removeEventListener";let n="mousedown";if("ontouchstart"in window){n="touchstart"}else if(window.PointerEvent){n="pointerdown"}t[s](n,this)};N.handleEvent=function(t){const i="on"+t.type;if(this[i]){this[i](t)}};N.getTouch=function(t){for(let i=0;i<t.length;i++){const s=t[i];if(s.identifier==this.pointerIdentifier){return s}}};N.onmousedown=function(t){const i=t.button;if(i&&i!==0&&i!==1){return}this._pointerDown(t,t)};N.ontouchstart=function(t){this._pointerDown(t,t.changedTouches[0])};N.onpointerdown=function(t){this._pointerDown(t,t)};N._pointerDown=function(t,i){if(t.button||this.isPointerDown){return}this.isPointerDown=true;this.pointerIdentifier=i.pointerId!==undefined?i.pointerId:i.identifier;this.pointerDown(t,i)};N.pointerDown=function(t,i){this._bindPostStartEvents(t);this.emitEvent("pointerDown",[t,i])};const B={mousedown:["mousemove","mouseup"],touchstart:["touchmove","touchend","touchcancel"],pointerdown:["pointermove","pointerup","pointercancel"]};N._bindPostStartEvents=function(t){if(!t){return}const i=B[t.type];i.forEach((function(t){window.addEventListener(t,this)}),this);this._boundPointerEvents=i};N._unbindPostStartEvents=function(){if(!this._boundPointerEvents){return}this._boundPointerEvents.forEach((function(t){window.removeEventListener(t,this)}),this);delete this._boundPointerEvents};N.onmousemove=function(t){this._pointerMove(t,t)};N.onpointermove=function(t){if(t.pointerId==this.pointerIdentifier){this._pointerMove(t,t)}};N.ontouchmove=function(t){const i=this.getTouch(t.changedTouches);if(i){this._pointerMove(t,i)}};N._pointerMove=function(t,i){this.pointerMove(t,i)};N.pointerMove=function(t,i){this.emitEvent("pointerMove",[t,i])};N.onmouseup=function(t){this._pointerUp(t,t)};N.onpointerup=function(t){if(t.pointerId==this.pointerIdentifier){this._pointerUp(t,t)}};N.ontouchend=function(t){const i=this.getTouch(t.changedTouches);if(i){this._pointerUp(t,i)}};N._pointerUp=function(t,i){this._pointerDone();this.pointerUp(t,i)};N.pointerUp=function(t,i){this.emitEvent("pointerUp",[t,i])};N._pointerDone=function(){this._pointerReset();this._unbindPostStartEvents();this.pointerDone()};N._pointerReset=function(){this.isPointerDown=false;delete this.pointerIdentifier};N.pointerDone=R;N.onpointercancel=function(t){if(t.pointerId==this.pointerIdentifier){this._pointerCancel(t,t)}};N.ontouchcancel=function(t){const i=this.getTouch(t.changedTouches);if(i){this._pointerCancel(t,i)}};N._pointerCancel=function(t,i){this._pointerDone();this.pointerCancel(t,i)};N.pointerCancel=function(t,i){this.emitEvent("pointerCancel",[t,i])};D.getPointerPoint=function(t){return{x:t.pageX,y:t.pageY}};
|
15
|
+
/*!
|
16
|
+
* Unidragger v2.4.0
|
17
|
+
* Draggable base class
|
18
|
+
* MIT license
|
19
|
+
*/function I(){}const F=I.prototype=Object.create(D.prototype);F.bindHandles=function(){this._bindHandles(true)};F.unbindHandles=function(){this._bindHandles(false)};F._bindHandles=function(t){t=t===undefined?true:t;const i=t?"addEventListener":"removeEventListener";const s=t?this._touchActionValue:"";for(let n=0;n<this.handles.length;n++){const e=this.handles[n];this._bindStartEvent(e,t);e[i]("click",this);if(window.PointerEvent){e.style.touchAction=s}}};F._touchActionValue="none";F.pointerDown=function(t,i){const s=this.okayPointerDown(t);if(!s){return}this.pointerDownPointer={pageX:i.pageX,pageY:i.pageY};t.preventDefault();this.pointerDownBlur();this._bindPostStartEvents(t);this.emitEvent("pointerDown",[t,i])};const W={TEXTAREA:true,INPUT:true,SELECT:true,OPTION:true};const U={radio:true,checkbox:true,button:true,submit:true,image:true,file:true};F.okayPointerDown=function(t){const i=W[t.target.nodeName];const s=U[t.target.type];const n=!i||s;if(!n){this._pointerReset()}return n};F.pointerDownBlur=function(){const t=document.activeElement;const i=t&&t.blur&&t!=document.body;if(i){t.blur()}};F.pointerMove=function(t,i){const s=this._dragPointerMove(t,i);this.emitEvent("pointerMove",[t,i,s]);this._dragMove(t,i,s)};F._dragPointerMove=function(t,i){const s={x:i.pageX-this.pointerDownPointer.pageX,y:i.pageY-this.pointerDownPointer.pageY};if(!this.isDragging&&this.hasDragStarted(s)){this._dragStart(t,i)}return s};F.hasDragStarted=function(t){return Math.abs(t.x)>3||Math.abs(t.y)>3};F.pointerUp=function(t,i){this.emitEvent("pointerUp",[t,i]);this._dragPointerUp(t,i)};F._dragPointerUp=function(t,i){if(this.isDragging){this._dragEnd(t,i)}else{this._staticClick(t,i)}};F._dragStart=function(t,i){this.isDragging=true;this.isPreventingClicks=true;this.dragStart(t,i)};F.dragStart=function(t,i){this.emitEvent("dragStart",[t,i])};F._dragMove=function(t,i,s){if(!this.isDragging){return}this.dragMove(t,i,s)};F.dragMove=function(t,i,s){t.preventDefault();this.emitEvent("dragMove",[t,i,s])};F._dragEnd=function(t,i){this.isDragging=false;setTimeout(function(){delete this.isPreventingClicks}.bind(this));this.dragEnd(t,i)};F.dragEnd=function(t,i){this.emitEvent("dragEnd",[t,i])};F.onclick=function(t){if(this.isPreventingClicks){t.preventDefault()}};F._staticClick=function(t,i){if(this.isIgnoringMouseUp&&t.type=="mouseup"){return}this.staticClick(t,i);if(t.type!="mouseup"){this.isIgnoringMouseUp=true;setTimeout(function(){delete this.isIgnoringMouseUp}.bind(this),400)}};F.staticClick=function(t,i){this.emitEvent("staticClick",[t,i])};I.getPointerPoint=D.getPointerPoint;k.extend(E.defaults,{draggable:">1",dragThreshold:3});E.createMethods.push("_createDrag");const H=E.prototype;k.extend(H,I.prototype);H._touchActionValue="pan-y";const X="createTouch"in document;let _=false;H._createDrag=function(){this.on("activate",this.onActivateDrag);this.on("uiChange",this._uiChangeDrag);this.on("deactivate",this.onDeactivateDrag);this.on("cellChange",this.updateDraggable);if(X&&!_){window.addEventListener("touchmove",(function(){}));_=true}};H.onActivateDrag=function(){this.handles=[this.viewport];this.bindHandles();this.updateDraggable()};H.onDeactivateDrag=function(){this.unbindHandles();this.element.classList.remove("is-draggable")};H.updateDraggable=function(){if(this.options.draggable==">1"){this.isDraggable=this.slides.length>1}else{this.isDraggable=this.options.draggable}if(this.isDraggable){this.element.classList.add("is-draggable")}else{this.element.classList.remove("is-draggable")}};H.bindDrag=function(){this.options.draggable=true;this.updateDraggable()};H.unbindDrag=function(){this.options.draggable=false;this.updateDraggable()};H._uiChangeDrag=function(){delete this.isFreeScrolling};H.pointerDown=function(t,i){if(!this.isDraggable){this._pointerDownDefault(t,i);return}const s=this.okayPointerDown(t);if(!s){return}this._pointerDownPreventDefault(t);this.pointerDownFocus(t);if(document.activeElement!=this.element){this.pointerDownBlur()}this.dragX=this.x;this.viewport.classList.add("is-pointer-down");this.pointerDownScroll=J();window.addEventListener("scroll",this);this._pointerDownDefault(t,i)};H._pointerDownDefault=function(t,i){this.pointerDownPointer={pageX:i.pageX,pageY:i.pageY};this._bindPostStartEvents(t);this.dispatchEvent("pointerDown",t,[i])};const Y={INPUT:true,TEXTAREA:true,SELECT:true};H.pointerDownFocus=function(t){const i=Y[t.target.nodeName];if(!i){this.focus()}};H._pointerDownPreventDefault=function(t){const i=t.type=="touchstart";const s=t.pointerType=="touch";const n=Y[t.target.nodeName];if(!i&&!s&&!n){t.preventDefault()}};H.hasDragStarted=function(t){return Math.abs(t.x)>this.options.dragThreshold};H.pointerUp=function(t,i){delete this.isTouchScrolling;this.viewport.classList.remove("is-pointer-down");this.dispatchEvent("pointerUp",t,[i]);this._dragPointerUp(t,i)};H.pointerDone=function(){window.removeEventListener("scroll",this);delete this.pointerDownScroll};H.dragStart=function(t,i){if(!this.isDraggable){return}this.dragStartPosition=this.x;this.startAnimation();window.removeEventListener("scroll",this);this.dispatchEvent("dragStart",t,[i])};H.pointerMove=function(t,i){const s=this._dragPointerMove(t,i);this.dispatchEvent("pointerMove",t,[i,s]);this._dragMove(t,i,s)};H.dragMove=function(t,i,s){if(!this.isDraggable){return}t.preventDefault();this.previousDragX=this.dragX;const n=this.options.rightToLeft?-1:1;if(this.options.wrapAround){s.x=s.x%this.slideableWidth}let e=this.dragStartPosition+s.x*n;if(!this.options.wrapAround&&this.slides.length){const t=Math.max(-this.slides[0].target,this.dragStartPosition);e=e>t?(e+t)*.5:e;const i=Math.min(-this.getLastSlide().target,this.dragStartPosition);e=e<i?(e+i)*.5:e}this.dragX=e;this.dragMoveTime=new Date;this.dispatchEvent("dragMove",t,[i,s])};H.dragEnd=function(t,i){if(!this.isDraggable){return}if(this.options.freeScroll){this.isFreeScrolling=true}let s=this.dragEndRestingSelect();if(this.options.freeScroll&&!this.options.wrapAround){const t=this.getRestingPosition();this.isFreeScrolling=-t>this.slides[0].target&&-t<this.getLastSlide().target}else if(!this.options.freeScroll&&s==this.selectedIndex){s+=this.dragEndBoostSelect()}delete this.previousDragX;this.isDragSelect=this.options.wrapAround;this.select(s);delete this.isDragSelect;this.dispatchEvent("dragEnd",t,[i])};H.dragEndRestingSelect=function(){const t=this.getRestingPosition();const i=Math.abs(this.getSlideDistance(-t,this.selectedIndex));const s=this._getClosestResting(t,i,1);const n=this._getClosestResting(t,i,-1);const e=s.distance<n.distance?s.index:n.index;return e};H._getClosestResting=function(t,i,s){let n=this.selectedIndex;let e=Infinity;const o=this.options.contain&&!this.options.wrapAround?function(t,i){return t<=i}:function(t,i){return t<i};while(o(i,e)){n+=s;e=i;i=this.getSlideDistance(-t,n);if(i===null){break}i=Math.abs(i)}return{distance:e,index:n-s}};H.getSlideDistance=function(t,i){const s=this.slides.length;const n=this.options.wrapAround&&s>1;const e=n?k.modulo(i,s):i;const o=this.slides[e];if(!o){return null}const h=n?this.slideableWidth*Math.floor(i/s):0;return t-(o.target+h)};H.dragEndBoostSelect=function(){if(this.previousDragX===undefined||!this.dragMoveTime||new Date-this.dragMoveTime>100){return 0}const t=this.getSlideDistance(-this.dragX,this.selectedIndex);const i=this.previousDragX-this.dragX;if(t>0&&i>0){return 1}else if(t<0&&i<0){return-1}return 0};H.staticClick=function(t,i){const s=this.getParentCell(t.target);const n=s&&s.element;const e=s&&this.cells.indexOf(s);this.dispatchEvent("staticClick",t,[i,n,e])};H.onscroll=function(){const t=J();const i=this.pointerDownScroll.x-t.x;const s=this.pointerDownScroll.y-t.y;if(Math.abs(i)>3||Math.abs(s)>3){this._pointerDone()}};function J(){return{x:window.pageXOffset,y:window.pageYOffset}}const Z="http://www.w3.org/2000/svg";function q(t,i){this.direction=t;this.parent=i;this.parentElement=this.parent.element.shadowRoot||this.parent.element;this._create()}q.prototype=Object.create(D.prototype);q.prototype._create=function(){this.isEnabled=true;this.isPrevious=this.direction==-1;const t=this.parent.options.rightToLeft?1:-1;this.isLeft=this.direction==t;const i=this.element=document.createElement("button");i.className="flickity-button flickity-prev-next-button";i.part.add("navigation-button");if(this.isPrevious){i.classList.add("previous");i.part.add("navigation-button--previous")}else{i.classList.add("next");i.part.add("navigation-button--next")}i.setAttribute("type","button");this.disable();i.setAttribute("aria-label",this.isPrevious?"Previous":"Next");const s=document.createElement("slot");s.name=this.isPrevious?"previous-icon":"next-icon";i.appendChild(s);s.addEventListener("slotchange",(()=>{s.assignedElements({flatten:true}).forEach((t=>{t.removeAttribute("hidden")}))}));const n=this.createSVG();s.appendChild(n);this.parent.on("select",this.update.bind(this));this.on("pointerDown",this.parent.childUIPointerDown.bind(this.parent))};q.prototype.activate=function(){this.bindStartEvent(this.element);this.element.addEventListener("click",this);this.parentElement.appendChild(this.element)};q.prototype.deactivate=function(){this.parentElement.removeChild(this.element);this.unbindStartEvent(this.element);this.element.removeEventListener("click",this)};q.prototype.createSVG=function(){const t=document.createElementNS(Z,"svg");t.setAttribute("class","flickity-button-icon");t.setAttribute("viewBox","0 0 100 100");t.part.add("navigation-icon");const i=document.createElementNS(Z,"path");const s=G(this.parent.options.arrowShape);i.setAttribute("d",s);i.setAttribute("class","arrow");if(!this.isLeft){i.setAttribute("transform","translate(100, 100) rotate(180) ")}t.appendChild(i);return t};function G(t){if(typeof t=="string"){return t}return"M "+t.x0+",50"+" L "+t.x1+","+(t.y1+50)+" L "+t.x2+","+(t.y2+50)+" L "+t.x3+",50 "+" L "+t.x2+","+(50-t.y2)+" L "+t.x1+","+(50-t.y1)+" Z"}q.prototype.handleEvent=k.handleEvent;q.prototype.onclick=function(){if(!this.isEnabled){return}this.parent.uiChange();const t=this.isPrevious?"previous":"next";this.parent[t]()};q.prototype.enable=function(){if(this.isEnabled){return}this.element.disabled=false;this.isEnabled=true};q.prototype.disable=function(){if(!this.isEnabled){return}this.element.disabled=true;this.isEnabled=false};q.prototype.update=function(){const t=this.parent.slides;if(this.parent.options.wrapAround&&t.length>1){this.enable();return}const i=t.length?t.length-1:0;const s=this.isPrevious?0:i;const n=this.parent.selectedIndex==s?"disable":"enable";this[n]()};q.prototype.destroy=function(){this.deactivate();this.allOff()};k.extend(E.defaults,{prevNextButtons:true,arrowShape:{x0:10,x1:60,y1:50,x2:70,y2:40,x3:30}});E.createMethods.push("_createPrevNextButtons");const Q=E.prototype;Q._createPrevNextButtons=function(){if(!this.options.prevNextButtons){return}this.prevButton=new q(-1,this);this.nextButton=new q(1,this);this.on("activate",this.activatePrevNextButtons)};Q.activatePrevNextButtons=function(){this.prevButton.activate();this.nextButton.activate();this.on("deactivate",this.deactivatePrevNextButtons)};Q.deactivatePrevNextButtons=function(){this.prevButton.deactivate();this.nextButton.deactivate();this.off("deactivate",this.deactivatePrevNextButtons)};E.PrevNextButton=q;function $(t){this.parent=t;this.state="stopped";this.onVisibilityChange=this.visibilityChange.bind(this);this.onVisibilityPlay=this.visibilityPlay.bind(this)}$.prototype=Object.create(o.prototype);$.prototype.play=function(){if(this.state=="playing"){return}const t=document.hidden;if(t){document.addEventListener("visibilitychange",this.onVisibilityPlay);return}this.state="playing";document.addEventListener("visibilitychange",this.onVisibilityChange);this.tick()};$.prototype.tick=function(){if(this.state!="playing"){return}let t=this.parent.options.autoPlay;t=typeof t=="number"?t:3e3;const i=this;this.clear();this.timeout=setTimeout((function(){i.parent.next(true);i.tick()}),t)};$.prototype.stop=function(){this.state="stopped";this.clear();document.removeEventListener("visibilitychange",this.onVisibilityChange)};$.prototype.clear=function(){clearTimeout(this.timeout)};$.prototype.pause=function(){if(this.state=="playing"){this.state="paused";this.clear()}};$.prototype.unpause=function(){if(this.state=="paused"){this.play()}};$.prototype.visibilityChange=function(){const t=document.hidden;this[t?"pause":"unpause"]()};$.prototype.visibilityPlay=function(){this.play();document.removeEventListener("visibilitychange",this.onVisibilityPlay)};k.extend(E.defaults,{pauseAutoPlayOnHover:true});E.createMethods.push("_createPlayer");const K=E.prototype;K._createPlayer=function(){this.player=new $(this);this.on("activate",this.activatePlayer);this.on("uiChange",this.stopPlayer);this.on("pointerDown",this.stopPlayer);this.on("deactivate",this.deactivatePlayer)};K.activatePlayer=function(){if(!this.options.autoPlay){return}this.player.play();this.element.addEventListener("mouseenter",this)};K.playPlayer=function(){this.player.play()};K.stopPlayer=function(){this.player.stop()};K.pausePlayer=function(){this.player.pause()};K.unpausePlayer=function(){this.player.unpause()};K.deactivatePlayer=function(){this.player.stop();this.element.removeEventListener("mouseenter",this)};K.onmouseenter=function(){if(!this.options.pauseAutoPlayOnHover){return}this.player.pause();this.element.addEventListener("mouseleave",this)};K.onmouseleave=function(){this.player.unpause();this.element.removeEventListener("mouseleave",this)};E.Player=$;const V=E;const tt=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--dot-color:#ccc;--dot-color-active:var(--nano-color-primary, #007495);--navbtns-icon-color:var(--dot-color-active);--navbtns-bg-color:white;--navbtns-icon-color-disabled:var(--dot-color-active);--navbtns-bg-color-disabled:white;--fsbtn-icon-color:var(--dot-color-active);--fsbtn-bg-color:white;display:block;-webkit-user-select:none;user-select:none;overflow:hidden;transition:opacity 0.2s;opacity:0;max-inline-size:100vw}:host([ready]){opacity:1}.slideshow{max-block-size:100%;min-block-size:inherit;block-size:inherit;position:relative}.slideshow.not-ready{inline-size:100%;overflow:hidden}.flickity-container{opacity:0;transition:opacity 0.2s;display:flex;inline-size:-moz-fit-content;inline-size:fit-content;block-size:-moz-fit-content;block-size:fit-content}.not-ready .flickity-container{inline-size:-moz-fit-content;inline-size:fit-content;block-size:-moz-fit-content;block-size:fit-content}.flickity-container.slides-ready{min-block-size:inherit;max-block-size:inherit;block-size:inherit;inline-size:auto}[hidden]{display:none !important}.ui-extras{pointer-events:none;position:absolute;block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0}.ui-extras *{pointer-events:all}/*! Flickity v2.2.1\nhttps://flickity.metafizzy.co\n---------------------------------------------- */.flickity-enabled{position:relative;opacity:1}.flickity-enabled:focus{outline:none}.flickity-viewport{overflow:hidden;position:relative;min-block-size:100%;flex:1}.flickity-slider{position:absolute;inline-size:100%;block-size:100%}.flickity-enabled.is-draggable{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.flickity-enabled.is-draggable .flickity-viewport{cursor:move;cursor:grab;cursor:grab}.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down{cursor:grabbing}.flickity-button{position:absolute;background:var(--navbtns-bg-color);border:none;color:#333;opacity:0.75}.flickity-button:hover{opacity:1;cursor:pointer}.flickity-button:focus{outline:none;box-shadow:0 0 0 5px #19f}.flickity-button:active{opacity:0.6}.flickity-button:disabled{opacity:0.3;cursor:auto;pointer-events:none;background:var(--navbtns-bg-color-disabled)}.flickity-button-icon{fill:var(--navbtns-icon-color)}.flickity-button:disabled .flickity-button-icon{fill:var(--navbtns-icon-color-disabled)}.flickity-prev-next-button{inset-block-start:50%;inline-size:44px;block-size:44px;border-radius:50%;transform:translateY(-50%)}.flickity-prev-next-button.previous{inset-inline-start:10px}.flickity-prev-next-button.next{inset-inline-end:10px}.flickity-rtl .flickity-prev-next-button.previous{inset-inline:auto 10px}.flickity-rtl .flickity-prev-next-button.next{inset-inline:10px auto}.flickity-prev-next-button .flickity-button-icon{position:absolute;inset-inline-start:20%;inset-block-start:20%;inline-size:60%;block-size:60%}.flickity-page-dots{position:absolute;inline-size:100%;inset-block-end:10px;padding:0;margin:0;list-style:none;text-align:center;line-height:1;z-index:4}.flickity-rtl .flickity-page-dots{direction:rtl}.flickity-page-dots .dot{display:inline-block;inline-size:10px;block-size:10px;margin-block:0;margin-inline:8px;border-radius:50%;cursor:pointer;background:var(--dot-color)}.flickity-page-dots .dot.is-selected{opacity:1;background:var(--dot-color-active)}.flickity-enabled.is-fullscreen{position:fixed;inset-inline-start:0;inset-block-start:0;inline-size:100%;block-size:100%;background:rgba(0, 0, 0, 0.9);padding-block-end:35px;z-index:100}.flickity-enabled.is-fullscreen .flickity-page-dots{inset-block-end:45px}html.is-flickity-fullscreen{overflow:hidden}.flickity-fullscreen-button{display:block;inset-inline-end:10px;inset-block-start:10px;inline-size:24px;block-size:24px;border-radius:4px;background:var(--fsbtn-bg-color);fill:var(--fsbtn-icon-color)}.flickity-rtl .flickity-fullscreen-button{inset-inline:10px auto}.flickity-fullscreen-button-exit{display:none}.flickity-enabled.is-fullscreen .flickity-fullscreen-button-exit{display:block}.flickity-enabled.is-fullscreen .flickity-fullscreen-button-view{display:none}.flickity-fullscreen-button .flickity-button-icon{position:absolute;inline-size:16px;block-size:16px;inset-inline-start:4px;inset-block-start:4px}.flickity-enabled.is-fade .flickity-slider>*{pointer-events:none;z-index:0}.flickity-enabled.is-fade .flickity-slider ::slotted(.is-selected){pointer-events:auto;z-index:1}";const it=(t,i)=>(t%i+i)%i;const st=class{constructor(s){t(this,s);this.nanoSlidesDidLoad=i(this,"nanoSlidesDidLoad",7);this.nanoSlidesReady=i(this,"nanoSlidesReady",7);this.nanoSlidesSelect=i(this,"nanoSlidesSelect",7);this.nanoSlidesChange=i(this,"nanoSlidesChange",7);this.nanoSlidesScroll=i(this,"nanoSlidesScroll",7);this.nanoSlidesTransitionEnd=i(this,"nanoSlidesTransitionEnd",7);this.nanoSlidesDragStart=i(this,"nanoSlidesDragStart",7);this.nanoSlidesDragMove=i(this,"nanoSlidesDragMove",7);this.nanoSlidesDragEnd=i(this,"nanoSlidesDragEnd",7);this.nanoSlidesTap=i(this,"nanoSlidesTap",7);this.nanoSlidesFullscreenChange=i(this,"nanoSlidesFullscreenChange",7);this.flickityReady=false;this.flickity=new Promise((t=>{this.readyflickity=t}));this.hasFullScreenModule=false;this.hasLazyLoadModule=false;this.hasDotsModule=false;this.hasFadeModule=false;this.parallax=async()=>{const t=await this.flickity;const i=t.cells;i.forEach((i=>{const s=i.element.children[0];let n=t.x;if(t.options.wrapAround&&t.cells.length>1){n=it(n,t.slideableWidth);n=n-t.slideableWidth}let e=(i.target+n)*-1/3;if(i.shift<0){e=(i.target-t.slideableWidth+n)*-1/3}else if(i.shift>0){e=(i.target+(n+t.slideableWidth))*-1/3}s.style.transform="translate3d("+e+"px, 0, 0)";const o=e*3/i.size.width*100;i.element.style.setProperty("--animation-amount",o.toString())}))};this.handleFullscreen=t=>{this.fullscreen=t;this.nanoSlidesFullscreenChange.emit(t)};this.handleSlideSelect=t=>{this.iCurrentSlide=t;this.nanoSlidesSelect.emit(t)};this.iCurrentSlide=undefined;this.slidesReady=undefined;this.didInit=false;this.options={};this.navbtns=false;this.pager=false;this.fullscreenbtn=false;this.fullscreen=false;this.animation="scroll";this.currentSlide=0;this.autoplay=false;this.ready=false}async optionsChanged(){if(this.flickityReady){const t=await this.getflickity();const i=Object.assign(t.options,this.options);await this.loadFlickityModules(i);await this.update()}}async navbtnsChanged(){Array.from(this._getRoot().querySelectorAll(".flickity-prev-next-button")).forEach((t=>{t.hidden=!this.navbtns}))}async pagerChanged(){const t=this._getRoot().querySelector(".flickity-page-dots");if(t)t.hidden=!this.pager}async fullscreenBtnChanged(){const t=this._getRoot().querySelector(".flickity-fullscreen-button");if(t)t.hidden=!this.fullscreenbtn}async fullscreenChanged(t,i){const s=await this.getflickity();if(this.fullscreen)s.viewFullscreen();else if(typeof i!=="undefined")s.exitFullscreen()}async animationChange(t,i){const[s,n]=await Promise.all([this.getflickity(),nt(this.host)]);n.forEach((t=>{t.style["left"]=undefined}));if(i==="parallax"){s.off("scroll",this.parallax);n.forEach(((t,i)=>{if(this.childrenEles&&this.childrenEles[i])this.childrenEles[i].style["transform"]=undefined}));this.update()}if(typeof i==="function"){s.off("scroll",i)}if(typeof this.animation==="function"){this.options={fade:false,percentPosition:true};s.on("scroll",this.animation);return}switch(this.animation){case"fade":this.options={fade:true,percentPosition:true};break;case"parallax":this.options={fade:false,percentPosition:true};s.on("scroll",this.parallax);break;default:this.options={fade:false,percentPosition:true};break}}currentSlideChange(){if(this.currentSlide!==this.iCurrentSlide)this.slideTo(this.currentSlide)}internalSlideChange(){this.currentSlide=this.iCurrentSlide}async autoPlayChange(){await this.stopAutoplay();if(this.autoplay){if(typeof this.autoplay==="string")this.autoplay=parseInt(this.autoplay);if(this.autoplay>0)this.startAutoplay(this.autoplay)}}async update(){const[t]=await Promise.all([this.getflickity(),nt(this.host)]);this.childrenEles=this.host.querySelectorAll("nano-slide > *");t.reloadCells();t.resize();t.reposition()}async updateAutoHeight(t){const i=document.querySelector(".flickity-viewport");if(i)i.style.transition=t+"ms"}async slideTo(t,i){const s=await this.getflickity();s.select(t,i)}async slideNext(t,i){const s=await this.getflickity();s.next(i,t)}async slidePrev(t,i){const s=await this.getflickity();s.previous(t,i)}async getActiveIndex(){const t=await this.getflickity();return t.selectedIndex}async length(){const t=await this.getflickity();return t.slides.length}async isEnd(){const t=await this.getflickity();return t.selectedIndex===t.slides.length-1}async isBeginning(){const t=await this.getflickity();return t.selectedIndex===0}async startAutoplay(t){const i=await this.getflickity();if(t)this.options={autoPlay:t};setTimeout((()=>i.playPlayer()))}async stopAutoplay(){const t=await this.getflickity();t.stopPlayer()}async lockSwipes(t){const i=await this.getflickity();i.options.draggable=!t;i.updateDraggable()}async getflickity(){return this.flickity}async reload(){this.destroyflickity();setTimeout((()=>this.initflickity()),20)}_getRoot(){return this.host.shadowRoot?this.host.shadowRoot:this.host}destroyflickity(){const t=this.syncflickity;if(t!==undefined){t.destroy();this.flickity=new Promise((t=>{this.readyflickity=t}));this.flickityReady=false;this.syncflickity=undefined;this.ready=false}this.didInit=false}async loadFlickityModules(t){if(!this.hasFullScreenModule&&t.fullscreen){await import("./fullscreen-86fa276a.js");this.hasFullScreenModule=true}if(!this.hasLazyLoadModule&&t.lazyLoad){await import("./lazyload-994232a6.js");this.hasLazyLoadModule=true}if(!this.hasDotsModule&&t.pageDots){await import("./page-dots-467ace2e.js");this.hasDotsModule=true}if(!this.hasFadeModule&&t.fade){await import("./fade-1aa7a6db.js");this.hasFadeModule=true}}async initflickity(){const t=this.normalizeOptions();await this.loadFlickityModules(t);await nt(this.host);this.flickityEl=this.flickityEl||this._getRoot().querySelector(".flickity-container");if(!this.flickityEl)return;this.slidesReady=true;if(this.flickityEl.classList.contains("flickity-enabled")){this.destroyflickity()}this.flickityEl.style.height=this.flickityEl.getBoundingClientRect().height+"px";setTimeout((()=>{this.flickityEl.style.height="";const i=new V(this.flickityEl,t);this.flickityReady=true;this.syncflickity=i;this.animationChange();this.navbtnsChanged();this.pagerChanged();this.fullscreenChanged();this.fullscreenBtnChanged();this.readyflickity(i);this.ready=true;if(!window["ResizeObserver"])return;const s=this.resizeO=new ResizeObserver((()=>{i.resize()}));s.observe(this.host)}),100)}normalizeOptions(){const t={cellSelector:"nano-slide",contain:true,prevNextButtons:true,fullscreen:this.fullscreen,accessibility:true,imagesLoaded:true,pageDots:this.pager};if(this.animation==="fade"){t.fade=true}if(this.currentSlide>0){t.initialIndex=this.currentSlide}if(this.autoplay){if(typeof this.autoplay==="string")this.autoplay=parseInt(this.autoplay);if(this.autoplay>0)t.autoPlay=this.autoplay}const i={ready:()=>{setTimeout((()=>{this.nanoSlidesReady.emit()}),20)},select:this.handleSlideSelect,change:this.nanoSlidesChange.emit,scroll:this.nanoSlidesScroll.emit,settle:this.nanoSlidesTransitionEnd.emit,dragStart:this.nanoSlidesDragStart.emit,dragMove:this.nanoSlidesDragMove.emit,dragEnd:this.nanoSlidesDragEnd.emit,staticClick:this.nanoSlidesTap.emit,fullscreenChange:this.handleFullscreen};const s=!!this.options&&!!this.options.on?this.options.on:{};const n={on:Object.assign(Object.assign({},s),i)};return Object.assign(Object.assign(Object.assign({},t),n),this.options)}componentDidLoad(){if(typeof window!=="undefined"&&window.MutationObserver){const t=this.mutationO=new MutationObserver((t=>{if(t[0].addedNodes[0]&&t[0].addedNodes[0].nodeName.toLowerCase()==="nano-slide"&&this.flickityReady){this.update()}}));t.observe(this.host,{childList:true,subtree:true})}}componentWillLoad(){this.nanoSlidesDidLoad.emit();if(!this.didInit){this.didInit=true;this.initflickity()}}disconnectedCallback(){if(this.mutationO){this.mutationO.disconnect();this.mutationO=undefined}if(this.resizeO)this.resizeO.disconnect();this.destroyflickity()}render(){return s(n,null,s("div",{class:{slideshow:true,ready:this.ready,"not-ready":!this.ready},part:"base"},s("div",{ref:t=>this.flickityEl=t,class:{"flickity-container":true,"slides-ready":this.slidesReady,"slides-not-ready":!this.slidesReady},part:"slide-container"},s("slot",null)),s("div",{class:"ui-extras"},s("slot",{name:"ui"}))))}get host(){return e(this)}static get watchers(){return{options:["optionsChanged"],navbtns:["navbtnsChanged"],pager:["pagerChanged"],fullscreenbtn:["fullscreenBtnChanged"],fullscreen:["fullscreenChanged"],animation:["animationChange"],currentSlide:["currentSlideChange"],iCurrentSlide:["internalSlideChange"],autoplay:["autoPlayChange"]}}};const nt=t=>{const i=Array.from(t.querySelectorAll("nano-slide"));let s=i.filter((t=>!t.ready));if(!s.length)return Promise.resolve(i);return new Promise((n=>{const e=o=>{s=s.filter((t=>t!==o.target));if(!s.length){n(i);t.removeEventListener("nanoSlideReady",e);t.removeEventListener("nano-slide-ready",e)}};t.addEventListener("nanoSlideReady",e);t.addEventListener("nano-slide-ready",e)}))};st.style=tt;export{E as F,st as S,D as U,k as u};
|
20
|
+
//# sourceMappingURL=nano-slides-9908c44d.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["EvEmitter","proto","prototype","on","eventName","listener","events","this","_events","listeners","indexOf","push","once","onceEvents","_onceEvents","onceListeners","off","length","index","splice","emitEvent","args","slice","i","isOnce","apply","allOff","getStyleSize","value","num","parseFloat","isValid","isNaN","noop","logError","console","message","error","measurements","measurementsLength","getZeroSize","size","width","height","innerWidth","innerHeight","outerWidth","outerHeight","measurement","getStyle","elem","style","getComputedStyle","isSetup","isBoxSizeOuter","setup","div","document","createElement","padding","borderStyle","borderWidth","boxSizing","body","documentElement","appendChild","Math","round","getSize","removeChild","querySelector","nodeType","display","offsetWidth","offsetHeight","isBorderBox","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","utils","extend","a","b","prop","docReady","callback","readyState","setTimeout","addEventListener","toDashed","str","replace","_match","$1","$2","toLowerCase","modulo","arraySlice","Array","makeArray","obj","isArray","undefined","isArrayLike","call","getParent","selector","parentNode","parentElement","matches","getQueryElement","handleEvent","event","method","type","filterFindElements","elems","ffElems","forEach","HTMLElement","childElems","querySelectorAll","debounceMethod","_class","methodName","threshold","timeoutName","timeout","clearTimeout","_this","window","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","attr","getAttribute","options","JSON","parse","className","Cell","parent","element","create","position","setAttribute","x","shift","from","destroy","unselect","side","originSide","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","target","cellAlign","getPositionValue","select","classList","add","removeAttribute","remove","wrapShift","slideableWidth","Slide","isOriginLeft","cells","addCell","cell","max","beginMargin","firstMargin","endMargin","lastCell","getLastCell","lastMargin","slideWidth","getCellElements","map","startAnimation","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","requestAnimationFrame","animateFrame","wrapAround","shiftWrapCells","setTranslateX","dispatchScrollEvent","_is3d","cursorPosition","rightToLeft","translateX","slider","transform","firstSlide","slides","positionX","progress","slidesWidth","dispatchEvent","positionSliderAtSelected","selectedSlide","velocity","percentPosition","isPointerDown","isFreeScrolling","selectedIndex","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","cellShift","_unshiftCells","getFrictionFactor","applyForce","force","getRestingPosition","isDraggable","dragVelocity","dragX","dragForce","dragDown","distance","selectedAttraction","moveElements","toElem","GUID","instances","Flickity","queryElement","flickityGUID","instance","option","constructor","defaults","_create","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","resize","setGallerySize","createMethods","id","guid","viewport","part","_createSlider","watchCSS","activate","opts","isActive","cellElems","children","reloadCells","tabIndex","selectInitialIndex","isInitActivated","_filterFindCellElements","cellSelector","_makeCells","getRootNode","host","positionCells","_getWrapShiftCells","cellElem","getLastSlide","_sizeCells","_positionCells","maxCellHeight","cellX","startCell","len","updateSlides","_containSlides","slide","nextMargin","canCellFit","_getCanCellFit","updateSelectedSlide","groupCells","number","parseInt","percentMatch","match","percent","_i","_init","reposition","setCellAlign","cellAlignShorthands","center","left","right","shorthand","adaptiveHeight","gapX","cellIndex","_getGapCells","increment","contain","isRightToLeft","contentWidth","isContentSmaller","beginBound","endBound","min","emitArgs","isWrap","isInstant","_wrapSelect","prevIndex","isWrapping","wrapIndex","delta","abs","backWrapDelta","forewardWrapDelta","isDragSelect","previous","next","unselectSelectedSlide","selectedCells","selectedElements","selectedCell","selectedElement","initialIndex","queryCell","selectCell","getCellSlideIndex","getCell","getCells","getParentCell","getAdjacentCellElements","adjCount","slideIndex","uiChange","childUIPointerDown","preventDefault","focus","onresize","watchOption","afterContent","content","deactivate","onkeydown","isNotFocused","activeElement","handler","keyboardHandlers","keyCode","leftMethod","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","removeEventListener","animatePrototype","data","Unipointer","pointerProto","Object","bindStartEvent","_bindStartEvent","unbindStartEvent","isAdd","bindMethod","startEvent","PointerEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","button","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointer","pointerId","pointerDown","_bindPostStartEvents","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","pointerMove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerUp","_pointerReset","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","getPointerPoint","pageX","y","pageY","Unidragger","draggerProto","bindHandles","_bindHandles","unbindHandles","touchAction","_touchActionValue","handles","handle","isOkay","okayPointerDown","pointerDownPointer","pointerDownBlur","cursorNodes","TEXTAREA","INPUT","SELECT","OPTION","clickTypes","radio","checkbox","submit","image","file","isCursorNode","nodeName","isClickType","focused","canBlur","blur","moveVector","_dragPointerMove","_dragMove","isDragging","hasDragStarted","_dragStart","_dragPointerUp","_dragEnd","_staticClick","isPreventingClicks","dragStart","dragMove","bind","dragEnd","onclick","isIgnoringMouseUp","staticClick","draggable","dragThreshold","isTouch","isTouchmoveScrollCanceled","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","bindDrag","unbindDrag","_pointerDownDefault","_pointerDownPreventDefault","pointerDownFocus","pointerDownScroll","getScrollPosition","focusNodes","isFocusNode","isTouchStart","isTouchPointer","pointerType","isTouchScrolling","dragStartPosition","previousDragX","direction","originBound","dragMoveTime","Date","freeScroll","dragEndRestingSelect","restingX","dragEndBoostSelect","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","d","md","isWrapAround","wrap","floor","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","svgURI","PrevNextButton","shadowRoot","isEnabled","isPrevious","leftDirection","isLeft","disable","slot","name","assignedElements","flatten","ele","svg","createSVG","update","createElementNS","path","pathMovements","getArrowMovements","arrowShape","shape","x0","x1","y1","x2","y2","x3","enable","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","isPageHidden","hidden","tick","time","autoPlay","clear","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","flickity","slidesCss","Slides","flickityReady","Promise","resolve","readyflickity","hasFullScreenModule","hasLazyLoadModule","hasDotsModule","hasFadeModule","parallax","async","flkty","flkX","animAmount","setProperty","toString","handleFullscreen","isFullScreen","fullscreen","nanoSlidesFullscreenChange","emit","handleSlideSelect","iCurrentSlide","nanoSlidesSelect","getflickity","newOpts","assign","loadFlickityModules","_getRoot","btn","navbtns","dots","pager","fullscreenbtn","_","oldFs","viewFullscreen","exitFullscreen","oldAnim","all","waitForSlides","childrenEles","animation","fade","currentSlideChange","currentSlide","slideTo","internalSlideChange","stopAutoplay","autoplay","startAutoplay","speed","vp","transition","instant","lock","destroyflickity","initflickity","syncflickity","ready","didInit","import","lazyLoad","pageDots","finalOptions","normalizeOptions","flickityEl","slidesReady","contains","getBoundingClientRect","flick","animationChange","navbtnsChanged","pagerChanged","fullscreenChanged","fullscreenBtnChanged","ro","resizeO","ResizeObserver","observe","flickityOptions","imagesLoaded","eventOptions","nanoSlidesReady","change","nanoSlidesChange","nanoSlidesScroll","nanoSlidesTransitionEnd","nanoSlidesDragStart","nanoSlidesDragMove","nanoSlidesDragEnd","nanoSlidesTap","fullscreenChange","customEvents","mergedEventOptions","componentDidLoad","MutationObserver","mut","mutationO","e","addedNodes","childList","subtree","componentWillLoad","nanoSlidesDidLoad","disconnectedCallback","disconnect","render","h","Host","class","slideshow","ref","allSlides","toLoadSlides","filter","slideResolver","ev"],"sources":["./src/components/slides/lib/js/utils/event-emitter.ts","./src/components/slides/lib/js/utils/get-size.ts","./src/components/slides/lib/js/utils/utils.ts","./src/components/slides/lib/js/cell.ts","./src/components/slides/lib/js/slide.ts","./src/components/slides/lib/js/animate.ts","./src/components/slides/lib/js/flickity.ts","./src/components/slides/lib/js/utils/gestures.ts","./src/components/slides/lib/js/drag.ts","./src/components/slides/lib/js/prev-next-button.ts","./src/components/slides/lib/js/player.ts","./src/components/slides/lib/js/index.ts","./src/components/slides/slides.scss?tag=nano-slides&encapsulation=shadow","./src/components/slides/slides.tsx"],"sourcesContent":["export function EvEmitter() {}\n\nconst proto = EvEmitter.prototype;\n\nproto.on = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n }\n // set events hash\n const events = (this._events = this._events || {});\n // set listeners array\n const listeners = (events[eventName] = events[eventName] || []);\n // only add once\n if (listeners.indexOf(listener) == -1) {\n listeners.push(listener);\n }\n\n return this;\n};\n\nproto.once = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n }\n // add event\n this.on(eventName, listener);\n // set once flag\n // set onceEvents hash\n const onceEvents = (this._onceEvents = this._onceEvents || {});\n // set onceListeners object\n const onceListeners = (onceEvents[eventName] = onceEvents[eventName] || {});\n // set flag\n onceListeners[listener] = true;\n\n return this;\n};\n\nproto.off = function (eventName, listener) {\n const listeners = this._events && this._events[eventName];\n if (!listeners || !listeners.length) {\n return;\n }\n const index = listeners.indexOf(listener);\n if (index != -1) {\n listeners.splice(index, 1);\n }\n\n return this;\n};\n\nproto.emitEvent = function (eventName, args) {\n let listeners = this._events && this._events[eventName];\n if (!listeners || !listeners.length) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n const onceListeners = this._onceEvents && this._onceEvents[eventName];\n\n for (let i = 0; i < listeners.length; i++) {\n const listener = listeners[i];\n const isOnce = onceListeners && onceListeners[listener];\n if (isOnce) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off(eventName, listener);\n // unset once flag\n delete onceListeners[listener];\n }\n // trigger listener\n listener.apply(this, args);\n }\n\n return this;\n};\n\nproto.allOff = function () {\n delete this._events;\n delete this._onceEvents;\n};\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n// get a number from a string, not a percentage\nfunction getStyleSize(value): number | boolean {\n const num = parseFloat(value);\n // not a percent like '100%', and a number\n const isValid = value.indexOf('%') == -1 && !isNaN(num);\n return isValid && num;\n}\n\nfunction noop() {}\n\nconst logError =\n typeof console == 'undefined'\n ? noop\n : function (message) {\n console.error(message);\n };\n\n// -------------------------- measurements -------------------------- //\n\nconst measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth',\n];\n\nconst measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n const size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0,\n };\n for (let i = 0; i < measurementsLength; i++) {\n const measurement = measurements[i];\n size[measurement] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n * @param elem element to get styles for\n * @returns {CSSStyleDeclaration} styles of element\n */\nfunction getStyle(elem) {\n const style = getComputedStyle(elem);\n if (!style) {\n logError(\n 'Style returned ' +\n style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1'\n );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nlet isSetup = false;\n\nlet isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if (isSetup) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n const div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n const body = document.body || document.documentElement;\n body.appendChild(div);\n const style = getStyle(div);\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round(getStyleSize(style.width) as number) == 200;\n // @ts-ignore\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild(div);\n}\n\n// -------------------------- getSize -------------------------- //\n\nexport function getSize(elem) {\n setup();\n\n // use querySeletor if elem is string\n if (typeof elem == 'string') {\n elem = document.querySelector(elem);\n }\n\n // do not proceed on non-objects\n if (!elem || typeof elem != 'object' || !elem.nodeType) {\n return;\n }\n\n const style = getStyle(elem);\n\n // if hidden, everything is 0\n if (style.display == 'none') {\n return getZeroSize();\n }\n\n const size: any = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n const isBorderBox = (size.isBorderBox = style.boxSizing == 'border-box');\n\n // get all measurements\n for (let i = 0; i < measurementsLength; i++) {\n const measurement = measurements[i];\n const value = style[measurement];\n const num = parseFloat(value);\n // any 'auto', 'medium' value will be 0\n size[measurement] = !isNaN(num) ? num : 0;\n }\n\n const paddingWidth = size.paddingLeft + size.paddingRight;\n const paddingHeight = size.paddingTop + size.paddingBottom;\n const marginWidth = size.marginLeft + size.marginRight;\n const marginHeight = size.marginTop + size.marginBottom;\n const borderWidth = size.borderLeftWidth + size.borderRightWidth;\n const borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n const isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n const styleWidth = getStyleSize(style.width);\n if (styleWidth !== false) {\n size.width =\n styleWidth +\n // add padding and border unless it's already including it\n (isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth);\n }\n\n const styleHeight = getStyleSize(style.height);\n if (styleHeight !== false) {\n size.height =\n styleHeight +\n // add padding and border unless it's already including it\n (isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight);\n }\n\n size.innerWidth = size.width - (paddingWidth + borderWidth);\n size.innerHeight = size.height - (paddingHeight + borderHeight);\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\nexport const utils: any = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function (a, b) {\n for (const prop in b) {\n a[prop] = b[prop];\n }\n return a;\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function (callback) {\n const readyState = document.readyState;\n if (readyState == 'complete' || readyState == 'interactive') {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout(callback);\n } else {\n document.addEventListener('DOMContentLoaded', callback);\n }\n};\n\n// ----- toDashed ----- //\n\nutils.toDashed = function (str) {\n return str\n .replace(/(.)([A-Z])/g, function (_match, $1, $2) {\n return $1 + '-' + $2;\n })\n .toLowerCase();\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function (num, div) {\n return ((num % div) + div) % div;\n};\n\n// ----- makeArray ----- //\n\nconst arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function (obj) {\n if (Array.isArray(obj)) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if (obj === null || obj === undefined) {\n return [];\n }\n\n const isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if (isArrayLike) {\n // convert nodeList to array\n return arraySlice.call(obj);\n }\n\n // array of single index\n return [obj];\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function (elem: HTMLElement, selector: string) {\n while (elem.parentNode && elem != document.body) {\n elem = elem.parentElement;\n if (elem.matches(selector)) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function (elem) {\n if (typeof elem == 'string') {\n return document.querySelector(elem);\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function (event) {\n const method = 'on' + event.type;\n if (this[method]) {\n this[method](event);\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function (elems, selector) {\n // make array of elems\n elems = utils.makeArray(elems);\n const ffElems = [];\n\n elems.forEach(function (elem: HTMLElement) {\n // check that elem is an actual element\n if (!(elem instanceof HTMLElement)) {\n return;\n }\n // add elem if no selector\n if (!selector) {\n ffElems.push(elem);\n return;\n }\n // filter & find items if we have a selector\n // filter\n if (elem.matches(selector)) {\n ffElems.push(elem);\n }\n // find children\n const childElems = elem.querySelectorAll(selector);\n // concat childElems to filterFound array\n for (let i = 0; i < childElems.length; i++) {\n ffElems.push(childElems[i]);\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function (_class, methodName, threshold) {\n threshold = threshold || 100;\n // original method\n const method = _class.prototype[methodName];\n const timeoutName = methodName + 'Timeout';\n\n _class.prototype[methodName] = function (...args) {\n const timeout = this[timeoutName];\n clearTimeout(timeout);\n\n const _this = this;\n this[timeoutName] = setTimeout(function () {\n method.apply(_this, args);\n delete _this[timeoutName];\n }, threshold);\n };\n};\n\nconst console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function (WidgetClass, namespace) {\n utils.docReady(function () {\n const dashedNamespace = utils.toDashed(namespace);\n const dataAttr = 'data-' + dashedNamespace;\n const dataAttrElems = document.querySelectorAll('[' + dataAttr + ']');\n const jsDashElems = document.querySelectorAll('.js-' + dashedNamespace);\n const elems = utils\n .makeArray(dataAttrElems)\n .concat(utils.makeArray(jsDashElems));\n const dataOptionsAttr = dataAttr + '-options';\n\n elems.forEach(function (elem) {\n const attr =\n elem.getAttribute(dataAttr) || elem.getAttribute(dataOptionsAttr);\n let options;\n try {\n options = attr && JSON.parse(attr);\n } catch (error) {\n // log error, do not initialize\n if (console) {\n console.error(\n 'Error parsing ' + dataAttr + ' on ' + elem.className + ': ' + error\n );\n }\n return;\n }\n // initialize\n // @ts-ignore\n const instance = new WidgetClass(elem, options);\n });\n });\n};\n","import { getSize } from './utils/get-size';\n\nexport default function Cell(elem, parent) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nconst proto = Cell.prototype;\n\nproto.create = function () {\n this.element.style.position = 'absolute';\n this.element.setAttribute('aria-hidden', 'true');\n this.x = 0;\n this.shift = 0;\n Array.from(this.element.querySelectorAll('*')).forEach((element) => {\n (element as HTMLElement).setAttribute('tabindex', '-1');\n });\n};\n\nproto.destroy = function () {\n // reset style\n this.unselect();\n this.element.style.position = '';\n const side = this.parent.originSide;\n this.element.style[side] = '';\n};\n\nproto.getSize = function () {\n this.size = getSize(this.element);\n};\n\nproto.setPosition = function (x) {\n this.x = x;\n this.updateTarget();\n this.renderPosition(x);\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function () {\n const marginProperty =\n this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target =\n this.x +\n this.size[marginProperty] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function (x) {\n // render position of cell with in slider\n const side = this.parent.originSide;\n this.element.style[side] = this.parent.getPositionValue(x);\n};\n\nproto.select = function () {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n Array.from(this.element.querySelectorAll('*')).forEach((element) => {\n (element as HTMLElement).removeAttribute('tabindex');\n });\n};\n\nproto.unselect = function () {\n this.element.classList.remove('is-selected');\n this.element.setAttribute('aria-hidden', 'true');\n Array.from(this.element.querySelectorAll('*')).forEach((element) => {\n (element as HTMLElement).setAttribute('tabindex', '-1');\n });\n};\n\n/**\n * @param {Integer} shift - 0, 1, or -1\n **/\nproto.wrapShift = function (shift) {\n this.shift = shift;\n this.renderPosition(this.x + this.parent.slideableWidth * shift);\n};\n\nproto.remove = function () {\n this.element.parentNode.removeChild(this.element);\n};\n","export default function Slide(parent) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nconst proto = Slide.prototype;\n\nproto.addCell = function (cell) {\n this.cells.push(cell);\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max(cell.size.outerHeight, this.height);\n // first cell stuff\n if (this.cells.length == 1) {\n this.x = cell.x; // x comes from first cell\n const beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[beginMargin];\n }\n};\n\nproto.updateTarget = function () {\n const endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n const lastCell = this.getLastCell();\n const lastMargin = lastCell ? lastCell.size[endMargin] : 0;\n const slideWidth = this.outerWidth - (this.firstMargin + lastMargin);\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function () {\n return this.cells[this.cells.length - 1];\n};\n\nproto.select = function () {\n this.cells.forEach(function (cell) {\n cell.select();\n });\n};\n\nproto.unselect = function () {\n this.cells.forEach(function (cell) {\n cell.unselect();\n });\n};\n\nproto.getCellElements = function () {\n return this.cells.map(function (cell) {\n return cell.element;\n });\n};\n","import { utils } from './utils/utils';\n\nconst proto: any = {};\n\nproto.startAnimation = function () {\n if (this.isAnimating) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function () {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n const previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle(previousX);\n // animate next frame\n if (this.isAnimating) {\n const _this = this;\n requestAnimationFrame(function animateFrame() {\n _this.animate();\n });\n }\n};\n\nproto.positionSlider = function () {\n let x = this.x;\n // wrap position around\n if (this.options.wrapAround && this.cells.length > 1) {\n x = utils.modulo(x, this.slideableWidth);\n x = x - this.slideableWidth;\n this.shiftWrapCells(x);\n }\n\n this.setTranslateX(x, this.isAnimating);\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function (x, _is3d) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n const translateX = this.getPositionValue(x);\n // use 3D tranforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n // this.slider.style.transform = is3d\n // ? 'translate3d(' + translateX + ',0,0)'\n // : 'translateX(' + translateX + ')';\n\n this.slider.style.transform = 'translate3d(' + translateX + ',0,0)';\n};\n\nproto.dispatchScrollEvent = function () {\n const firstSlide = this.slides[0];\n if (!firstSlide) {\n return;\n }\n const positionX = -this.x - firstSlide.target;\n const progress = positionX / this.slidesWidth;\n this.dispatchEvent('scroll', null, [progress, positionX]);\n};\n\nproto.positionSliderAtSelected = function () {\n if (!this.cells.length) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function (position) {\n if (this.options.percentPosition) {\n // percent position, round to 2 digits, like 12.34%\n return Math.round((position / this.size.innerWidth) * 10000) * 0.01 + '%';\n } else {\n // pixel positioning\n return Math.round(position) + 'px';\n }\n};\n\nproto.settle = function (previousX) {\n // keep track of frames where x hasn't moved\n if (\n !this.isPointerDown &&\n Math.round(this.x * 100) == Math.round(previousX * 100)\n ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if (this.restingFrames > 2) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent('settle', null, [this.selectedIndex]);\n }\n};\n\nproto.shiftWrapCells = function (x) {\n // shift before cells\n const beforeGap = this.cursorPosition + x;\n this._shiftCells(this.beforeShiftCells, beforeGap, -1);\n // shift after cells\n const afterGap =\n this.size.innerWidth - (x + this.slideableWidth + this.cursorPosition);\n this._shiftCells(this.afterShiftCells, afterGap, 1);\n};\n\nproto._shiftCells = function (cells, gap, shift) {\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i];\n const cellShift = gap > 0 ? shift : 0;\n cell.wrapShift(cellShift);\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function (cells) {\n if (!cells || !cells.length) {\n return;\n }\n for (let i = 0; i < cells.length; i++) {\n cells[i].wrapShift(0);\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function () {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function (force) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function () {\n return (\n 1 - this.options[this.isFreeScrolling ? 'freeScrollFriction' : 'friction']\n );\n};\n\nproto.getRestingPosition = function () {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / (1 - this.getFrictionFactor());\n};\n\nproto.applyDragForce = function () {\n if (!this.isDraggable || !this.isPointerDown) {\n return;\n }\n // change the position to drag position by applying force\n const dragVelocity = this.dragX - this.x;\n const dragForce = dragVelocity - this.velocity;\n this.applyForce(dragForce);\n};\n\nproto.applySelectedAttraction = function () {\n // do not attract if pointer down or no slides\n const dragDown = this.isDraggable && this.isPointerDown;\n if (dragDown || this.isFreeScrolling || !this.slides.length) {\n return;\n }\n const distance = this.selectedSlide.target * -1 - this.x;\n const force = distance * this.options.selectedAttraction;\n this.applyForce(force);\n};\n\nexport default proto;\n","import { EvEmitter } from './utils/event-emitter';\nimport { getSize } from './utils/get-size';\nimport { utils } from './utils/utils';\nimport Cell from './cell';\nimport Slide from './slide';\nimport animatePrototype from './animate';\n\n// vars\nconst getComputedStyle = window.getComputedStyle;\nconst console = window.console;\n\nfunction moveElements(elems, toElem) {\n elems = utils.makeArray(elems);\n while (elems.length) {\n toElem.appendChild(elems.shift());\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nlet GUID = 0;\n// internal store of all Flickity intances\nconst instances = {};\n\nexport default function Flickity(element, options): void {\n const queryElement = utils.getQueryElement(element);\n if (!queryElement) {\n if (console) {\n console.error('Bad element for Flickity: ' + (queryElement || element));\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if (this.element.flickityGUID) {\n const instance = instances[this.element.flickityGUID];\n if (!instances[this.element.flickityGUID]) return;\n instance.option(options);\n return instance;\n }\n\n // options\n this.options = utils.extend({}, this.constructor.defaults);\n this.option(options);\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nconst proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend(proto, EvEmitter.prototype);\n\nproto._create = function () {\n // add id for Flickity.data\n const id = (this.guid = ++GUID);\n this.element.flickityGUID = id; // expando\n instances[id] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this.viewport.part.add('slide-viewport');\n this._createSlider();\n\n if (this.options.resize || this.options.watchCSS) {\n window.addEventListener('resize', this);\n }\n\n // add listeners from on option\n for (const eventName in this.options.on) {\n const listener = this.options.on[eventName];\n this.on(eventName, listener);\n }\n\n Flickity.createMethods.forEach(function (method) {\n this[method]();\n }, this);\n\n if (this.options.watchCSS) {\n this.watchCSS();\n } else {\n this.activate();\n }\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function (opts) {\n utils.extend(this.options, opts);\n};\n\nproto.activate = function () {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if (this.options.rightToLeft) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n const cellElems = this.element.children; //this._filterFindCellElements( this.element.children );\n moveElements(cellElems, this.slider);\n this.viewport.appendChild(this.slider);\n this.element.appendChild(this.viewport);\n // get cells from children\n this.reloadCells();\n\n if (this.options.accessibility) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener('keydown', this);\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function () {\n // slider element does all the positioning\n const slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[this.originSide as string] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function (elems) {\n return utils.filterFindElements(elems, this.options.cellSelector);\n};\n\n// goes through all children\nproto.reloadCells = function () {\n // collection of item elements\n this.cells = this._makeCells(\n this.slider.getRootNode().host\n ? this.slider.getRootNode().host.children\n : this.slider.children\n );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function (elems) {\n const cellElems = this._filterFindCellElements(elems);\n\n // create new Flickity for collection\n const cells = cellElems.map(function (cellElem) {\n return new Cell(cellElem, this);\n }, this);\n\n return cells;\n};\n\nproto.getLastCell = function () {\n return this.cells[this.cells.length - 1];\n};\n\nproto.getLastSlide = function () {\n return this.slides[this.slides.length - 1];\n};\n\n// positions all cells\nproto.positionCells = function () {\n // size all cells\n this._sizeCells(this.cells);\n // position all cells\n this._positionCells(0);\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function (index) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n let cellX = 0;\n // get cellX\n if (index > 0) {\n const startCell = this.cells[index - 1];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n const len = this.cells.length;\n for (let i = index; i < len; i++) {\n const cell = this.cells[i];\n cell.setPosition(cellX);\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max(cell.size.outerHeight, this.maxCellHeight);\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len\n ? this.getLastSlide().target - this.slides[0].target\n : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells\n */\nproto._sizeCells = function (cells) {\n cells.forEach(function (cell) {\n cell.getSize();\n });\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function () {\n this.slides = [];\n if (!this.cells.length) {\n return;\n }\n\n let slide = new Slide(this);\n this.slides.push(slide);\n const isOriginLeft = this.originSide == 'left';\n const nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n const canCellFit = this._getCanCellFit();\n\n this.cells.forEach(function (cell, i) {\n // just add cell if first cell in slide\n if (!slide.cells.length) {\n slide.addCell(cell);\n return;\n }\n\n const slideWidth =\n slide.outerWidth -\n slide.firstMargin +\n (cell.size.outerWidth - cell.size[nextMargin]);\n\n if (canCellFit.call(this, i, slideWidth)) {\n slide.addCell(cell);\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide(this);\n this.slides.push(slide);\n slide.addCell(cell);\n }\n }, this);\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function () {\n const groupCells = this.options.groupCells;\n if (!groupCells) {\n return function () {\n return false;\n };\n } else if (typeof groupCells == 'number') {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n // @ts-ignore\n const number = parseInt(groupCells, 10);\n return function (i) {\n return i % number !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n const percentMatch =\n typeof groupCells == 'string' && groupCells.match(/^(\\d+)%$/);\n const percent = percentMatch ? parseInt(percentMatch[1], 10) / 100 : 1;\n return function (_i, slideWidth) {\n return slideWidth <= (this.size.innerWidth + 1) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init = proto.reposition = function () {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function () {\n this.size = getSize(this.element);\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nconst cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5,\n },\n left: {\n left: 0,\n right: 1,\n },\n right: {\n right: 0,\n left: 1,\n },\n};\n\nproto.setCellAlign = function () {\n const shorthand = cellAlignShorthands[this.options.cellAlign];\n this.cellAlign = shorthand\n ? shorthand[this.originSide]\n : this.options.cellAlign;\n};\n\nproto.setGallerySize = function () {\n if (this.options.setGallerySize) {\n const height =\n this.options.adaptiveHeight && this.selectedSlide\n ? this.selectedSlide.height\n : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function () {\n // only for wrap-around\n if (!this.options.wrapAround) {\n return;\n }\n // unshift previous cells\n this._unshiftCells(this.beforeShiftCells);\n this._unshiftCells(this.afterShiftCells);\n // get before cells\n // initial gap\n let gapX = this.cursorPosition;\n const cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells(gapX, cellIndex, -1);\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells(gapX, 0, 1);\n};\n\nproto._getGapCells = function (gapX, cellIndex, increment) {\n // keep adding cells until the cover the initial gap\n const cells = [];\n while (gapX > 0) {\n const cell = this.cells[cellIndex];\n if (!cell) {\n break;\n }\n cells.push(cell);\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function () {\n if (!this.options.contain || this.options.wrapAround || !this.cells.length) {\n return;\n }\n const isRightToLeft = this.options.rightToLeft;\n const beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n const endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n const contentWidth = this.slideableWidth - this.getLastCell().size[endMargin];\n // content is less than gallery size\n const isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n const beginBound = this.cursorPosition + this.cells[0].size[beginMargin];\n const endBound = contentWidth - this.size.innerWidth * (1 - this.cellAlign);\n // contain each cell target\n this.slides.forEach(function (slide) {\n if (isContentSmaller) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max(slide.target, beginBound);\n slide.target = Math.min(slide.target, endBound);\n }\n }, this);\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function (type, event, args) {\n const emitArgs = event ? [event].concat(args) : args;\n this.emitEvent(type, emitArgs);\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function (index, isWrap, isInstant) {\n if (!this.isActive) {\n return;\n }\n index = parseInt(index, 10);\n this._wrapSelect(index);\n\n if (this.options.wrapAround || isWrap) {\n index = utils.modulo(index, this.slides.length);\n }\n // bail if invalid index\n if (!this.slides[index]) {\n return;\n }\n const prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if (isInstant) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if (this.options.adaptiveHeight) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent('select', null, [index]);\n // change event if new index\n if (index != prevIndex) {\n this.dispatchEvent('change', null, [index]);\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function (index) {\n const len = this.slides.length;\n const isWrapping = this.options.wrapAround && len > 1;\n if (!isWrapping) {\n return index;\n }\n const wrapIndex = utils.modulo(index, len);\n // go to shortest\n const delta = Math.abs(wrapIndex - this.selectedIndex);\n const backWrapDelta = Math.abs(wrapIndex + len - this.selectedIndex);\n const forewardWrapDelta = Math.abs(wrapIndex - len - this.selectedIndex);\n if (!this.isDragSelect && backWrapDelta < delta) {\n index += len;\n } else if (!this.isDragSelect && forewardWrapDelta < delta) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if (index < 0) {\n this.x -= this.slideableWidth;\n } else if (index >= len) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function (isWrap, isInstant) {\n this.select(this.selectedIndex - 1, isWrap, isInstant);\n};\n\nproto.next = function (isWrap, isInstant) {\n this.select(this.selectedIndex + 1, isWrap, isInstant);\n};\n\nproto.updateSelectedSlide = function () {\n const slide = this.slides[this.selectedIndex];\n // selectedIndex could be outside of slides, if triggered before resize()\n if (!slide) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function () {\n if (this.selectedSlide) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function () {\n const initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if (this.isInitActivated) {\n this.select(this.selectedIndex, false, true);\n return;\n }\n // select with selector string\n if (initialIndex && typeof initialIndex == 'string') {\n const cell = this.queryCell(initialIndex);\n if (cell) {\n this.selectCell(initialIndex, false, true);\n return;\n }\n }\n\n let index = 0;\n // select with number\n if (initialIndex && this.slides[initialIndex]) {\n index = initialIndex;\n }\n // select instantly\n this.select(index, false, true);\n};\n\n/**\n * select slide from number or cell element\n * @param {Element or Number} elem\n * @param { Boolean } isWrap\n * @param { Boolean } isInstant\n */\nproto.selectCell = function (elem, isWrap, isInstant) {\n // get cell\n const cell = this.queryCell(elem);\n if (!cell) {\n return;\n }\n\n const index = this.getCellSlideIndex(cell);\n this.select(index, isWrap, isInstant);\n};\n\nproto.getCellSlideIndex = function (cell) {\n // get index of slides that has cell\n for (let i = 0; i < this.slides.length; i++) {\n const slide = this.slides[i];\n const index = slide.cells.indexOf(cell);\n if (index != -1) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem\n * @returns found flickity cell\n */\nproto.getCell = function (elem) {\n // loop through cells to get the one that matches\n for (let i = 0; i < this.cells.length; i++) {\n const cell = this.cells[i];\n if (cell.element == elem) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {Element, Array, NodeList} elems\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function (elems) {\n elems = utils.makeArray(elems);\n const cells = [];\n elems.forEach(function (elem) {\n const cell = this.getCell(elem);\n if (cell) {\n cells.push(cell);\n }\n }, this);\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function () {\n return this.cells.map(function (cell) {\n return cell.element;\n });\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem\n * @returns {Flickit.Cell} cell\n */\nproto.getParentCell = function (elem) {\n // first check if elem is cell\n const cell = this.getCell(elem);\n if (cell) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent(elem, '.flickity-slider > *');\n return this.getCell(elem);\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function (adjCount, index) {\n if (!adjCount) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n const len = this.slides.length;\n if (1 + adjCount * 2 >= len) {\n return this.getCellElements();\n }\n\n let cellElems = [];\n for (let i = index - adjCount; i <= index + adjCount; i++) {\n const slideIndex = this.options.wrapAround ? utils.modulo(i, len) : i;\n const slide = this.slides[slideIndex];\n if (slide) {\n cellElems = cellElems.concat(slide.getCellElements());\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {Element, Selector String, or Number} selector\n * @returns {Flickity.Cell} found flickity cell\n */\nproto.queryCell = function (selector) {\n if (typeof selector == 'number') {\n // use number as index\n return this.cells[selector];\n }\n if (typeof selector == 'string') {\n // do not select invalid selectors from hash: #123, #/. #791\n if (selector.match(/^[#\\.]?[\\d\\/]/)) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector(selector);\n }\n // get cell from element\n return this.getCell(selector);\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function () {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function (event) {\n // HACK iOS does not allow touch events to bubble up?!\n if (event.type != 'touchstart') {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function () {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod(Flickity, 'onresize', 150);\n\nproto.resize = function () {\n if (!this.isActive) {\n return;\n }\n this.getSize();\n // wrap values\n if (this.options.wrapAround) {\n this.x = utils.modulo(this.x, this.slideableWidth);\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n const selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell(selectedElement, false, true);\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function () {\n const watchOption = this.options.watchCSS;\n if (!watchOption) {\n return;\n }\n\n const afterContent = getComputedStyle(this.element, ':after').content;\n // activate if :after { content: 'flickity' }\n if (afterContent.indexOf('flickity') != -1) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function (event) {\n // only work if element is in focus\n const isNotFocused =\n document.activeElement && document.activeElement != this.element;\n if (!this.options.accessibility || isNotFocused) {\n return;\n }\n\n const handler = Flickity.keyboardHandlers[event.keyCode];\n if (handler) {\n handler.call(this);\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function () {\n const leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[leftMethod]();\n },\n // right arrow\n 39: function () {\n const rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[rightMethod]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function () {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Browser_compatibility\n const prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if (window.pageYOffset != prevScrollY) {\n window.scrollTo(window.pageXOffset, prevScrollY);\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function () {\n if (!this.isActive) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach(function (cell) {\n cell.destroy();\n });\n this.element.removeChild(this.viewport);\n // move child elements back into element\n moveElements(this.slider.children, this.element);\n if (this.options.accessibility) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener('keydown', this);\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function () {\n this.deactivate();\n window.removeEventListener('resize', this);\n this.allOff();\n this.emitEvent('destroy');\n delete this.element.flickityGUID;\n delete instances[this.guid];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend(proto, animatePrototype);\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {Element} elem\n * @returns {Flickity} Flickity instance\n */\nFlickity.data = function (elem) {\n elem = utils.getQueryElement(elem);\n const id = elem && elem.flickityGUID;\n return id && instances[id];\n};\n\nutils.htmlInit(Flickity, 'flickity');\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n","/*!\n * Unipointer v2.4.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\nimport { EvEmitter } from './event-emitter';\n\nfunction noop() {}\n\nexport function Unipointer() {}\n\n// inherit EvEmitter\nconst pointerProto = (Unipointer.prototype = Object.create(\n EvEmitter.prototype\n));\n\npointerProto.bindStartEvent = function (elem) {\n this._bindStartEvent(elem, true);\n};\n\npointerProto.unbindStartEvent = function (elem) {\n this._bindStartEvent(elem, false);\n};\n\n/**\n * Add or remove start event\n * @param {Element} elem\n * @param {Boolean} isAdd - remove if falsey\n */\npointerProto._bindStartEvent = function (elem, isAdd) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n const bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n let startEvent = 'mousedown';\n if ('ontouchstart' in window) {\n // HACK prefer Touch Events as you can preventDefault on touchstart to\n // disable scroll in iOS & mobile Chrome metafizzy/flickity#1177\n startEvent = 'touchstart';\n } else if (window.PointerEvent) {\n // Pointer Events\n startEvent = 'pointerdown';\n }\n elem[bindMethod](startEvent, this);\n};\n\n// trigger handler methods for events\npointerProto.handleEvent = function (event) {\n const method = 'on' + event.type;\n if (this[method]) {\n this[method](event);\n }\n};\n\n// returns the touch that we're keeping track of\npointerProto.getTouch = function (touches) {\n for (let i = 0; i < touches.length; i++) {\n const touch = touches[i];\n if (touch.identifier == this.pointerIdentifier) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\npointerProto.onmousedown = function (event) {\n // dismiss clicks from right or middle buttons\n const button = event.button;\n if (button && button !== 0 && button !== 1) {\n return;\n }\n this._pointerDown(event, event);\n};\n\npointerProto.ontouchstart = function (event) {\n this._pointerDown(event, event.changedTouches[0]);\n};\n\npointerProto.onpointerdown = function (event) {\n this._pointerDown(event, event);\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\npointerProto._pointerDown = function (event, pointer) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if (event.button || this.isPointerDown) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier =\n pointer.pointerId !== undefined\n ? // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId\n : pointer.identifier;\n\n this.pointerDown(event, pointer);\n};\n\npointerProto.pointerDown = function (event, pointer) {\n this._bindPostStartEvents(event);\n this.emitEvent('pointerDown', [event, pointer]);\n};\n\n// hash of events to be bound after start event\nconst postStartEvents = {\n mousedown: ['mousemove', 'mouseup'],\n touchstart: ['touchmove', 'touchend', 'touchcancel'],\n pointerdown: ['pointermove', 'pointerup', 'pointercancel'],\n};\n\npointerProto._bindPostStartEvents = function (event) {\n if (!event) {\n return;\n }\n // get proper events to match start event\n const events = postStartEvents[event.type];\n // bind events to node\n events.forEach(function (eventName) {\n window.addEventListener(eventName, this);\n }, this);\n // save these arguments\n this._boundPointerEvents = events;\n};\n\npointerProto._unbindPostStartEvents = function () {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if (!this._boundPointerEvents) {\n return;\n }\n this._boundPointerEvents.forEach(function (eventName) {\n window.removeEventListener(eventName, this);\n }, this);\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\npointerProto.onmousemove = function (event) {\n this._pointerMove(event, event);\n};\n\npointerProto.onpointermove = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerMove(event, event);\n }\n};\n\npointerProto.ontouchmove = function (event) {\n const touch = this.getTouch(event.changedTouches);\n if (touch) {\n this._pointerMove(event, touch);\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\npointerProto._pointerMove = function (event, pointer) {\n this.pointerMove(event, pointer);\n};\n\n// public\npointerProto.pointerMove = function (event, pointer) {\n this.emitEvent('pointerMove', [event, pointer]);\n};\n\n// ----- end event ----- //\n\npointerProto.onmouseup = function (event) {\n this._pointerUp(event, event);\n};\n\npointerProto.onpointerup = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerUp(event, event);\n }\n};\n\npointerProto.ontouchend = function (event) {\n const touch = this.getTouch(event.changedTouches);\n if (touch) {\n this._pointerUp(event, touch);\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\npointerProto._pointerUp = function (event, pointer) {\n this._pointerDone();\n this.pointerUp(event, pointer);\n};\n\n// public\npointerProto.pointerUp = function (event, pointer) {\n this.emitEvent('pointerUp', [event, pointer]);\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\npointerProto._pointerDone = function () {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\npointerProto._pointerReset = function () {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\npointerProto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\npointerProto.onpointercancel = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerCancel(event, event);\n }\n};\n\npointerProto.ontouchcancel = function (event) {\n const touch = this.getTouch(event.changedTouches);\n if (touch) {\n this._pointerCancel(event, touch);\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\npointerProto._pointerCancel = function (event, pointer) {\n this._pointerDone();\n this.pointerCancel(event, pointer);\n};\n\n// public\npointerProto.pointerCancel = function (event, pointer) {\n this.emitEvent('pointerCancel', [event, pointer]);\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function (pointer) {\n return {\n x: pointer.pageX,\n y: pointer.pageY,\n };\n};\n\n/*!\n * Unidragger v2.4.0\n * Draggable base class\n * MIT license\n */\n\nexport function Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nconst draggerProto = (Unidragger.prototype = Object.create(\n Unipointer.prototype\n));\n\n// ----- bind start ----- //\n\ndraggerProto.bindHandles = function () {\n this._bindHandles(true);\n};\n\ndraggerProto.unbindHandles = function () {\n this._bindHandles(false);\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\ndraggerProto._bindHandles = function (isAdd) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n // bind each handle\n const bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n const touchAction = isAdd ? this._touchActionValue : '';\n for (let i = 0; i < this.handles.length; i++) {\n const handle = this.handles[i];\n this._bindStartEvent(handle, isAdd);\n handle[bindMethod]('click', this);\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if (window.PointerEvent) {\n handle.style.touchAction = touchAction;\n }\n }\n};\n\n// prototype so it can be overwriteable by Flickity\ndraggerProto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\ndraggerProto.pointerDown = function (event, pointer) {\n const isOkay = this.okayPointerDown(event);\n if (!isOkay) {\n return;\n }\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents(event);\n this.emitEvent('pointerDown', [event, pointer]);\n};\n\n// nodes that have text fields\nconst cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nconst clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\ndraggerProto.okayPointerDown = function (event) {\n const isCursorNode = cursorNodes[event.target.nodeName];\n const isClickType = clickTypes[event.target.type];\n const isOkay = !isCursorNode || isClickType;\n if (!isOkay) {\n this._pointerReset();\n }\n return isOkay;\n};\n\n// kludge to blur previously focused input\ndraggerProto.pointerDownBlur = function () {\n const focused = document.activeElement as HTMLElement;\n // do not blur body for IE10, metafizzy/flickity#117\n const canBlur = focused && focused.blur && focused != document.body;\n if (canBlur) {\n focused.blur();\n }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\ndraggerProto.pointerMove = function (event, pointer) {\n const moveVector = this._dragPointerMove(event, pointer);\n this.emitEvent('pointerMove', [event, pointer, moveVector]);\n this._dragMove(event, pointer, moveVector);\n};\n\n// base pointer move logic\ndraggerProto._dragPointerMove = function (event, pointer) {\n const moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY,\n };\n // start drag if pointer has moved far enough to start drag\n if (!this.isDragging && this.hasDragStarted(moveVector)) {\n this._dragStart(event, pointer);\n }\n return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\ndraggerProto.hasDragStarted = function (moveVector) {\n return Math.abs(moveVector.x) > 3 || Math.abs(moveVector.y) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\ndraggerProto.pointerUp = function (event, pointer) {\n this.emitEvent('pointerUp', [event, pointer]);\n this._dragPointerUp(event, pointer);\n};\n\ndraggerProto._dragPointerUp = function (event, pointer) {\n if (this.isDragging) {\n this._dragEnd(event, pointer);\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick(event, pointer);\n }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\ndraggerProto._dragStart = function (event, pointer) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart(event, pointer);\n};\n\ndraggerProto.dragStart = function (event, pointer) {\n this.emitEvent('dragStart', [event, pointer]);\n};\n\n// dragMove\ndraggerProto._dragMove = function (event, pointer, moveVector) {\n // do not drag if not dragging yet\n if (!this.isDragging) {\n return;\n }\n\n this.dragMove(event, pointer, moveVector);\n};\n\ndraggerProto.dragMove = function (event, pointer, moveVector) {\n event.preventDefault();\n this.emitEvent('dragMove', [event, pointer, moveVector]);\n};\n\n// dragEnd\ndraggerProto._dragEnd = function (event, pointer) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout(\n function () {\n delete this.isPreventingClicks;\n }.bind(this)\n );\n\n this.dragEnd(event, pointer);\n};\n\ndraggerProto.dragEnd = function (event, pointer) {\n this.emitEvent('dragEnd', [event, pointer]);\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\ndraggerProto.onclick = function (event) {\n if (this.isPreventingClicks) {\n event.preventDefault();\n }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\ndraggerProto._staticClick = function (event, pointer) {\n // ignore emulated mouse up clicks\n if (this.isIgnoringMouseUp && event.type == 'mouseup') {\n return;\n }\n\n this.staticClick(event, pointer);\n\n // set flag for emulated clicks 300ms after touchend\n if (event.type != 'mouseup') {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n setTimeout(\n function () {\n delete this.isIgnoringMouseUp;\n }.bind(this),\n 400\n );\n }\n};\n\ndraggerProto.staticClick = function (event, pointer) {\n this.emitEvent('staticClick', [event, pointer]);\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n","import Flickity from './flickity';\nimport { utils } from './utils/utils';\nimport { Unidragger } from './utils/gestures';\n\n// ----- defaults ----- //\n\nutils.extend(Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n});\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nconst proto = Flickity.prototype;\nutils.extend(proto, Unidragger.prototype);\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nconst isTouch = 'createTouch' in document;\nlet isTouchmoveScrollCanceled = false;\n\nproto._createDrag = function () {\n this.on('activate', this.onActivateDrag);\n this.on('uiChange', this._uiChangeDrag);\n this.on('deactivate', this.onDeactivateDrag);\n this.on('cellChange', this.updateDraggable);\n // TODO updateDraggable on resize? if groupCells & slides change\n // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n // #457, RubaXa/Sortable#973\n if (isTouch && !isTouchmoveScrollCanceled) {\n window.addEventListener('touchmove', function () {});\n isTouchmoveScrollCanceled = true;\n }\n};\n\nproto.onActivateDrag = function () {\n this.handles = [this.viewport];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function () {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function () {\n // disable dragging if less than 2 slides. #278\n if (this.options.draggable == '>1') {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if (this.isDraggable) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function () {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function () {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function () {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function (event, pointer) {\n if (!this.isDraggable) {\n this._pointerDownDefault(event, pointer);\n return;\n }\n const isOkay = this.okayPointerDown(event);\n if (!isOkay) {\n return;\n }\n\n this._pointerDownPreventDefault(event);\n this.pointerDownFocus(event);\n // blur\n if (document.activeElement != this.element) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener('scroll', this);\n\n this._pointerDownDefault(event, pointer);\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function (event, pointer) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents(event);\n this.dispatchEvent('pointerDown', event, [pointer]);\n};\n\nconst focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function (event) {\n const isFocusNode = focusNodes[event.target.nodeName];\n if (!isFocusNode) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function (event) {\n const isTouchStart = event.type == 'touchstart';\n const isTouchPointer = event.pointerType == 'touch';\n const isFocusNode = focusNodes[event.target.nodeName];\n if (!isTouchStart && !isTouchPointer && !isFocusNode) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function (moveVector) {\n return Math.abs(moveVector.x) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function (event, pointer) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent('pointerUp', event, [pointer]);\n this._dragPointerUp(event, pointer);\n};\n\nproto.pointerDone = function () {\n window.removeEventListener('scroll', this);\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function (event, pointer) {\n if (!this.isDraggable) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener('scroll', this);\n this.dispatchEvent('dragStart', event, [pointer]);\n};\n\nproto.pointerMove = function (event, pointer) {\n const moveVector = this._dragPointerMove(event, pointer);\n this.dispatchEvent('pointerMove', event, [pointer, moveVector]);\n this._dragMove(event, pointer, moveVector);\n};\n\nproto.dragMove = function (event, pointer, moveVector) {\n if (!this.isDraggable) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n const direction = this.options.rightToLeft ? -1 : 1;\n if (this.options.wrapAround) {\n // wrap around move. #589\n moveVector.x = moveVector.x % this.slideableWidth;\n }\n let dragX = this.dragStartPosition + moveVector.x * direction;\n\n if (!this.options.wrapAround && this.slides.length) {\n // slow drag\n const originBound = Math.max(\n -this.slides[0].target,\n this.dragStartPosition\n );\n dragX = dragX > originBound ? (dragX + originBound) * 0.5 : dragX;\n const endBound = Math.min(\n -this.getLastSlide().target,\n this.dragStartPosition\n );\n dragX = dragX < endBound ? (dragX + endBound) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent('dragMove', event, [pointer, moveVector]);\n};\n\nproto.dragEnd = function (event, pointer) {\n if (!this.isDraggable) {\n return;\n }\n if (this.options.freeScroll) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n let index = this.dragEndRestingSelect();\n\n if (this.options.freeScroll && !this.options.wrapAround) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n const restingX = this.getRestingPosition();\n this.isFreeScrolling =\n -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if (!this.options.freeScroll && index == this.selectedIndex) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select(index);\n delete this.isDragSelect;\n this.dispatchEvent('dragEnd', event, [pointer]);\n};\n\nproto.dragEndRestingSelect = function () {\n const restingX = this.getRestingPosition();\n // how far away from selected slide\n const distance = Math.abs(\n this.getSlideDistance(-restingX, this.selectedIndex)\n );\n // get closet resting going up and going down\n const positiveResting = this._getClosestResting(restingX, distance, 1);\n const negativeResting = this._getClosestResting(restingX, distance, -1);\n // use closer resting for wrap-around\n const index =\n positiveResting.distance < negativeResting.distance\n ? positiveResting.index\n : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function (restingX, distance, increment) {\n let index = this.selectedIndex;\n let minDistance = Infinity;\n const condition =\n this.options.contain && !this.options.wrapAround\n ? // if contain, keep going if distance is equal to minDistance\n function (d, md) {\n return d <= md;\n }\n : function (d, md) {\n return d < md;\n };\n while (condition(distance, minDistance)) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance(-restingX, index);\n if (distance === null) {\n break;\n }\n distance = Math.abs(distance);\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment,\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x\n * @param {Integer} index - slide index\n * @returns null or distance number\n */\nproto.getSlideDistance = function (x, index) {\n const len = this.slides.length;\n // wrap around if at least 2 slides\n const isWrapAround = this.options.wrapAround && len > 1;\n const slideIndex = isWrapAround ? utils.modulo(index, len) : index;\n const slide = this.slides[slideIndex];\n if (!slide) {\n return null;\n }\n // add distance for wrap-around slides\n const wrap = isWrapAround ? this.slideableWidth * Math.floor(index / len) : 0;\n return x - (slide.target + wrap);\n};\n\nproto.dragEndBoostSelect = function () {\n // do not boost if no previousDragX or dragMoveTime\n if (\n this.previousDragX === undefined ||\n !this.dragMoveTime ||\n // or if drag was held for 100 ms\n (new Date() as any) - this.dragMoveTime > 100\n ) {\n return 0;\n }\n\n const distance = this.getSlideDistance(-this.dragX, this.selectedIndex);\n const delta = this.previousDragX - this.dragX;\n if (distance > 0 && delta > 0) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if (distance < 0 && delta < 0) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function (event, pointer) {\n // get clickedCell, if cell was clicked\n const clickedCell = this.getParentCell(event.target);\n const cellElem = clickedCell && clickedCell.element;\n const cellIndex = clickedCell && this.cells.indexOf(clickedCell);\n this.dispatchEvent('staticClick', event, [pointer, cellElem, cellIndex]);\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function () {\n const scroll = getScrollPosition();\n const scrollMoveX = this.pointerDownScroll.x - scroll.x;\n const scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if (Math.abs(scrollMoveX) > 3 || Math.abs(scrollMoveY) > 3) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\n// ----- ----- //\n","import Flickity from './flickity';\nimport { Unipointer } from './utils/gestures';\nimport { utils } from './utils/utils';\n\n('use strict');\n\nconst svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton(direction, parent) {\n this.direction = direction;\n this.parent = parent;\n this.parentElement = this.parent.element.shadowRoot || this.parent.element;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create(Unipointer.prototype);\n\nPrevNextButton.prototype._create = function () {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n const leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n const button = (this.element = document.createElement('button'));\n button.className = 'flickity-button flickity-prev-next-button';\n button.part.add('navigation-button');\n if (this.isPrevious) {\n button.classList.add('previous');\n button.part.add('navigation-button--previous');\n } else {\n button.classList.add('next');\n button.part.add('navigation-button--next');\n }\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n button.setAttribute('type', 'button');\n // init as disabled\n this.disable();\n\n button.setAttribute('aria-label', this.isPrevious ? 'Previous' : 'Next');\n\n const slot = document.createElement('slot');\n slot.name = this.isPrevious ? 'previous-icon' : 'next-icon';\n button.appendChild(slot);\n slot.addEventListener('slotchange', () => {\n slot.assignedElements({ flatten: true }).forEach((ele) => {\n ele.removeAttribute('hidden');\n });\n });\n\n // create arrow\n const svg = this.createSVG();\n slot.appendChild(svg);\n // events\n this.parent.on('select', this.update.bind(this));\n this.on('pointerDown', this.parent.childUIPointerDown.bind(this.parent));\n};\n\nPrevNextButton.prototype.activate = function () {\n this.bindStartEvent(this.element);\n this.element.addEventListener('click', this);\n // add to DOM\n this.parentElement.appendChild(this.element);\n};\n\nPrevNextButton.prototype.deactivate = function () {\n // remove from DOM\n this.parentElement.removeChild(this.element);\n // click events\n this.unbindStartEvent(this.element);\n this.element.removeEventListener('click', this);\n};\n\nPrevNextButton.prototype.createSVG = function () {\n const svg = document.createElementNS(svgURI, 'svg');\n svg.setAttribute('class', 'flickity-button-icon');\n svg.setAttribute('viewBox', '0 0 100 100');\n svg.part.add('navigation-icon');\n const path = document.createElementNS(svgURI, 'path');\n const pathMovements = getArrowMovements(this.parent.options.arrowShape);\n path.setAttribute('d', pathMovements);\n path.setAttribute('class', 'arrow');\n // rotate arrow\n if (!this.isLeft) {\n path.setAttribute('transform', 'translate(100, 100) rotate(180) ');\n }\n svg.appendChild(path);\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements(shape) {\n // use shape as movement if string\n if (typeof shape == 'string') {\n return shape;\n }\n // create movement string\n return (\n 'M ' +\n shape.x0 +\n ',50' +\n ' L ' +\n shape.x1 +\n ',' +\n (shape.y1 + 50) +\n ' L ' +\n shape.x2 +\n ',' +\n (shape.y2 + 50) +\n ' L ' +\n shape.x3 +\n ',50 ' +\n ' L ' +\n shape.x2 +\n ',' +\n (50 - shape.y2) +\n ' L ' +\n shape.x1 +\n ',' +\n (50 - shape.y1) +\n ' Z'\n );\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function () {\n if (!this.isEnabled) {\n return;\n }\n this.parent.uiChange();\n const method = this.isPrevious ? 'previous' : 'next';\n this.parent[method]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function () {\n if (this.isEnabled) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function () {\n if (!this.isEnabled) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function () {\n // index of first or last slide, if previous or next\n const slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if (this.parent.options.wrapAround && slides.length > 1) {\n this.enable();\n return;\n }\n const lastIndex = slides.length ? slides.length - 1 : 0;\n const boundIndex = this.isPrevious ? 0 : lastIndex;\n const method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[method]();\n};\n\nPrevNextButton.prototype.destroy = function () {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend(Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60,\n y1: 50,\n x2: 70,\n y2: 40,\n x3: 30,\n },\n});\n\nFlickity.createMethods.push('_createPrevNextButtons');\nconst proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function () {\n if (!this.options.prevNextButtons) {\n return;\n }\n\n this.prevButton = new PrevNextButton(-1, this);\n this.nextButton = new PrevNextButton(1, this);\n\n this.on('activate', this.activatePrevNextButtons);\n};\n\nproto.activatePrevNextButtons = function () {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on('deactivate', this.deactivatePrevNextButtons);\n};\n\nproto.deactivatePrevNextButtons = function () {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off('deactivate', this.deactivatePrevNextButtons);\n};\n\n// @ts-ignore\nFlickity.PrevNextButton = PrevNextButton;\n","import { EvEmitter } from './utils/event-emitter';\nimport { utils } from './utils/utils';\nimport Flickity from './flickity';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player(parent) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind(this);\n this.onVisibilityPlay = this.visibilityPlay.bind(this);\n}\n\nPlayer.prototype = Object.create(EvEmitter.prototype);\n\n// start play\nPlayer.prototype.play = function () {\n if (this.state == 'playing') {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n const isPageHidden = document.hidden;\n if (isPageHidden) {\n document.addEventListener('visibilitychange', this.onVisibilityPlay);\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener('visibilitychange', this.onVisibilityChange);\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function () {\n // do not tick if not playing\n if (this.state != 'playing') {\n return;\n }\n\n let time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n const _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout(function () {\n _this.parent.next(true);\n _this.tick();\n }, time);\n};\n\nPlayer.prototype.stop = function () {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener('visibilitychange', this.onVisibilityChange);\n};\n\nPlayer.prototype.clear = function () {\n clearTimeout(this.timeout);\n};\n\nPlayer.prototype.pause = function () {\n if (this.state == 'playing') {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function () {\n // re-start play if paused\n if (this.state == 'paused') {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function () {\n const isPageHidden = document.hidden;\n this[isPageHidden ? 'pause' : 'unpause']();\n};\n\nPlayer.prototype.visibilityPlay = function () {\n this.play();\n document.removeEventListener('visibilitychange', this.onVisibilityPlay);\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend(Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n});\n\nFlickity.createMethods.push('_createPlayer');\nconst proto = Flickity.prototype;\n\nproto._createPlayer = function () {\n this.player = new Player(this);\n\n this.on('activate', this.activatePlayer);\n this.on('uiChange', this.stopPlayer);\n this.on('pointerDown', this.stopPlayer);\n this.on('deactivate', this.deactivatePlayer);\n};\n\nproto.activatePlayer = function () {\n if (!this.options.autoPlay) {\n return;\n }\n this.player.play();\n this.element.addEventListener('mouseenter', this);\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function () {\n this.player.play();\n};\n\nproto.stopPlayer = function () {\n this.player.stop();\n};\n\nproto.pausePlayer = function () {\n this.player.pause();\n};\n\nproto.unpausePlayer = function () {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function () {\n this.player.stop();\n this.element.removeEventListener('mouseenter', this);\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function () {\n if (!this.options.pauseAutoPlayOnHover) {\n return;\n }\n this.player.pause();\n this.element.addEventListener('mouseleave', this);\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function () {\n this.player.unpause();\n this.element.removeEventListener('mouseleave', this);\n};\n\n// @ts-ignore\nFlickity.Player = Player;\n","import Flickity from './flickity';\nimport './drag';\nimport './prev-next-button';\nimport './player';\n\nexport const flickity = Flickity;\n","@import '../../global/style/nano-theme/colours';\n\n:host {\n /**\n * @prop --dot-color: inactive colour of pager bullets. Default #cccccc;\n * @prop --dot-color-active: active colour of pager bullets. Default #{nano-color(primary, base)};\n *\n * @prop --navbtns-icon-color: next / prev icon color. Default var(--dot-color-active);\n * @prop --navbtns-bg-color: next / prev bg color. Default white;\n * @prop --navbtns-icon-color-disabled: next / prev icon color. Default var(--dot-color-active);\n * @prop --navbtns-bg-color-disabled: next / prev bg color. Default white;\n *\n * @prop --fsbtn-icon-color: fullscreen btn icon color. Default var(--dot-color-active);\n * @prop --fsbtn-bg-color: fullscreen bg color. Default white;\n */\n --dot-color: #ccc;\n --dot-color-active: #{nano-color(primary, base)};\n --navbtns-icon-color: var(--dot-color-active);\n --navbtns-bg-color: white;\n --navbtns-icon-color-disabled: var(--dot-color-active);\n --navbtns-bg-color-disabled: white;\n --fsbtn-icon-color: var(--dot-color-active);\n --fsbtn-bg-color: white;\n\n display: block;\n user-select: none;\n overflow: hidden;\n transition: opacity 0.2s;\n opacity: 0;\n max-inline-size: 100vw;\n}\n\n:host([ready]) {\n opacity: 1;\n}\n\n.slideshow {\n max-block-size: 100%;\n min-block-size: inherit;\n block-size: inherit;\n position: relative;\n\n &.not-ready {\n inline-size: 100%;\n overflow: hidden;\n }\n}\n\n.flickity-container {\n opacity: 0;\n transition: opacity 0.2s;\n display: flex;\n inline-size: fit-content;\n block-size: fit-content;\n\n .not-ready & {\n inline-size: fit-content;\n block-size: fit-content;\n }\n\n &.slides-ready {\n min-block-size: inherit;\n max-block-size: inherit;\n block-size: inherit;\n inline-size: auto;\n }\n}\n\n[hidden] {\n display: none !important;\n}\n\n.ui-extras {\n pointer-events: none;\n position: absolute;\n block-size: 100%;\n inline-size: 100%;\n inset-block-start: 0;\n inset-inline-start: 0;\n\n * {\n pointer-events: all;\n }\n}\n\n/*! Flickity v2.2.1\nhttps://flickity.metafizzy.co\n---------------------------------------------- */\n\n.flickity-enabled {\n position: relative;\n opacity: 1;\n}\n\n.flickity-enabled:focus {\n outline: none;\n}\n\n.flickity-viewport {\n overflow: hidden;\n position: relative;\n min-block-size: 100%;\n flex: 1;\n}\n\n.flickity-slider {\n position: absolute;\n inline-size: 100%;\n block-size: 100%;\n}\n\n/* draggable */\n\n.flickity-enabled.is-draggable {\n -webkit-tap-highlight-color: transparent;\n user-select: none;\n}\n\n.flickity-enabled.is-draggable .flickity-viewport {\n cursor: move;\n cursor: grab;\n cursor: grab;\n}\n\n.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down {\n cursor: grabbing;\n}\n\n/* ---- flickity-button ---- */\n\n.flickity-button {\n position: absolute;\n background: var(--navbtns-bg-color);\n border: none;\n color: #333;\n opacity: 0.75;\n}\n\n.flickity-button:hover {\n opacity: 1;\n cursor: pointer;\n}\n\n.flickity-button:focus {\n outline: none;\n box-shadow: 0 0 0 5px #19f;\n}\n\n.flickity-button:active {\n opacity: 0.6;\n}\n\n.flickity-button:disabled {\n opacity: 0.3;\n cursor: auto;\n\n /* prevent disabled button from capturing pointer up event. #716 */\n pointer-events: none;\n background: var(--navbtns-bg-color-disabled);\n}\n\n.flickity-button-icon {\n fill: var(--navbtns-icon-color);\n}\n\n.flickity-button:disabled .flickity-button-icon {\n fill: var(--navbtns-icon-color-disabled);\n}\n\n/* ---- previous/next buttons ---- */\n\n.flickity-prev-next-button {\n inset-block-start: 50%;\n inline-size: 44px;\n block-size: 44px;\n border-radius: 50%;\n\n /* vertically center */\n transform: translateY(-50%);\n}\n\n.flickity-prev-next-button.previous {\n inset-inline-start: 10px;\n}\n\n.flickity-prev-next-button.next {\n inset-inline-end: 10px;\n}\n\n/* right to left */\n.flickity-rtl .flickity-prev-next-button.previous {\n inset-inline: auto 10px;\n}\n\n.flickity-rtl .flickity-prev-next-button.next {\n inset-inline: 10px auto;\n}\n\n.flickity-prev-next-button .flickity-button-icon {\n position: absolute;\n inset-inline-start: 20%;\n inset-block-start: 20%;\n inline-size: 60%;\n block-size: 60%;\n}\n\n/* ---- page dots ---- */\n\n.flickity-page-dots {\n position: absolute;\n inline-size: 100%;\n inset-block-end: 10px;\n padding: 0;\n margin: 0;\n list-style: none;\n text-align: center;\n line-height: 1;\n z-index: 4;\n}\n\n.flickity-rtl .flickity-page-dots {\n direction: rtl;\n}\n\n.flickity-page-dots .dot {\n display: inline-block;\n inline-size: 10px;\n block-size: 10px;\n margin-block: 0;\n margin-inline: 8px;\n border-radius: 50%;\n cursor: pointer;\n background: var(--dot-color);\n\n // Pagination Bullets\n // --------------------------------------------------\n}\n\n.flickity-page-dots .dot.is-selected {\n opacity: 1;\n background: var(--dot-color-active);\n}\n\n// fullscreen\n\n.flickity-enabled.is-fullscreen {\n position: fixed;\n inset-inline-start: 0;\n inset-block-start: 0;\n inline-size: 100%;\n block-size: 100%;\n background: hsl(0deg 0% 0% / 90%);\n padding-block-end: 35px;\n z-index: 100;\n}\n\n.flickity-enabled.is-fullscreen .flickity-page-dots {\n inset-block-end: 45px;\n}\n\n/* prevent page scrolling when flickity is fullscreen */\nhtml.is-flickity-fullscreen {\n overflow: hidden;\n}\n\n/* ---- flickity-fullscreen-button ---- */\n\n.flickity-fullscreen-button {\n display: block;\n inset-inline-end: 10px;\n inset-block-start: 10px;\n inline-size: 24px;\n block-size: 24px;\n border-radius: 4px;\n background: var(--fsbtn-bg-color);\n fill: var(--fsbtn-icon-color);\n}\n\n/* right-to-left */\n.flickity-rtl .flickity-fullscreen-button {\n inset-inline: 10px auto;\n}\n\n.flickity-fullscreen-button-exit {\n display: none;\n}\n\n.flickity-enabled.is-fullscreen .flickity-fullscreen-button-exit {\n display: block;\n}\n\n.flickity-enabled.is-fullscreen .flickity-fullscreen-button-view {\n display: none;\n}\n\n.flickity-fullscreen-button .flickity-button-icon {\n position: absolute;\n inline-size: 16px;\n block-size: 16px;\n inset-inline-start: 4px;\n inset-block-start: 4px;\n}\n\n// fade\n\n/* flickity-fade */\n\n.flickity-enabled.is-fade .flickity-slider > * {\n pointer-events: none;\n z-index: 0;\n}\n\n.flickity-enabled.is-fade .flickity-slider ::slotted(.is-selected) {\n pointer-events: auto;\n z-index: 1;\n}\n","import {\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Prop,\n h,\n Host,\n Watch,\n Method,\n State,\n Build,\n} from '@stencil/core';\nimport { flickity } from './lib/js';\nimport type {\n FlickityOptions,\n FlickityEvents,\n Flickity,\n DragEvent,\n SlideAnimation,\n FlickityCell,\n} from '../../interface';\n\nconst modulo = (num, div) => {\n return ((num % div) + div) % div;\n};\n\n/**\n * The Slides component is a multi-section container. Each section can be swiped or dragged between.\n * It contains any number of Slide components.\n *\n * Uses [Flickity](https://flickity.metafizzy.co/) under the hood.\n *\n * @part base - Wrapper around slides and additional ui elements.\n * @part slide-container - Wraps all slide elements.\n * @part slide-viewport - The visible, scrollable area around slide elements.\n * @part navigation-button - Next / previous navigation buttons.\n * @part navigation-button--next - the next navigation button.\n * @part navigation-button--previous - The previous navigation button.\n * @part navigation-icon - The chevron / arrow icon within a navigation button.\n * @part pagination - Wraps pagination indicators.\n * @part pagination-item - A pagination indicator.\n * @part pagination-item--active - The current, active pagination indicator.\n *\n * @slot - default slot of nano-slide components.\n * @slot ui - An absolutely positioned element that will be placed over the slider. Any custom ui can be housed here.\n * @slot next-icon - Optional next icon to use instead of the default.\n * @slot previous-icon - Optional previous icon to use instead of the default.\n */\n@Component({\n tag: 'nano-slides',\n styleUrl: 'slides.scss',\n shadow: true,\n})\nexport class Slides implements ComponentInterface {\n private flickityEl: HTMLElement;\n private flickityReady = false;\n private mutationO?: MutationObserver;\n private resizeO?: ResizeObserver;\n private readyflickity!: (slider: Flickity) => void;\n private flickity: Promise<Flickity> = new Promise((resolve) => {\n this.readyflickity = resolve;\n });\n private syncflickity?: Flickity;\n private childrenEles: NodeList;\n private hasFullScreenModule = false;\n private hasLazyLoadModule = false;\n private hasDotsModule = false;\n private hasFadeModule = false;\n\n @State() iCurrentSlide: number;\n @State() slidesReady: boolean;\n @State() didInit = false;\n\n @Element() host!: HTMLNanoSlidesElement;\n\n /**\n * Options to pass to the flickity instance.\n * See https://flickity.metafizzy.co/options.html for valid options\n */\n @Prop({ mutable: true }) options: FlickityOptions = {};\n\n @Watch('options')\n async optionsChanged() {\n if (this.flickityReady) {\n const flickity = await this.getflickity();\n const newOpts = Object.assign(flickity.options, this.options);\n\n await this.loadFlickityModules(newOpts);\n await this.update();\n }\n }\n\n /** If `true`, show the next / prev buttons. */\n @Prop() navbtns = false;\n\n @Watch('navbtns')\n async navbtnsChanged() {\n Array.from(\n this._getRoot().querySelectorAll('.flickity-prev-next-button')\n ).forEach((btn) => {\n (btn as HTMLElement).hidden = !this.navbtns;\n });\n }\n\n /** If `true`, show the pagination. */\n @Prop() pager = false;\n\n @Watch('pager')\n async pagerChanged() {\n const dots = this._getRoot().querySelector(\n '.flickity-page-dots'\n ) as HTMLElement;\n if (dots) dots.hidden = !this.pager;\n }\n\n /** If `true`, show a fullscreen button. */\n @Prop() fullscreenbtn = false;\n\n @Watch('fullscreenbtn')\n async fullscreenBtnChanged() {\n const btn = this._getRoot().querySelector(\n '.flickity-fullscreen-button'\n ) as HTMLElement;\n if (btn) btn.hidden = !this.fullscreenbtn;\n }\n\n /** If `true`, make the slider fullscreen. */\n @Prop({ reflect: true, mutable: true }) fullscreen = false;\n\n @Watch('fullscreen')\n async fullscreenChanged(_?, oldFs?: boolean) {\n const flickity = await this.getflickity();\n if (this.fullscreen) flickity.viewFullscreen();\n else if (typeof oldFs !== 'undefined') flickity.exitFullscreen();\n }\n\n /** Animation presets or your own custom animation function; called every frame during scroll */\n @Prop({ reflect: true }) animation: SlideAnimation = 'scroll';\n\n @Watch('animation')\n async animationChange(_?, oldAnim?: SlideAnimation) {\n const [flkty, slides] = await Promise.all([\n this.getflickity(),\n waitForSlides(this.host),\n ]);\n\n // clear old stuff\n slides.forEach((slide) => {\n slide.style['left'] = undefined;\n });\n\n if (oldAnim === 'parallax') {\n flkty.off('scroll', this.parallax);\n slides.forEach((_, i) => {\n if (this.childrenEles && this.childrenEles[i])\n (this.childrenEles[i] as HTMLElement).style['transform'] = undefined;\n });\n this.update();\n }\n // was a custom animation\n if (typeof oldAnim === 'function') {\n flkty.off('scroll', oldAnim);\n }\n\n // is a custom animation\n if (typeof this.animation === 'function') {\n this.options = { fade: false, percentPosition: true };\n flkty.on('scroll', this.animation);\n return;\n }\n\n // setup new stuff\n switch (this.animation) {\n case 'fade':\n this.options = { fade: true, percentPosition: true };\n break;\n case 'parallax':\n this.options = { fade: false, percentPosition: true };\n flkty.on('scroll', this.parallax);\n break;\n default:\n this.options = { fade: false, percentPosition: true };\n break;\n }\n }\n\n /** Zero-based index of the selected cell. */\n @Prop({ reflect: true, mutable: true }) currentSlide: number = 0;\n\n @Watch('currentSlide')\n currentSlideChange() {\n if (this.currentSlide !== this.iCurrentSlide)\n this.slideTo(this.currentSlide);\n }\n\n @Watch('iCurrentSlide')\n internalSlideChange() {\n this.currentSlide = this.iCurrentSlide;\n }\n\n /** time duration, in ms, to automatically advance slides */\n @Prop() autoplay: string | false | number = false;\n\n @Watch('autoplay')\n async autoPlayChange() {\n await this.stopAutoplay();\n if (this.autoplay) {\n if (typeof this.autoplay === 'string')\n this.autoplay = parseInt(this.autoplay);\n if (this.autoplay > 0) this.startAutoplay(this.autoplay as number);\n }\n }\n\n /** @internal */\n @Prop({ reflect: true, mutable: true }) ready = false;\n\n /** Emitted after component initialisation. */\n @Event() nanoSlidesDidLoad!: EventEmitter<void>;\n\n /** Emitted after flickity initialisation. */\n @Event() nanoSlidesReady!: EventEmitter<void>;\n\n /** Emitted when a slide is selected, even on the same slide. */\n @Event() nanoSlidesSelect!: EventEmitter<number>;\n\n /** Emitted when the selected slide is changed. */\n @Event() nanoSlidesChange!: EventEmitter<number>;\n\n /** Emitted when the slider moves. */\n @Event() nanoSlidesScroll!: EventEmitter<number>;\n\n /** Emitted when the slide transition has finished. */\n @Event() nanoSlidesTransitionEnd!: EventEmitter<number>;\n\n /** Emitted when the slider starts actively being moved. */\n @Event() nanoSlidesDragStart!: EventEmitter<DragEvent>;\n\n /** Emitted when the slider is being dragged. */\n @Event() nanoSlidesDragMove!: EventEmitter<DragEvent>;\n\n /** Emitted when the slider has finished being dragged. */\n @Event() nanoSlidesDragEnd!: EventEmitter<DragEvent>;\n\n /** Emitted when the user taps/clicks on the slide's container. */\n @Event() nanoSlidesTap!: EventEmitter<DragEvent>;\n\n /** Emitted when the user taps/clicks on the slide's container. */\n @Event() nanoSlidesFullscreenChange!: EventEmitter<boolean>;\n\n /**\n * Update the underlying flickity implementation. Call this if you've added or removed\n * child slides.\n */\n @Method()\n async update() {\n const [flickity] = await Promise.all([\n this.getflickity(),\n waitForSlides(this.host),\n ]);\n this.childrenEles = this.host.querySelectorAll('nano-slide > *');\n flickity.reloadCells();\n flickity.resize();\n flickity.reposition();\n }\n\n /**\n * Force flickity to update its height (when adaptiveHeight is enabled) for the duration\n * equal to 'speed' parameter.\n *\n * @param speed The transition duration (in ms).\n */\n @Method()\n async updateAutoHeight(speed?: number) {\n const vp = document.querySelector('.flickity-viewport') as HTMLElement;\n if (vp) vp.style.transition = speed + 'ms';\n }\n\n /**\n * Transition to the specified slide.\n *\n * @param index The index of the slide to transition to.\n * @param instant Immediately view the selected slide without animation.\n */\n @Method()\n async slideTo(index: number, instant?: boolean) {\n const flickity = await this.getflickity();\n flickity.select(index, instant);\n }\n\n /**\n * Transition to the next slide.\n *\n * @param instant The transition duration (in ms).\n * @param wrap If true, the first slide will be selected if at the last slide.\n */\n @Method()\n async slideNext(instant?: boolean, wrap?: boolean) {\n const flickity = await this.getflickity();\n flickity.next(wrap, instant);\n }\n\n /**\n * Transition to the previous slide.\n *\n * @param instant The transition duration (in ms).\n * @param wrap If true, the last slide will be selected if at the first slide.\n */\n @Method()\n async slidePrev(instant?: boolean, wrap?: boolean) {\n const flickity = await this.getflickity();\n flickity.previous(instant, wrap);\n }\n\n /** Get the index of the active slide. */\n @Method()\n async getActiveIndex() {\n const flickity = await this.getflickity();\n return flickity.selectedIndex;\n }\n\n /** Get the total number of slides. */\n @Method()\n async length() {\n const flickity = await this.getflickity();\n return flickity.slides.length;\n }\n\n /** Get whether or not the current slide is the last slide. */\n @Method()\n async isEnd() {\n const flickity = await this.getflickity();\n return flickity.selectedIndex === flickity.slides.length - 1;\n }\n\n /** Get whether or not the current slide is the first slide. */\n @Method()\n async isBeginning() {\n const flickity = await this.getflickity();\n return flickity.selectedIndex === 0;\n }\n\n /**\n * Start auto play.\n * @param time - optional time duration to show slides\n */\n @Method()\n async startAutoplay(time?: number) {\n const flickity = await this.getflickity();\n if (time) this.options = { autoPlay: time };\n setTimeout(() => flickity.playPlayer());\n }\n\n /** Stop auto play. */\n @Method()\n async stopAutoplay() {\n const flickity = await this.getflickity();\n flickity.stopPlayer();\n }\n\n /**\n * Lock or unlock the ability to slide to the next slide.\n *\n * @param lock If `true`, disable swiping\n */\n @Method()\n async lockSwipes(lock: boolean) {\n const flickity = await this.getflickity();\n flickity.options.draggable = !lock;\n flickity.updateDraggable();\n }\n\n /**\n * Get the flickity instance.\n * Use this to access the full flickity API.\n * See https://flickity.metafizzy.co/ for all API options.\n */\n @Method()\n async getflickity() {\n return this.flickity;\n }\n\n /**\n * Hard destroy / create.\n * Certain flickity options, you will require the instance to be re-initialised\n */\n @Method()\n async reload() {\n this.destroyflickity();\n setTimeout(() => this.initflickity(), 20);\n }\n\n private _getRoot() {\n return this.host.shadowRoot ? this.host.shadowRoot : this.host;\n }\n\n private parallax = async () => {\n const flkty = await this.flickity;\n const cells = flkty.cells as unknown as FlickityCell[];\n\n cells.forEach((cell) => {\n const ele = cell.element.children[0] as HTMLElement;\n\n let flkX = flkty.x;\n if (flkty.options.wrapAround && flkty.cells.length > 1) {\n flkX = modulo(flkX, flkty.slideableWidth);\n flkX = flkX - flkty.slideableWidth;\n }\n\n let x = ((cell.target + flkX) * -1) / 3;\n if (cell.shift < 0) {\n x = ((cell.target - flkty.slideableWidth + flkX) * -1) / 3;\n } else if (cell.shift > 0) {\n x = ((cell.target + (flkX + flkty.slideableWidth)) * -1) / 3;\n }\n ele.style.transform = 'translate3d(' + x + 'px, 0, 0)';\n\n const animAmount = ((x * 3) / cell.size.width) * 100;\n cell.element.style.setProperty(\n '--animation-amount',\n animAmount.toString()\n );\n });\n };\n\n private handleFullscreen = (isFullScreen: boolean) => {\n this.fullscreen = isFullScreen;\n this.nanoSlidesFullscreenChange.emit(isFullScreen);\n };\n\n private handleSlideSelect = (slide: number) => {\n this.iCurrentSlide = slide;\n this.nanoSlidesSelect.emit(slide);\n };\n\n private destroyflickity() {\n /**\n * We need to synchronously destroy\n * flickity otherwise it is possible\n * that it will be left in a\n * destroyed state if connectedCallback\n * is called multiple times\n */\n const flickity = this.syncflickity;\n\n if (flickity !== undefined) {\n flickity.destroy();\n this.flickity = new Promise((resolve) => {\n this.readyflickity = resolve;\n });\n this.flickityReady = false;\n this.syncflickity = undefined;\n this.ready = false;\n }\n this.didInit = false;\n }\n\n private async loadFlickityModules(opts: FlickityOptions) {\n if (!this.hasFullScreenModule && opts.fullscreen) {\n await import('./lib/js/fullscreen');\n this.hasFullScreenModule = true;\n }\n if (!this.hasLazyLoadModule && opts.lazyLoad) {\n await import('./lib/js/lazyload');\n this.hasLazyLoadModule = true;\n }\n if (!this.hasDotsModule && opts.pageDots) {\n await import('./lib/js/page-dots');\n this.hasDotsModule = true;\n }\n if (!this.hasFadeModule && opts.fade) {\n await import('./lib/js/fade');\n this.hasFadeModule = true;\n }\n }\n\n private async initflickity() {\n const finalOptions = this.normalizeOptions();\n await this.loadFlickityModules(finalOptions);\n\n // init flickity core\n await waitForSlides(this.host);\n\n this.flickityEl =\n this.flickityEl || this._getRoot().querySelector('.flickity-container');\n\n if (!this.flickityEl) return;\n\n this.slidesReady = true;\n\n if (this.flickityEl.classList.contains('flickity-enabled')) {\n this.destroyflickity();\n }\n\n this.flickityEl.style.height =\n this.flickityEl.getBoundingClientRect().height + 'px';\n\n setTimeout(() => {\n this.flickityEl.style.height = '';\n const flick = new flickity(this.flickityEl, finalOptions) as Flickity;\n this.flickityReady = true;\n this.syncflickity = flick;\n\n this.animationChange();\n this.navbtnsChanged();\n this.pagerChanged();\n this.fullscreenChanged();\n this.fullscreenBtnChanged();\n\n this.readyflickity(flick);\n this.ready = true;\n\n if (!window['ResizeObserver']) return;\n\n // just boots and braces to make sure it's the correct size oninit\n const ro = (this.resizeO = new ResizeObserver(() => {\n flick.resize();\n // this.resizeO.disconnect();\n }));\n ro.observe(this.host);\n }, 100);\n }\n\n private normalizeOptions(): FlickityOptions {\n // Base options, can be changed\n const flickityOptions: FlickityOptions = {\n cellSelector: 'nano-slide',\n contain: true,\n prevNextButtons: true,\n fullscreen: this.fullscreen,\n accessibility: true,\n imagesLoaded: true,\n pageDots: this.pager,\n };\n\n if (this.animation === 'fade') {\n flickityOptions.fade = true;\n }\n if (this.currentSlide > 0) {\n flickityOptions.initialIndex = this.currentSlide;\n }\n if (this.autoplay) {\n if (typeof this.autoplay === 'string')\n this.autoplay = parseInt(this.autoplay);\n if (this.autoplay > 0) flickityOptions.autoPlay = this.autoplay as number;\n }\n\n // Keep the event options separate, we dont want users\n // overwriting these\n const eventOptions: FlickityEvents = {\n ready: () => {\n setTimeout(() => {\n this.nanoSlidesReady.emit();\n }, 20);\n },\n select: this.handleSlideSelect,\n change: this.nanoSlidesChange.emit,\n scroll: this.nanoSlidesScroll.emit,\n settle: this.nanoSlidesTransitionEnd.emit,\n dragStart: this.nanoSlidesDragStart.emit,\n dragMove: this.nanoSlidesDragMove.emit,\n dragEnd: this.nanoSlidesDragEnd.emit,\n staticClick: this.nanoSlidesTap.emit,\n fullscreenChange: this.handleFullscreen,\n };\n\n const customEvents =\n !!this.options && !!this.options.on ? this.options.on : {};\n // merge \"on\" event listeners, while giving our event listeners priority\n const mergedEventOptions = { on: { ...customEvents, ...eventOptions } };\n // Merge the base, user options, and events together then pass to flickity\n // @ts-ignore\n return { ...flickityOptions, ...mergedEventOptions, ...this.options };\n }\n\n componentDidLoad() {\n if (\n Build.isBrowser &&\n typeof window !== 'undefined' &&\n (window as any).MutationObserver\n ) {\n const mut = (this.mutationO = new MutationObserver(\n (e: MutationRecord[]) => {\n if (\n e[0].addedNodes[0] &&\n e[0].addedNodes[0].nodeName.toLowerCase() === 'nano-slide' &&\n this.flickityReady\n ) {\n this.update();\n }\n }\n ));\n\n mut.observe(this.host, {\n childList: true,\n subtree: true,\n });\n }\n }\n\n componentWillLoad() {\n this.nanoSlidesDidLoad.emit();\n\n if (!this.didInit) {\n this.didInit = true;\n this.initflickity();\n }\n }\n\n disconnectedCallback() {\n if (this.mutationO) {\n this.mutationO.disconnect();\n this.mutationO = undefined;\n }\n if (this.resizeO) this.resizeO.disconnect();\n this.destroyflickity();\n }\n\n render() {\n return (\n <Host>\n <div\n class={{\n slideshow: true,\n ready: this.ready,\n 'not-ready': !this.ready,\n }}\n part=\"base\"\n >\n <div\n ref={(div) => (this.flickityEl = div)}\n class={{\n 'flickity-container': true,\n 'slides-ready': this.slidesReady,\n 'slides-not-ready': !this.slidesReady,\n }}\n part=\"slide-container\"\n >\n <slot />\n </div>\n <div class=\"ui-extras\">\n <slot name=\"ui\" />\n </div>\n </div>\n </Host>\n );\n }\n}\n\nconst waitForSlides = (host: HTMLElement): Promise<HTMLNanoSlideElement[]> => {\n const allSlides = Array.from(host.querySelectorAll('nano-slide'));\n let toLoadSlides = allSlides.filter(\n (ele: HTMLNanoSlideElement) => !ele.ready\n );\n\n if (!toLoadSlides.length) return Promise.resolve(allSlides);\n\n return new Promise((resolve) => {\n const slideResolver = (ev: CustomEvent) => {\n toLoadSlides = toLoadSlides.filter((ele) => ele !== ev.target);\n if (!toLoadSlides.length) {\n resolve(allSlides);\n host.removeEventListener('nanoSlideReady', slideResolver);\n host.removeEventListener('nano-slide-ready', slideResolver);\n }\n };\n host.addEventListener('nanoSlideReady', slideResolver);\n // fallback for vue who can't handle camelcase event names\n host.addEventListener('nano-slide-ready', slideResolver);\n });\n};\n"],"mappings":"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"}
|