@nanoporetech-digital/components 7.5.5 → 7.7.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/dist/cjs/{algolia-data-0447757c.js → algolia-data-ca9cd58e.js} +2 -2
- package/dist/cjs/{algolia-data-0447757c.js.map → algolia-data-ca9cd58e.js.map} +1 -1
- package/dist/cjs/app-globals-3e14cb71.js +41 -0
- package/dist/cjs/app-globals-3e14cb71.js.map +1 -0
- package/dist/cjs/{component-store-6a330cd1.js → component-store-b8d4bd91.js} +2 -2
- package/dist/cjs/{component-store-6a330cd1.js.map → component-store-b8d4bd91.js.map} +1 -1
- package/dist/cjs/{dom-756fcdac.js → dom-b99a1aec.js} +2 -2
- package/dist/cjs/{dom-756fcdac.js.map → dom-b99a1aec.js.map} +1 -1
- package/dist/cjs/{fade-2dd9dd8b.js → fade-6a5004f4.js} +4 -3
- package/dist/cjs/fade-6a5004f4.js.map +1 -0
- package/dist/cjs/form-control-5bb39cc2.js +82 -0
- package/dist/cjs/form-control-5bb39cc2.js.map +1 -0
- package/dist/cjs/{fullscreen-5d0422de.js → fullscreen-f5db9bbe.js} +4 -3
- package/dist/cjs/fullscreen-f5db9bbe.js.map +1 -0
- package/dist/cjs/{index-b6fa04fa.js → index-615cdb64.js} +4 -2
- package/dist/cjs/index-615cdb64.js.map +1 -0
- package/dist/cjs/{index-7795a8f6.js → index-a92a0379.js} +2 -2
- package/dist/cjs/{index-7795a8f6.js.map → index-a92a0379.js.map} +1 -1
- package/dist/cjs/index.cjs.js +19 -5
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{lazyload-f181cb37.js → lazyload-13d72e60.js} +4 -3
- package/dist/cjs/lazyload-13d72e60.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/nano-accordion.cjs.entry.js +8 -6
- package/dist/cjs/nano-accordion.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-alert.cjs.entry.js +12 -11
- package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +7 -5
- package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-pagination.cjs.entry.js +4 -4
- package/dist/cjs/nano-algolia-results.cjs.entry.js +6 -4
- package/dist/cjs/nano-algolia-results.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia.cjs.entry.js +14 -11
- package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-animation.cjs.entry.js +3 -2
- package/dist/cjs/nano-animation.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +6 -4
- package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-checkbox.cjs.entry.js +6 -5
- package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +6 -3
- package/dist/cjs/nano-components.cjs.js.map +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +30 -28
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-input.cjs.entry.js +7 -6
- package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-picker.cjs.entry.js +16 -15
- package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-details.cjs.entry.js +7 -6
- package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +7 -6
- package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-drawer.cjs.entry.js +9 -8
- package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dropdown.cjs.entry.js +9 -7
- package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +17 -15
- package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-file-upload.cjs.entry.js +12 -11
- package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +30 -27
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +68 -66
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +10 -6
- package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-grid-item.cjs.entry.js +2 -2
- package/dist/cjs/nano-grid_2.cjs.entry.js +6 -5
- package/dist/cjs/nano-grid_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-hero.cjs.entry.js +11 -10
- package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon-button_2.cjs.entry.js +6 -5
- package/dist/cjs/nano-icon-button_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon.cjs.entry.js +5 -3
- package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +9 -7
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-intersection-observe.cjs.entry.js +3 -2
- package/dist/cjs/nano-intersection-observe.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-menu-drawer.cjs.entry.js +10 -8
- package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-more-less.cjs.entry.js +5 -4
- package/dist/cjs/nano-more-less.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-overflow-nav.cjs.entry.js +7 -6
- package/dist/cjs/nano-overflow-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-progress-bar.cjs.entry.js +7 -4
- package/dist/cjs/nano-progress-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-range.cjs.entry.js +9 -7
- package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-rating.cjs.entry.js +10 -9
- package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +7 -6
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-slide.cjs.entry.js +3 -2
- package/dist/cjs/nano-slide.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-slides-612634dc.js → nano-slides-0a60315d.js} +15 -13
- package/dist/cjs/nano-slides-0a60315d.js.map +1 -0
- package/dist/cjs/nano-slides.cjs.entry.js +3 -2
- package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sortable.cjs.entry.js +3 -2
- package/dist/cjs/nano-sortable.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-spinner.cjs.entry.js +3 -2
- package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-split-pane.cjs.entry.js +3 -2
- package/dist/cjs/nano-split-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +6 -5
- package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-content.cjs.entry.js +5 -3
- package/dist/cjs/nano-tab-content.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +16 -14
- package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js +4 -3
- package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-b1c1383a.js → nano-table-806fa39d.js} +42 -40
- package/dist/cjs/nano-table-806fa39d.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +4 -3
- package/dist/cjs/nano-table.cjs.entry.js.map +1 -1
- package/dist/cjs/{page-dots-99dd88f6.js → page-dots-ecdd64d1.js} +4 -3
- package/dist/cjs/page-dots-ecdd64d1.js.map +1 -0
- package/dist/cjs/renderer-cd8b6098.js +63 -0
- package/dist/cjs/renderer-cd8b6098.js.map +1 -0
- package/dist/cjs/{scroll-772f7d0d.js → scroll-a3e5c6c6.js} +2 -2
- package/dist/cjs/{scroll-772f7d0d.js.map → scroll-a3e5c6c6.js.map} +1 -1
- package/dist/cjs/{table.worker-9552431f.js → table.worker-fb31c8b7.js} +5 -4
- package/dist/cjs/table.worker-fb31c8b7.js.map +1 -0
- package/dist/collection/components/accordion/accordion.js +7 -5
- package/dist/collection/components/accordion/accordion.js.map +1 -1
- package/dist/collection/components/alert/alert.helpers.js +3 -2
- package/dist/collection/components/alert/alert.helpers.js.map +1 -1
- package/dist/collection/components/alert/alert.js +8 -7
- package/dist/collection/components/alert/alert.js.map +1 -1
- package/dist/collection/components/algolia/algolia-filter.js +5 -3
- package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
- package/dist/collection/components/algolia/algolia-pagination.js +2 -2
- package/dist/collection/components/algolia/algolia-results.js +5 -3
- package/dist/collection/components/algolia/algolia-results.js.map +1 -1
- package/dist/collection/components/algolia/algolia.js +11 -8
- package/dist/collection/components/algolia/algolia.js.map +1 -1
- package/dist/collection/components/animation/animation.js +3 -2
- package/dist/collection/components/animation/animation.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox-group.js +6 -4
- package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.js +6 -5
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/datalist/datalist.css +1 -1
- package/dist/collection/components/datalist/datalist.js +14 -13
- package/dist/collection/components/datalist/datalist.js.map +1 -1
- package/dist/collection/components/date-input/date-input.css +3 -3
- package/dist/collection/components/date-input/date-input.js +6 -5
- package/dist/collection/components/date-input/date-input.js.map +1 -1
- package/dist/collection/components/date-picker/date-picker.css +3 -3
- package/dist/collection/components/date-picker/date-picker.js +5 -4
- package/dist/collection/components/date-picker/date-picker.js.map +1 -1
- package/dist/collection/components/date-picker/duet-date-picker/date-picker-day.js +1 -1
- package/dist/collection/components/date-picker/duet-date-picker/date-picker-day.js.map +1 -1
- package/dist/collection/components/date-picker/duet-date-picker/date-picker-month.js +1 -1
- package/dist/collection/components/date-picker/duet-date-picker/date-picker-month.js.map +1 -1
- package/dist/collection/components/details/details.css +1 -1
- package/dist/collection/components/details/details.js +6 -5
- package/dist/collection/components/details/details.js.map +1 -1
- package/dist/collection/components/dialog/dialog.helpers.js +2 -1
- package/dist/collection/components/dialog/dialog.helpers.js.map +1 -1
- package/dist/collection/components/dialog/dialog.js +4 -3
- package/dist/collection/components/dialog/dialog.js.map +1 -1
- package/dist/collection/components/drawer/drawer.css +1 -1
- package/dist/collection/components/drawer/drawer.js +5 -4
- package/dist/collection/components/drawer/drawer.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.css +1 -1
- package/dist/collection/components/dropdown/dropdown.js +8 -6
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/field-validator/field-validator.js +16 -14
- package/dist/collection/components/field-validator/field-validator.js.map +1 -1
- package/dist/collection/components/file-upload/file-upload.css +1 -1
- package/dist/collection/components/file-upload/file-upload.js +3 -2
- package/dist/collection/components/file-upload/file-upload.js.map +1 -1
- package/dist/collection/components/form-control/form-control.js +1 -1
- package/dist/collection/components/form-control/form-control.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav-user-profile.js +3 -2
- package/dist/collection/components/global-nav/global-nav-user-profile.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +50 -48
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-nav/style/global-nav.css +33 -33
- package/dist/collection/components/global-search-results/global-search-results.css +11 -11
- package/dist/collection/components/global-search-results/global-search-results.js +9 -5
- package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
- package/dist/collection/components/grid/grid-item.js +1 -1
- package/dist/collection/components/grid/grid.js +3 -2
- package/dist/collection/components/grid/grid.js.map +1 -1
- package/dist/collection/components/hero/hero.css +2 -2
- package/dist/collection/components/hero/hero.js +6 -5
- package/dist/collection/components/hero/hero.js.map +1 -1
- package/dist/collection/components/icon/icon.js +4 -2
- package/dist/collection/components/icon/icon.js.map +1 -1
- package/dist/collection/components/icon-button/icon-button.js +2 -2
- package/dist/collection/components/icon-button/icon-button.js.map +1 -1
- package/dist/collection/components/img/img.js +5 -4
- package/dist/collection/components/img/img.js.map +1 -1
- package/dist/collection/components/input/input.js +7 -5
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/intersection-observe/intersection-observe.js +3 -2
- package/dist/collection/components/intersection-observe/intersection-observe.js.map +1 -1
- package/dist/collection/components/menu/menu.css +1 -1
- package/dist/collection/components/menu/menu.js +12 -10
- package/dist/collection/components/menu/menu.js.map +1 -1
- package/dist/collection/components/menu-drawer/menu-drawer.css +3 -3
- package/dist/collection/components/menu-drawer/menu-drawer.js +8 -6
- package/dist/collection/components/menu-drawer/menu-drawer.js.map +1 -1
- package/dist/collection/components/more-less/more-less.js +4 -3
- package/dist/collection/components/more-less/more-less.js.map +1 -1
- package/dist/collection/components/nav-item/nav-item.css +12 -12
- package/dist/collection/components/nav-item/nav-item.js +11 -9
- package/dist/collection/components/nav-item/nav-item.js.map +1 -1
- package/dist/collection/components/option/option.css +2 -2
- package/dist/collection/components/option/option.js +4 -3
- package/dist/collection/components/option/option.js.map +1 -1
- package/dist/collection/components/overflow-nav/overflow-nav.css +4 -4
- package/dist/collection/components/overflow-nav/overflow-nav.js +5 -4
- package/dist/collection/components/overflow-nav/overflow-nav.js.map +1 -1
- package/dist/collection/components/progress-bar/progress-bar.js +7 -4
- package/dist/collection/components/progress-bar/progress-bar.js.map +1 -1
- package/dist/collection/components/range/range.js +3 -1
- package/dist/collection/components/range/range.js.map +1 -1
- package/dist/collection/components/rating/rating.css +1 -1
- package/dist/collection/components/rating/rating.js +6 -5
- package/dist/collection/components/rating/rating.js.map +1 -1
- package/dist/collection/components/resize-observe/resize-observe.js +3 -2
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.css +1 -5
- package/dist/collection/components/select/select.js +9 -7
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/skeleton/skeleton.js +4 -3
- package/dist/collection/components/skeleton/skeleton.js.map +1 -1
- package/dist/collection/components/slides/slide.js +3 -2
- package/dist/collection/components/slides/slide.js.map +1 -1
- package/dist/collection/components/slides/slides.js +10 -8
- package/dist/collection/components/slides/slides.js.map +1 -1
- package/dist/collection/components/sortable/sortable.js +3 -2
- package/dist/collection/components/sortable/sortable.js.map +1 -1
- package/dist/collection/components/spinner/spinner.js +3 -2
- package/dist/collection/components/spinner/spinner.js.map +1 -1
- package/dist/collection/components/split-pane/split-pane.js +3 -2
- package/dist/collection/components/split-pane/split-pane.js.map +1 -1
- package/dist/collection/components/sticker/sticker.js +5 -4
- package/dist/collection/components/sticker/sticker.js.map +1 -1
- package/dist/collection/components/table/table.cell.js +3 -1
- package/dist/collection/components/table/table.cell.js.map +1 -1
- package/dist/collection/components/table/table.css +2 -2
- package/dist/collection/components/table/table.header.js +2 -1
- package/dist/collection/components/table/table.header.js.map +1 -1
- package/dist/collection/components/table/table.js +9 -8
- package/dist/collection/components/table/table.js.map +1 -1
- package/dist/collection/components/table/table.row.js +1 -1
- package/dist/collection/components/table/table.row.js.map +1 -1
- package/dist/collection/components/tabs/tab-content.js +5 -3
- package/dist/collection/components/tabs/tab-content.js.map +1 -1
- package/dist/collection/components/tabs/tab-group.css +3 -3
- package/dist/collection/components/tabs/tab-group.js +12 -10
- package/dist/collection/components/tabs/tab-group.js.map +1 -1
- package/dist/collection/components/tabs/tab.js +4 -3
- package/dist/collection/components/tabs/tab.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.js +4 -3
- package/dist/collection/components/tooltip/tooltip.js.map +1 -1
- package/dist/collection/global/script/global.js +28 -23
- package/dist/collection/global/script/global.js.map +1 -1
- package/dist/collection/index.js +17 -2
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/renderer.js +54 -0
- package/dist/collection/utils/renderer.js.map +1 -0
- package/dist/components/algolia.js +11 -8
- package/dist/components/algolia.js.map +1 -1
- package/dist/components/datalist.js +19 -30
- package/dist/components/datalist.js.map +1 -1
- package/dist/components/date-picker.js +6 -5
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dropdown.js +9 -7
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/form-control.js +1 -1
- package/dist/components/form-control.js.map +1 -1
- package/dist/components/global-nav-user-profile.js +3 -2
- package/dist/components/global-nav-user-profile.js.map +1 -1
- package/dist/components/grid.js +2 -1
- package/dist/components/grid.js.map +1 -1
- package/dist/components/icon-button.js +2 -2
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/icon.js +4 -2
- package/dist/components/icon.js.map +1 -1
- package/dist/components/img.js +5 -4
- package/dist/components/img.js.map +1 -1
- package/dist/components/index.js +48 -31
- package/dist/components/index.js.map +1 -1
- package/dist/components/input.js +7 -5
- package/dist/components/input.js.map +1 -1
- package/dist/components/menu.js +13 -11
- package/dist/components/menu.js.map +1 -1
- package/dist/components/nano-accordion.js +7 -5
- package/dist/components/nano-accordion.js.map +1 -1
- package/dist/components/nano-alert.js +8 -7
- package/dist/components/nano-alert.js.map +1 -1
- package/dist/components/nano-algolia-filter.js +5 -3
- package/dist/components/nano-algolia-filter.js.map +1 -1
- package/dist/components/nano-algolia-pagination.js +2 -2
- package/dist/components/nano-algolia-results.js +5 -3
- package/dist/components/nano-algolia-results.js.map +1 -1
- package/dist/components/nano-animation.js +3 -2
- package/dist/components/nano-animation.js.map +1 -1
- package/dist/components/nano-checkbox-group.js +6 -4
- package/dist/components/nano-checkbox-group.js.map +1 -1
- package/dist/components/nano-checkbox.js +6 -5
- package/dist/components/nano-checkbox.js.map +1 -1
- package/dist/components/nano-date-input.js +7 -6
- package/dist/components/nano-date-input.js.map +1 -1
- package/dist/components/nano-details.js +7 -6
- package/dist/components/nano-details.js.map +1 -1
- package/dist/components/nano-dialog.js +4 -3
- package/dist/components/nano-dialog.js.map +1 -1
- package/dist/components/nano-drawer.js +6 -5
- package/dist/components/nano-drawer.js.map +1 -1
- package/dist/components/nano-field-validator.js +16 -14
- package/dist/components/nano-field-validator.js.map +1 -1
- package/dist/components/nano-file-upload.js +4 -3
- package/dist/components/nano-file-upload.js.map +1 -1
- package/dist/components/nano-global-nav.js +51 -49
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/nano-global-search-results.js +10 -6
- package/dist/components/nano-global-search-results.js.map +1 -1
- package/dist/components/nano-grid-item.js +1 -1
- package/dist/components/nano-hero.js +7 -6
- package/dist/components/nano-hero.js.map +1 -1
- package/dist/components/nano-intersection-observe.js +3 -2
- package/dist/components/nano-intersection-observe.js.map +1 -1
- package/dist/components/nano-menu-drawer.js +9 -7
- package/dist/components/nano-menu-drawer.js.map +1 -1
- package/dist/components/nano-more-less.js +4 -3
- package/dist/components/nano-more-less.js.map +1 -1
- package/dist/components/nano-overflow-nav.js +6 -5
- package/dist/components/nano-overflow-nav.js.map +1 -1
- package/dist/components/nano-range.js +3 -1
- package/dist/components/nano-range.js.map +1 -1
- package/dist/components/nano-rating.js +7 -6
- package/dist/components/nano-rating.js.map +1 -1
- package/dist/components/nano-slide.js +3 -2
- package/dist/components/nano-slide.js.map +1 -1
- package/dist/components/nano-slides.js +10 -8
- package/dist/components/nano-slides.js.map +1 -1
- package/dist/components/nano-sortable.js +3 -2
- package/dist/components/nano-sortable.js.map +1 -1
- package/dist/components/nano-split-pane.js +3 -2
- package/dist/components/nano-split-pane.js.map +1 -1
- package/dist/components/nano-tab-content.js +5 -3
- package/dist/components/nano-tab-content.js.map +1 -1
- package/dist/components/nano-tab-group.js +13 -11
- package/dist/components/nano-tab-group.js.map +1 -1
- package/dist/components/nano-tab.js +4 -3
- package/dist/components/nano-tab.js.map +1 -1
- package/dist/components/nano-table.js +38 -36
- package/dist/components/nano-table.js.map +1 -1
- package/dist/components/nav-item.js +12 -10
- package/dist/components/nav-item.js.map +1 -1
- package/dist/components/option.js +5 -4
- package/dist/components/option.js.map +1 -1
- package/dist/components/progress-bar.js +7 -4
- package/dist/components/progress-bar.js.map +1 -1
- package/dist/components/renderer.js +58 -0
- package/dist/components/renderer.js.map +1 -0
- package/dist/components/resize-observe.js +3 -2
- package/dist/components/resize-observe.js.map +1 -1
- package/dist/components/select.js +10 -8
- package/dist/components/select.js.map +1 -1
- package/dist/components/skeleton.js +4 -3
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/spinner.js +3 -2
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/sticker.js +5 -4
- package/dist/components/sticker.js.map +1 -1
- package/dist/components/tooltip.js +4 -3
- package/dist/components/tooltip.js.map +1 -1
- package/dist/esm/{algolia-data-8fc24341.js → algolia-data-f0f72f1d.js} +2 -2
- package/dist/esm/{algolia-data-8fc24341.js.map → algolia-data-f0f72f1d.js.map} +1 -1
- package/dist/esm/app-globals-f0120bbe.js +39 -0
- package/dist/esm/app-globals-f0120bbe.js.map +1 -0
- package/dist/esm/{component-store-b798181b.js → component-store-199a9fd8.js} +2 -2
- package/dist/esm/{component-store-b798181b.js.map → component-store-199a9fd8.js.map} +1 -1
- package/dist/esm/{dom-d7f9f24c.js → dom-fafdec9a.js} +2 -2
- package/dist/esm/{dom-d7f9f24c.js.map → dom-fafdec9a.js.map} +1 -1
- package/dist/esm/{fade-4ff5d9de.js → fade-ce1a4958.js} +4 -3
- package/dist/esm/fade-ce1a4958.js.map +1 -0
- package/dist/esm/{form-control-812999d0.js → form-control-f48fa873.js} +2 -2
- package/dist/esm/form-control-f48fa873.js.map +1 -0
- package/dist/esm/{fullscreen-382d7890.js → fullscreen-52d62028.js} +4 -3
- package/dist/esm/fullscreen-52d62028.js.map +1 -0
- package/dist/esm/{index-3118109b.js → index-6cc72cd9.js} +3 -3
- package/dist/esm/index-6cc72cd9.js.map +1 -0
- package/dist/esm/{index-d7a4a150.js → index-f5f7b950.js} +2 -2
- package/dist/esm/{index-d7a4a150.js.map → index-f5f7b950.js.map} +1 -1
- package/dist/esm/index.js +19 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{lazyload-49b745e4.js → lazyload-8ff69ba4.js} +4 -3
- package/dist/esm/lazyload-8ff69ba4.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/nano-accordion.entry.js +8 -6
- package/dist/esm/nano-accordion.entry.js.map +1 -1
- package/dist/esm/nano-alert.entry.js +10 -9
- package/dist/esm/nano-alert.entry.js.map +1 -1
- package/dist/esm/nano-algolia-filter.entry.js +7 -5
- package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
- package/dist/esm/nano-algolia-pagination.entry.js +4 -4
- package/dist/esm/nano-algolia-results.entry.js +6 -4
- package/dist/esm/nano-algolia-results.entry.js.map +1 -1
- package/dist/esm/nano-algolia.entry.js +14 -11
- package/dist/esm/nano-algolia.entry.js.map +1 -1
- package/dist/esm/nano-animation.entry.js +3 -2
- package/dist/esm/nano-animation.entry.js.map +1 -1
- package/dist/esm/nano-checkbox-group.entry.js +6 -4
- package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
- package/dist/esm/nano-checkbox.entry.js +6 -5
- package/dist/esm/nano-checkbox.entry.js.map +1 -1
- package/dist/esm/nano-components.js +7 -4
- package/dist/esm/nano-components.js.map +1 -1
- package/dist/esm/nano-datalist_3.entry.js +30 -28
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-date-input.entry.js +7 -6
- package/dist/esm/nano-date-input.entry.js.map +1 -1
- package/dist/esm/nano-date-picker.entry.js +6 -5
- package/dist/esm/nano-date-picker.entry.js.map +1 -1
- package/dist/esm/nano-details.entry.js +7 -6
- package/dist/esm/nano-details.entry.js.map +1 -1
- package/dist/esm/nano-dialog.entry.js +7 -6
- package/dist/esm/nano-dialog.entry.js.map +1 -1
- package/dist/esm/nano-drawer.entry.js +9 -8
- package/dist/esm/nano-drawer.entry.js.map +1 -1
- package/dist/esm/nano-dropdown.entry.js +9 -7
- package/dist/esm/nano-dropdown.entry.js.map +1 -1
- package/dist/esm/nano-field-validator.entry.js +17 -15
- package/dist/esm/nano-field-validator.entry.js.map +1 -1
- package/dist/esm/nano-file-upload.entry.js +4 -3
- package/dist/esm/nano-file-upload.entry.js.map +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +23 -20
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +52 -50
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +10 -6
- package/dist/esm/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm/nano-grid-item.entry.js +2 -2
- package/dist/esm/nano-grid_2.entry.js +6 -5
- package/dist/esm/nano-grid_2.entry.js.map +1 -1
- package/dist/esm/nano-hero.entry.js +7 -6
- package/dist/esm/nano-hero.entry.js.map +1 -1
- package/dist/esm/nano-icon-button_2.entry.js +6 -5
- package/dist/esm/nano-icon-button_2.entry.js.map +1 -1
- package/dist/esm/nano-icon.entry.js +4 -2
- package/dist/esm/nano-icon.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +9 -7
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-intersection-observe.entry.js +3 -2
- package/dist/esm/nano-intersection-observe.entry.js.map +1 -1
- package/dist/esm/nano-menu-drawer.entry.js +10 -8
- package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
- package/dist/esm/nano-more-less.entry.js +4 -3
- package/dist/esm/nano-more-less.entry.js.map +1 -1
- package/dist/esm/nano-overflow-nav.entry.js +7 -6
- package/dist/esm/nano-overflow-nav.entry.js.map +1 -1
- package/dist/esm/nano-progress-bar.entry.js +7 -4
- package/dist/esm/nano-progress-bar.entry.js.map +1 -1
- package/dist/esm/nano-range.entry.js +3 -1
- package/dist/esm/nano-range.entry.js.map +1 -1
- package/dist/esm/nano-rating.entry.js +7 -6
- package/dist/esm/nano-rating.entry.js.map +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +5 -4
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-slide.entry.js +3 -2
- package/dist/esm/nano-slide.entry.js.map +1 -1
- package/dist/esm/{nano-slides-c3eb1afe.js → nano-slides-2715825b.js} +15 -13
- package/dist/esm/nano-slides-2715825b.js.map +1 -0
- package/dist/esm/nano-slides.entry.js +3 -2
- package/dist/esm/nano-slides.entry.js.map +1 -1
- package/dist/esm/nano-sortable.entry.js +3 -2
- package/dist/esm/nano-sortable.entry.js.map +1 -1
- package/dist/esm/nano-spinner.entry.js +3 -2
- package/dist/esm/nano-spinner.entry.js.map +1 -1
- package/dist/esm/nano-split-pane.entry.js +3 -2
- package/dist/esm/nano-split-pane.entry.js.map +1 -1
- package/dist/esm/nano-sticker.entry.js +6 -5
- package/dist/esm/nano-sticker.entry.js.map +1 -1
- package/dist/esm/nano-tab-content.entry.js +5 -3
- package/dist/esm/nano-tab-content.entry.js.map +1 -1
- package/dist/esm/nano-tab-group.entry.js +16 -14
- package/dist/esm/nano-tab-group.entry.js.map +1 -1
- package/dist/esm/nano-tab.entry.js +4 -3
- package/dist/esm/nano-tab.entry.js.map +1 -1
- package/dist/esm/{nano-table-2748d8d7.js → nano-table-67d7190b.js} +42 -40
- package/dist/esm/nano-table-67d7190b.js.map +1 -0
- package/dist/esm/nano-table.entry.js +4 -3
- package/dist/esm/nano-table.entry.js.map +1 -1
- package/dist/esm/{page-dots-986d3b32.js → page-dots-5b23db8c.js} +4 -3
- package/dist/esm/page-dots-5b23db8c.js.map +1 -0
- package/dist/esm/renderer-4bc3e2dc.js +58 -0
- package/dist/esm/renderer-4bc3e2dc.js.map +1 -0
- package/dist/esm/{scroll-f373a189.js → scroll-1afc6a4e.js} +2 -2
- package/dist/esm/{scroll-f373a189.js.map → scroll-1afc6a4e.js.map} +1 -1
- package/dist/esm/{table.worker-3f4a19fa.js → table.worker-d636a71f.js} +5 -4
- package/dist/esm/table.worker-d636a71f.js.map +1 -0
- package/dist/nano-components/{algolia-data-8fc24341.js → algolia-data-f0f72f1d.js} +2 -2
- package/dist/nano-components/app-globals-f0120bbe.js +5 -0
- package/dist/nano-components/app-globals-f0120bbe.js.map +1 -0
- package/dist/nano-components/{component-store-b798181b.js → component-store-199a9fd8.js} +2 -2
- package/dist/nano-components/{dom-d7f9f24c.js → dom-fafdec9a.js} +2 -2
- package/dist/nano-components/fade-ce1a4958.js +5 -0
- package/dist/nano-components/{fade-4ff5d9de.js.map → fade-ce1a4958.js.map} +1 -1
- package/dist/nano-components/form-control-f48fa873.js +5 -0
- package/dist/nano-components/form-control-f48fa873.js.map +1 -0
- package/dist/nano-components/fullscreen-52d62028.js +5 -0
- package/dist/nano-components/{fullscreen-382d7890.js.map → fullscreen-52d62028.js.map} +1 -1
- package/dist/nano-components/{index-3118109b.js → index-6cc72cd9.js} +3 -3
- package/dist/nano-components/index-6cc72cd9.js.map +1 -0
- package/dist/nano-components/{index-d7a4a150.js → index-f5f7b950.js} +2 -2
- package/dist/nano-components/index.esm.js +1 -1
- package/dist/nano-components/index.esm.js.map +1 -1
- package/dist/nano-components/lazyload-8ff69ba4.js +5 -0
- package/dist/nano-components/{lazyload-49b745e4.js.map → lazyload-8ff69ba4.js.map} +1 -1
- package/dist/nano-components/nano-accordion.entry.js +1 -1
- package/dist/nano-components/nano-accordion.entry.js.map +1 -1
- package/dist/nano-components/nano-alert.entry.js +1 -1
- package/dist/nano-components/nano-alert.entry.js.map +1 -1
- package/dist/nano-components/nano-algolia-filter.entry.js +1 -1
- package/dist/nano-components/nano-algolia-filter.entry.js.map +1 -1
- package/dist/nano-components/nano-algolia-pagination.entry.js +1 -1
- package/dist/nano-components/nano-algolia-results.entry.js +1 -1
- package/dist/nano-components/nano-algolia-results.entry.js.map +1 -1
- package/dist/nano-components/nano-algolia.entry.js +1 -1
- package/dist/nano-components/nano-algolia.entry.js.map +1 -1
- package/dist/nano-components/nano-animation.entry.js +1 -1
- package/dist/nano-components/nano-animation.entry.js.map +1 -1
- package/dist/nano-components/nano-checkbox-group.entry.js +1 -1
- package/dist/nano-components/nano-checkbox-group.entry.js.map +1 -1
- package/dist/nano-components/nano-checkbox.entry.js +1 -1
- package/dist/nano-components/nano-checkbox.entry.js.map +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 +1 -1
- package/dist/nano-components/nano-datalist_3.entry.js.map +1 -1
- package/dist/nano-components/nano-date-input.entry.js +1 -1
- package/dist/nano-components/nano-date-input.entry.js.map +1 -1
- package/dist/nano-components/nano-date-picker.entry.js +1 -1
- package/dist/nano-components/nano-date-picker.entry.js.map +1 -1
- package/dist/nano-components/nano-details.entry.js +1 -1
- package/dist/nano-components/nano-details.entry.js.map +1 -1
- package/dist/nano-components/nano-dialog.entry.js +1 -1
- package/dist/nano-components/nano-dialog.entry.js.map +1 -1
- package/dist/nano-components/nano-drawer.entry.js +1 -1
- package/dist/nano-components/nano-drawer.entry.js.map +1 -1
- package/dist/nano-components/nano-dropdown.entry.js +1 -1
- package/dist/nano-components/nano-dropdown.entry.js.map +1 -1
- package/dist/nano-components/nano-field-validator.entry.js +1 -1
- package/dist/nano-components/nano-field-validator.entry.js.map +1 -1
- package/dist/nano-components/nano-file-upload.entry.js +1 -1
- package/dist/nano-components/nano-file-upload.entry.js.map +1 -1
- package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +1 -1
- package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/nano-components/nano-global-nav.entry.js +1 -1
- package/dist/nano-components/nano-global-nav.entry.js.map +1 -1
- package/dist/nano-components/nano-global-search-results.entry.js +1 -1
- package/dist/nano-components/nano-global-search-results.entry.js.map +1 -1
- package/dist/nano-components/nano-grid-item.entry.js +1 -1
- package/dist/nano-components/nano-grid-item.entry.js.map +1 -1
- package/dist/nano-components/nano-grid_2.entry.js +1 -1
- package/dist/nano-components/nano-grid_2.entry.js.map +1 -1
- package/dist/nano-components/nano-hero.entry.js +1 -1
- package/dist/nano-components/nano-hero.entry.js.map +1 -1
- package/dist/nano-components/nano-icon-button_2.entry.js +1 -1
- package/dist/nano-components/nano-icon-button_2.entry.js.map +1 -1
- package/dist/nano-components/nano-icon.entry.js +1 -1
- package/dist/nano-components/nano-icon.entry.js.map +1 -1
- package/dist/nano-components/nano-input.entry.js +1 -1
- package/dist/nano-components/nano-input.entry.js.map +1 -1
- package/dist/nano-components/nano-intersection-observe.entry.js +1 -1
- package/dist/nano-components/nano-intersection-observe.entry.js.map +1 -1
- package/dist/nano-components/nano-menu-drawer.entry.js +1 -1
- package/dist/nano-components/nano-menu-drawer.entry.js.map +1 -1
- package/dist/nano-components/nano-more-less.entry.js +1 -1
- package/dist/nano-components/nano-more-less.entry.js.map +1 -1
- package/dist/nano-components/nano-overflow-nav.entry.js +1 -1
- package/dist/nano-components/nano-overflow-nav.entry.js.map +1 -1
- package/dist/nano-components/nano-progress-bar.entry.js +1 -1
- package/dist/nano-components/nano-progress-bar.entry.js.map +1 -1
- package/dist/nano-components/nano-range.entry.js +1 -1
- package/dist/nano-components/nano-range.entry.js.map +1 -1
- package/dist/nano-components/nano-rating.entry.js +1 -1
- package/dist/nano-components/nano-rating.entry.js.map +1 -1
- package/dist/nano-components/nano-resize-observe_2.entry.js +1 -1
- package/dist/nano-components/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/nano-components/nano-slide.entry.js +1 -1
- package/dist/nano-components/nano-slide.entry.js.map +1 -1
- package/dist/nano-components/{nano-slides-c3eb1afe.js → nano-slides-2715825b.js} +5 -5
- package/dist/nano-components/nano-slides-2715825b.js.map +1 -0
- package/dist/nano-components/nano-slides.entry.js +1 -1
- package/dist/nano-components/nano-sortable.entry.js +1 -1
- package/dist/nano-components/nano-sortable.entry.js.map +1 -1
- package/dist/nano-components/nano-spinner.entry.js +1 -1
- package/dist/nano-components/nano-spinner.entry.js.map +1 -1
- package/dist/nano-components/nano-split-pane.entry.js +1 -1
- package/dist/nano-components/nano-split-pane.entry.js.map +1 -1
- package/dist/nano-components/nano-sticker.entry.js +1 -1
- package/dist/nano-components/nano-sticker.entry.js.map +1 -1
- package/dist/nano-components/nano-tab-content.entry.js +1 -1
- package/dist/nano-components/nano-tab-content.entry.js.map +1 -1
- package/dist/nano-components/nano-tab-group.entry.js +1 -1
- package/dist/nano-components/nano-tab-group.entry.js.map +1 -1
- package/dist/nano-components/nano-tab.entry.js +1 -1
- package/dist/nano-components/nano-tab.entry.js.map +1 -1
- package/dist/nano-components/nano-table-67d7190b.js +5 -0
- package/dist/nano-components/nano-table-67d7190b.js.map +1 -0
- package/dist/nano-components/nano-table.entry.js +1 -1
- package/dist/nano-components/page-dots-5b23db8c.js +5 -0
- package/dist/nano-components/{page-dots-986d3b32.js.map → page-dots-5b23db8c.js.map} +1 -1
- package/dist/nano-components/renderer-4bc3e2dc.js +5 -0
- package/dist/nano-components/renderer-4bc3e2dc.js.map +1 -0
- package/dist/nano-components/{scroll-f373a189.js → scroll-1afc6a4e.js} +2 -2
- package/dist/nano-components/table.worker-d636a71f.js +5 -0
- package/dist/stencil.config.js +1 -0
- package/dist/stencil.config.js.map +1 -1
- package/dist/types/global/script/global.d.ts +2 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/utils/renderer.d.ts +27 -0
- package/docs-json.json +1 -12
- package/hydrate/index.js +453 -393
- package/hydrate/index.mjs +453 -393
- package/package.json +1 -1
- package/dist/cjs/app-globals-93d8b419.js +0 -39
- package/dist/cjs/app-globals-93d8b419.js.map +0 -1
- package/dist/cjs/fade-2dd9dd8b.js.map +0 -1
- package/dist/cjs/form-control-2d88adb2.js +0 -82
- package/dist/cjs/form-control-2d88adb2.js.map +0 -1
- package/dist/cjs/fullscreen-5d0422de.js.map +0 -1
- package/dist/cjs/index-b6fa04fa.js.map +0 -1
- package/dist/cjs/lazyload-f181cb37.js.map +0 -1
- package/dist/cjs/nano-slides-612634dc.js.map +0 -1
- package/dist/cjs/nano-table-b1c1383a.js.map +0 -1
- package/dist/cjs/page-dots-99dd88f6.js.map +0 -1
- package/dist/cjs/table.worker-9552431f.js.map +0 -1
- package/dist/esm/app-globals-d4ab01f2.js +0 -37
- package/dist/esm/app-globals-d4ab01f2.js.map +0 -1
- package/dist/esm/fade-4ff5d9de.js.map +0 -1
- package/dist/esm/form-control-812999d0.js.map +0 -1
- package/dist/esm/fullscreen-382d7890.js.map +0 -1
- package/dist/esm/index-3118109b.js.map +0 -1
- package/dist/esm/lazyload-49b745e4.js.map +0 -1
- package/dist/esm/nano-slides-c3eb1afe.js.map +0 -1
- package/dist/esm/nano-table-2748d8d7.js.map +0 -1
- package/dist/esm/page-dots-986d3b32.js.map +0 -1
- package/dist/esm/table.worker-3f4a19fa.js.map +0 -1
- package/dist/nano-components/app-globals-d4ab01f2.js +0 -5
- package/dist/nano-components/app-globals-d4ab01f2.js.map +0 -1
- package/dist/nano-components/fade-4ff5d9de.js +0 -5
- package/dist/nano-components/form-control-812999d0.js +0 -5
- package/dist/nano-components/form-control-812999d0.js.map +0 -1
- package/dist/nano-components/fullscreen-382d7890.js +0 -5
- package/dist/nano-components/index-3118109b.js.map +0 -1
- package/dist/nano-components/lazyload-49b745e4.js +0 -5
- package/dist/nano-components/nano-slides-c3eb1afe.js.map +0 -1
- package/dist/nano-components/nano-table-2748d8d7.js +0 -5
- package/dist/nano-components/nano-table-2748d8d7.js.map +0 -1
- package/dist/nano-components/page-dots-986d3b32.js +0 -5
- package/dist/nano-components/table.worker-3f4a19fa.js +0 -5
- /package/dist/nano-components/{algolia-data-8fc24341.js.map → algolia-data-f0f72f1d.js.map} +0 -0
- /package/dist/nano-components/{component-store-b798181b.js.map → component-store-199a9fd8.js.map} +0 -0
- /package/dist/nano-components/{dom-d7f9f24c.js.map → dom-fafdec9a.js.map} +0 -0
- /package/dist/nano-components/{index-d7a4a150.js.map → index-f5f7b950.js.map} +0 -0
- /package/dist/nano-components/{scroll-f373a189.js.map → scroll-1afc6a4e.js.map} +0 -0
- /package/dist/nano-components/{table.worker-3f4a19fa.js.map → table.worker-d636a71f.js.map} +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/custom-element-doc-generator.d.ts +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/generate-vue-component.d.ts +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/index.d.ts +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/output-vue.d.ts +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/plugin.d.ts +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/types.d.ts +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/utils.d.ts +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/stencil.config.d.ts +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/stencil.config.prod.d.ts +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/testing/mocks/intersection-observer.d.ts +0 -0
- /package/dist/types/builds/{_6Vabn6i → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/wdio.conf.d.ts +0 -0
@@ -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","animatePrototype","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","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","drag","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","scrollX","scrollY","nowNext","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","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","isPageHidden","hidden","tick","time","autoPlay","clear","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","flickity","slidesCss","NanoSlidesStyle0","Slides","flickityEl","flickityReady","mutationO","resizeO","readyflickity","Promise","resolve","syncflickity","childrenEles","hasFullScreenModule","hasLazyLoadModule","hasDotsModule","hasFadeModule","iCurrentSlide","slidesReady","didInit","optionsChanged","getflickity","newOpts","assign","loadFlickityModules","navbtns","navbtnsChanged","_getRoot","btn","pager","pagerChanged","dots","fullscreenbtn","fullscreenBtnChanged","fullscreen","fullscreenChanged","_","oldFs","viewFullscreen","exitFullscreen","animation","animationChange","oldAnim","flkty","all","waitForSlides","parallax","fade","currentSlide","currentSlideChange","slideTo","internalSlideChange","autoplay","autoPlayChange","stopAutoplay","startAutoplay","ready","nanoSlidesDidLoad","nanoSlidesReady","nanoSlidesSelect","nanoSlidesChange","nanoSlidesScroll","nanoSlidesTransitionEnd","nanoSlidesDragStart","nanoSlidesDragMove","nanoSlidesDragEnd","nanoSlidesTap","nanoSlidesFullscreenChange","transformTag","instant","slideNext","slidePrev","getActiveIndex","isEnd","isBeginning","lockSwipes","lock","reload","destroyflickity","initflickity","async","flkX","animAmount","setProperty","toString","handleFullscreen","isFullScreen","emit","handleSlideSelect","import","lazyLoad","pageDots","finalOptions","normalizeOptions","contains","getBoundingClientRect","flick","disconnect","ro","ResizeObserver","readTask","vp","writeTask","observe","flickityOptions","imagesLoaded","eventOptions","change","fullscreenChange","customEvents","mergedEventOptions","componentDidLoad","MutationObserver","mut","e","addedNodes","childList","subtree","componentWillLoad","disconnectedCallback","render","h","Host","key","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\nexport default () => {\n // ----- defaults ----- //\n utils.extend(Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n });\n\n // ----- create ----- //\n\n Flickity.createMethods.push('_createDrag');\n\n // -------------------------- drag prototype -------------------------- //\n\n const proto = Flickity.prototype;\n utils.extend(proto, Unidragger.prototype);\n proto._touchActionValue = 'pan-y';\n\n // -------------------------- -------------------------- //\n\n const isTouch = 'createTouch' in document;\n let isTouchmoveScrollCanceled = false;\n\n proto._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\n proto.onActivateDrag = function () {\n this.handles = [this.viewport];\n this.bindHandles();\n this.updateDraggable();\n };\n\n proto.onDeactivateDrag = function () {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n };\n\n proto.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\n proto.bindDrag = function () {\n this.options.draggable = true;\n this.updateDraggable();\n };\n\n proto.unbindDrag = function () {\n this.options.draggable = false;\n this.updateDraggable();\n };\n\n proto._uiChangeDrag = function () {\n delete this.isFreeScrolling;\n };\n\n // -------------------------- pointer events -------------------------- //\n\n proto.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\n proto._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\n const focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n };\n\n proto.pointerDownFocus = function (event) {\n const isFocusNode = focusNodes[event.target.nodeName];\n if (!isFocusNode) {\n this.focus();\n }\n };\n\n proto._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\n proto.hasDragStarted = function (moveVector) {\n return Math.abs(moveVector.x) > this.options.dragThreshold;\n };\n\n // ----- up ----- //\n\n proto.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\n proto.pointerDone = function () {\n window.removeEventListener('scroll', this);\n delete this.pointerDownScroll;\n };\n\n // -------------------------- dragging -------------------------- //\n\n proto.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\n proto.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\n proto.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\n proto.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\n proto.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 */\n proto._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 */\n proto.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\n ? this.slideableWidth * Math.floor(index / len)\n : 0;\n return x - (slide.target + wrap);\n };\n\n proto.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\n proto.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\n proto.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\n function getScrollPosition() {\n return {\n x: window.scrollX,\n y: window.scrollY,\n };\n }\n};\n","import Flickity from './flickity';\nimport { Unipointer } from './utils/gestures';\nimport { utils } from './utils/utils';\n\nexport default () => {\n const svgURI = 'http://www.w3.org/2000/svg';\n\n // -------------------------- PrevNextButton -------------------------- //\n\n function 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\n PrevNextButton.prototype = Object.create(Unipointer.prototype);\n\n PrevNextButton.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\n PrevNextButton.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\n PrevNextButton.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\n PrevNextButton.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\n function 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\n PrevNextButton.prototype.handleEvent = utils.handleEvent;\n\n PrevNextButton.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\n PrevNextButton.prototype.enable = function () {\n if (this.isEnabled) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n };\n\n PrevNextButton.prototype.disable = function () {\n if (!this.isEnabled) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n };\n\n PrevNextButton.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 =\n this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[method]();\n };\n\n PrevNextButton.prototype.destroy = function () {\n this.deactivate();\n this.allOff();\n };\n\n // -------------------------- Flickity prototype -------------------------- //\n\n utils.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\n Flickity.createMethods.push('_createPrevNextButtons');\n const proto = Flickity.prototype;\n\n proto._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\n proto.activatePrevNextButtons = function () {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on('deactivate', this.deactivatePrevNextButtons);\n };\n\n proto.deactivatePrevNextButtons = function () {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off('deactivate', this.deactivatePrevNextButtons);\n };\n\n // @ts-ignore\n Flickity.PrevNextButton = PrevNextButton;\n};\n","import { EvEmitter } from './utils/event-emitter';\nimport { utils } from './utils/utils';\nimport Flickity from './flickity';\n\nexport default () => {\n // -------------------------- Player -------------------------- //\n\n function 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\n Player.prototype = Object.create(EvEmitter.prototype);\n\n // start play\n Player.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\n Player.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\n Player.prototype.stop = function () {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener('visibilitychange', this.onVisibilityChange);\n };\n\n Player.prototype.clear = function () {\n clearTimeout(this.timeout);\n };\n\n Player.prototype.pause = function () {\n if (this.state == 'playing') {\n this.state = 'paused';\n this.clear();\n }\n };\n\n Player.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\n Player.prototype.visibilityChange = function () {\n const isPageHidden = document.hidden;\n this[isPageHidden ? 'pause' : 'unpause']();\n };\n\n Player.prototype.visibilityPlay = function () {\n this.play();\n document.removeEventListener('visibilitychange', this.onVisibilityPlay);\n };\n\n // -------------------------- Flickity -------------------------- //\n\n utils.extend(Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n });\n\n Flickity.createMethods.push('_createPlayer');\n const proto = Flickity.prototype;\n\n proto._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\n proto.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\n proto.playPlayer = function () {\n this.player.play();\n };\n\n proto.stopPlayer = function () {\n this.player.stop();\n };\n\n proto.pausePlayer = function () {\n this.player.pause();\n };\n\n proto.unpausePlayer = function () {\n this.player.unpause();\n };\n\n proto.deactivatePlayer = function () {\n this.player.stop();\n this.element.removeEventListener('mouseenter', this);\n };\n\n // ----- mouseenter/leave ----- //\n\n // pause auto-play on hover\n proto.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\n proto.onmouseleave = function () {\n this.player.unpause();\n this.element.removeEventListener('mouseleave', this);\n };\n\n // @ts-ignore\n Flickity.Player = Player;\n};\n","import Flickity from './flickity';\nimport drag from './drag';\nimport nowNext from './prev-next-button';\nimport player from './player';\n\nexport const flickity = Flickity;\ndrag();\nnowNext();\nplayer();\n","@use '../../global/style/nano-theme/tokens/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: #{colours.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 Host,\n Watch,\n Method,\n State,\n Build,\n readTask,\n writeTask,\n} from '@stencil/core';\nimport { transformTag, h } from '../../utils/renderer';\nimport { flickity } from './lib/js';\nimport type {\n FlickityOptions,\n FlickityEvents,\n Flickity,\n DragEvent,\n SlideAnimation,\n FlickityCell,\n} from './slides-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: HTMLElement = this._getRoot().querySelector(\n '.flickity-page-dots'\n );\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: HTMLElement = this._getRoot().querySelector(\n '.flickity-fullscreen-button'\n );\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);\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(\n `${transformTag('nano-slide')} > *`\n );\n flickity.reloadCells();\n flickity.resize();\n flickity.reposition();\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 /**\n * Get the index of the active slide.\n * @returns the index of the active slide\n */\n @Method()\n async getActiveIndex() {\n const flickity = await this.getflickity();\n return flickity.selectedIndex;\n }\n\n /**\n * Get the total number of slides.\n * @returns the total number of slides\n */\n @Method()\n async length() {\n const flickity = await this.getflickity();\n return flickity.slides.length;\n }\n\n /**\n * Get whether or not the current slide is the last slide.\n * @returns true if the current slide is the last slide, false otherwise\n */\n @Method()\n async isEnd() {\n const flickity = await this.getflickity();\n return flickity.selectedIndex === flickity.slides.length - 1;\n }\n\n /**\n * Get whether or not the current slide is the first slide.\n * @returns true if the current slide is the first slide, false otherwise\n */\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 * @returns the flickity instance\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 if (this.resizeO) {\n this.resizeO.disconnect();\n this.resizeO = undefined;\n }\n\n const ro = (this.resizeO = new ResizeObserver(() => {\n readTask(() => {\n const vp: HTMLElement =\n this.host.shadowRoot.querySelector('.flickity-viewport');\n\n writeTask(() => {\n // reset the height, otherwise it *only* gets bigger\n if (vp) vp.style.height = '';\n flick.resize();\n });\n });\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: transformTag('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;\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: () =>\n requestAnimationFrame(() => this.nanoSlidesTransitionEnd.emit()),\n dragStart: () =>\n requestAnimationFrame(() => this.nanoSlidesDragStart.emit()),\n dragMove: () =>\n requestAnimationFrame(() => this.nanoSlidesDragMove.emit()),\n dragEnd: () => requestAnimationFrame(() => 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\n // @ts-expect-error - merged options don't quite match the flickity options\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() ===\n transformTag('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) {\n this.resizeO.disconnect();\n this.resizeO = undefined;\n }\n this.destroyflickity();\n }\n\n render() {\n return (\n <Host class=\"nano-slides\">\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(\n host.querySelectorAll<HTMLNanoSlideElement>(transformTag('nano-slide'))\n );\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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","ignoreList":[]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
export{S as nano_slides}from"./nano-slides-
|
4
|
+
export{S as nano_slides}from"./nano-slides-2715825b.js";import"./index-6cc72cd9.js";import"./renderer-4bc3e2dc.js";
|
5
5
|
//# sourceMappingURL=nano-slides.entry.js.map
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import{g as t,w as e,d as i,r as s,c as h,h as r,a as n}from"./index-3118109b.js";import{d as o}from"./drag-9d765d2d.js";import{d as a}from"./throttle-df960210.js";import{a as d}from"./events-f38f3e59.js";const l=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{position:relative;display:block}.sortable__live-region{clip:rect(1px, 1px, 1px, 1px);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}";const c=l;const f={horizontal:{x:1,y:0},vertical:{x:0,y:1}};let u=0;const b=class{itemSelector="li";handleItemSelectorChange(){this.refreshKeyboardHandles()}handleSelector;handleHandleSelectorChange(){this.refreshKeyboardHandles();this.attachMutationObserver()}dropzoneSelector;helperText='Press "Space" or "Enter" to enable element reordering and use the arrow keys to reorder items.'+'Press "Escape" to cancel reordering. Alternatively, use your mouse to drag / reorder.';itemDescriptor=t=>`"${t?.textContent.trim()}"`;grabbedHelperText=t=>`${this.itemDescriptor(t)} grabbed`;droppedHelperText=t=>`${this.itemDescriptor(t)} dropped`;reorderHelperText=(t,e,i)=>`The list has been reordered, ${this.itemDescriptor(t)} is now item ${i} of ${e.length}`;createKeyboardHandle=(t,e)=>{const i=`\n <nano-icon-button\n slot="end"\n icon-name="light/arrows-up-down-left-right"\n class="nano-sortable__keyboard-handle visually-hidden"\n label="Re-order this item"\n ></nano-icon-button>`;const s=document.createElement("div");s.innerHTML=i;const h=s.children[0];e.append(h);return h};handleCreateKeyboardHandleChange(){this.refreshKeyboardHandles()}sortableHostElement;handleSortableHostElement(t,e){if(e)this.removeEventHandlers(e);this.addEventHandlers();this.refreshKeyboardHandles();this.attachMutationObserver();if(this.sortableHostElement){this.sortableHostElement.style.position="relative"}}animationEnabled=true;draggedClass="nano-sortable__dragged";handleDraggedClass="nano-sortable__handle-dragged";placeholderClass="nano-sortable__placeholder";dropzoneActiveClass="";animationTiming={duration:200,easing:"ease-out"};orientation;dragResize=false;nanoOrderChange;nanoGrabbed;nanoDropped;async refreshKeyboardHandles(){if(this.handleSelector){if(this.keyboardHandleMap?.size){this.keyboardHandleMap.clear()}this.sortableHost.querySelectorAll(this.handleSelector).forEach((t=>{if(!t.getAttribute("aria-describedby"))t.setAttribute("aria-describedby",this.sortableId);const e=t.closest(this.itemSelector);if(e)this.keyboardHandleMap.set(t,e)}));return}if(this.keyboardHandleMap?.size){this.keyboardHandleMap?.forEach(((t,e)=>e.remove()));this.keyboardHandleMap.clear()}this.sortableHost.querySelectorAll(this.itemSelector).forEach(((t,e)=>{const i=this.createKeyboardHandle(e,t);if(!i){console.error("`createKeyboardHandle` *must* return the handle element it creates");return}this.keyboardHandleMap.set(i,t);i.setAttribute("aria-describedby",this.sortableId)}))}get host(){return t(this)}dragRequestPending=false;draggedElement;draggedElementClone;draggedElementOrigin;sortableNodes=[];dropzoneNodes=[];animatedElements=[];animationPromise;keyboardHandleMap=new Map;sortableId=`nano-sortable-${u++}`;mouseDownTimer;mutationObserver;keyboardSortActive=false;ariaTextList=[];get sortableHost(){if(this.sortableHostElement)return this.sortableHostElement;return this.host}addAriaMsg(t){this.ariaTextList=[...this.ariaTextList,t];setTimeout((()=>{const e=this.ariaTextList.indexOf(t);this.ariaTextList.splice(e,1);this.ariaTextList=[...this.ariaTextList]}),1e4)}updateUserSelectStyle(t){this.host.style.userSelect=t}hitTest(t,e){const{left:i,top:s,width:h,height:r}=t.getBoundingClientRect();const n=i+h/2;const o=s+r/2;return e.filter((t=>{const{left:e,right:i,top:s,bottom:h}=t.getBoundingClientRect();return!(n<e||n>i||o<s||o>h)}))}isAnimating(t){return this.animatedElements.indexOf(t)!==-1}animateNode(t,i=0,s=0){if(!t.animate){return}this.animatedElements.push(t);t.style.willChange="transform";e((()=>{this.animationPromise=new Promise((e=>{t.animate([{transform:`translate3d(${i}px, ${s}px, 0)`},{transform:"none"}],this.animationTiming).addEventListener("finish",(()=>{const i=this.animatedElements.indexOf(t);t.style.willChange="";if(i!==-1){this.animatedElements.splice(i,1)}e();delete this.animationPromise}),{once:true})}))}))}insertAtTarget(t,e){if(!t||!e)return;let i=[];if(this.animationEnabled){i=this.sortableNodes.map((t=>({x:t.offsetLeft,y:t.offsetTop})))}if(!t.isConnected||!e.isConnected)return;if(this.dropzoneNodes.indexOf(e)>-1){e.append(t)}else{const i=t.compareDocumentPosition(e);let s;if(i&this.host.DOCUMENT_POSITION_FOLLOWING){s=e.parentNode===t.parentNode?"afterend":"beforebegin"}if(i&this.host.DOCUMENT_POSITION_PRECEDING){s=e.parentNode===t.parentNode?"beforebegin":"afterend"}if(s)e.insertAdjacentElement(s,t)}if(this.animationEnabled){this.sortableNodes.forEach(((t,e)=>{const{x:s,y:h}=i[e];const r=s-t.offsetLeft;const n=h-t.offsetTop;if(r!==0||n!==0){this.animateNode(t,r,n)}}))}}reset(){if(this.draggedElementClone!==undefined&&this.draggedElementClone.parentNode!==null){this.draggedElementClone.parentNode.removeChild(this.draggedElementClone)}if(this.draggedElement&&this.draggedElement.parentNode&&this.draggedElementOrigin){this.draggedElement.classList.remove(this.placeholderClass)}if(this.dropzoneActiveClass&&this.dropzoneNodes.length){this.dropzoneNodes.forEach((t=>t.classList.remove(this.dropzoneActiveClass)))}delete this.draggedElementClone;delete this.draggedElement;this.dropzoneNodes=[];this.sortableNodes=[];this.animatedElements=[];this.dragRequestPending=false;this.updateUserSelectStyle("")}createClone(t){const e=t.cloneNode(true);if(t.id)e.id="clone__"+e.id;Array.from(e.children).forEach(((e,i)=>{const s=e;const h=t.children.item(i);if(h){s.style.width=`${h.offsetWidth}px`}}));const{offsetLeft:i,offsetTop:s,offsetWidth:h,offsetHeight:r}=t;Object.assign(e.style,{position:"absolute",left:`calc(${i}px - var(--grab-offset-x, 0px))`,top:`calc(${s}px - var(--grab-offset-y, 0px))`,height:this.dragResize?`${r}px`:undefined,width:this.dragResize?`${h}px`:undefined,willChange:"transform,opacity"});e.classList.add(this.draggedClass);return t.parentNode.appendChild(e)}removeEventHandlers(t){t=t||this.sortableHost;t.removeEventListener("mousedown",this.handleTrack);t.removeEventListener("touchstart",this.handleTrack);t.removeEventListener("keydown",this.handleKeydown)}addEventHandlers(t){t=t||this.sortableHost;d(t,"mousedown touchstart",this.handleTrack,{passive:true});t.addEventListener("keydown",this.handleKeydown)}attachMutationObserver(){if(this.mutationObserver){this.mutationObserver.disconnect();this.mutationObserver=undefined}this.mutationObserver=new MutationObserver((()=>{const t=Array.from(this.keyboardHandleMap.values());const e=Array.from(this.sortableHost.querySelectorAll(this.itemSelector));if(t.length!==e.length||!!e.find((e=>!t.includes(e)))){this.refreshKeyboardHandles()}}));this.mutationObserver.observe(this.sortableHost,{subtree:true,childList:true})}handleKeydown(t){const e=t.target;let i;let s;if(this.handleSelector){i=e.closest(this.handleSelector);s=e.closest(this.itemSelector)}else{s=this.keyboardHandleMap.get(e);i=e}if(!i||!s)return;const h=t=>{this.keyboardSortActive=t;this.draggedElement=t?s:undefined;s.classList.toggle(this.draggedClass,t);i.classList.toggle(this.handleDraggedClass,t);if(t){this.addAriaMsg(this.grabbedHelperText(s));document.addEventListener("mousedown",(()=>h(false)),{once:true})}else{this.addAriaMsg(this.droppedHelperText(s))}};if([" ","Space","Enter"].includes(t.key)){t.preventDefault();if(!this.keyboardSortActive){h(true);this.sortableNodes=Array.from(this.sortableHost.querySelectorAll(this.itemSelector))||[];const t=this.nanoGrabbed.emit({element:s,index:this.sortableNodes.indexOf(s)});if(t.defaultPrevented){h(false);return}}else{h(false);this.nanoDropped.emit({element:s})}return}if(!this.keyboardSortActive)return;if(["Escape","Tab"].includes(t.key))h(false);let r=["Home","End"];if(!this.orientation||this.orientation==="horizontal")r=[...r,"ArrowRight","ArrowLeft"];if(!this.orientation||this.orientation==="vertical")r=[...r,"ArrowUp","ArrowDown"];if(!r.includes(t.key))return;t.preventDefault();this.sortableNodes=Array.from(this.sortableHost.querySelectorAll(this.itemSelector))||[];this.dropzoneNodes=Array.from(this.sortableHost.querySelectorAll(this.dropzoneSelector))||[];const n=this.sortableNodes.indexOf(this.draggedElement);let o=-1;if(this.dropzoneNodes.length){const t=this.draggedElement.closest(this.dropzoneSelector);o=this.dropzoneNodes.indexOf(t);o=o>-1?o:-1}const a=n-1<0&&o>-1?this.dropzoneNodes[o-1]:this.sortableNodes[n-1];const d=n+1===this.sortableNodes.length&&o>-1?this.dropzoneNodes[o+1]:this.sortableNodes[n+1];if(t.key==="Home"){this.insertAtTarget(this.draggedElement,this.sortableNodes[0])}if(t.key==="End"){this.insertAtTarget(this.draggedElement,this.sortableNodes[this.sortableNodes.length-1])}if(["ArrowRight","ArrowDown"].includes(t.key)){this.insertAtTarget(this.draggedElement,d)}if(["ArrowLeft","ArrowUp"].includes(t.key)){this.insertAtTarget(this.draggedElement,a)}this.finishOrder();this.draggedElement=s;const l=()=>{requestAnimationFrame((()=>{if(typeof i["setFocus"]==="function")i.setFocus();else i.focus()}))};if(this.animationPromise)this.animationPromise.then((()=>l()));else l()}handleTrack(t){if(this.dragRequestPending||t.button&&t.button!==1)return;const e=t=>{if(t.cancelable)t.preventDefault();clearTimeout(this.mouseDownTimer)};const i=()=>{clearTimeout(this.mouseDownTimer);document.removeEventListener("touchmove",e);document.removeEventListener("contextmenu",this.finishOrder)};i();this.mouseDownTimer=window?.setTimeout((()=>{if(!this.trackStart(t))return;document.addEventListener("touchmove",e,{passive:false});document.addEventListener("contextmenu",this.finishOrder);this.addAriaMsg(this.grabbedHelperText(this.draggedElement));o(this.sortableHost,{initialEvent:t,relative:true,onMove:(t,e)=>{this.trackMove(t,e)},onStop:()=>{this.nanoDropped.emit({element:this.draggedElement});i();const t=()=>{this.addAriaMsg(this.droppedHelperText(this.draggedElement));requestAnimationFrame((()=>this.finishOrder()))};if(this.animationPromise){this.animationPromise.then((()=>t()))}else t()}})}),150);d(document,"mouseup touchend touchmove",(()=>clearTimeout(this.mouseDownTimer)),{once:true})}trackStart(t){const e=t.target;let i;if(this.handleSelector){i=e.closest(this.handleSelector);if(!i)return;i.classList.add(this.handleDraggedClass)}const s=e.closest(this.itemSelector);if(!s)return false;this.sortableNodes=Array.from(this.sortableHost.querySelectorAll(this.itemSelector))||[];const h=this.nanoGrabbed.emit({element:s,index:this.sortableNodes.indexOf(s)});if(h.defaultPrevented)return false;t.preventDefault();this.updateUserSelectStyle("none");this.dragRequestPending=true;this.draggedElement=s;this.dropzoneNodes=Array.from(this.sortableHost.querySelectorAll(this.dropzoneSelector))||[];this.draggedElementClone=this.createClone(s);this.draggedElementOrigin=s.nextSibling;this.animatedElements=[];this.draggedElement.classList.add(this.placeholderClass);return true}finishOrder=()=>{if(!this.draggedElement)return;const t=Array.from(this.sortableHost.querySelectorAll(this.itemSelector)).filter((t=>t!==this.draggedElementClone));const e=this.sortableNodes.indexOf(this.draggedElement);const i=t.indexOf(this.draggedElement);if(this.handleSelector){const t=this.draggedElement.querySelector(this.handleSelector);t.classList.remove(this.handleDraggedClass)}if(e!==i){const s=this.nanoOrderChange.emit({element:this.draggedElement,originalIndex:e,targetIndex:i});if(s.defaultPrevented){this.animationPromise=new Promise((i=>{setTimeout((()=>{this.insertAtTarget(this.draggedElement,t[e]);this.reset();this.dragRequestPending=false;i()}),200)}));return}this.addAriaMsg(this.reorderHelperText(this.draggedElement,t,i+1))}this.reset();this.dragRequestPending=false};trackMove=(t,s)=>{if(!this.draggedElementClone){return}if(this.orientation){t=t*f[this.orientation].x;s=s*f[this.orientation].y}e((()=>{Object.assign(this.draggedElementClone.style,{transform:`translate3d(${t}px, ${s}px, 0)`})}));let h=this.hitTest(this.draggedElementClone,this.sortableNodes)[0];let r;if(this.dropzoneSelector&&this.dropzoneActiveClass){i((()=>{r=this.draggedElement.closest(this.dropzoneSelector);e((()=>{this.dropzoneNodes.filter((t=>t!==r)).forEach((t=>t.classList.remove(this.dropzoneActiveClass)));r.classList.add(this.dropzoneActiveClass)}))}))}if(!h&&this.dropzoneNodes.length){h=this.hitTest(this.draggedElementClone,this.dropzoneNodes)[0];if(this.draggedElement.closest(this.dropzoneSelector)===h)return}if(h&&h!==this.draggedElement&&!this.isAnimating(h)){this.insertAtTarget(this.draggedElement,h)}};constructor(t){s(this,t);this.nanoOrderChange=h(this,"nanoOrderChange",7);this.nanoGrabbed=h(this,"nanoGrabbed",7);this.nanoDropped=h(this,"nanoDropped",7);this.handleTrack=this.handleTrack.bind(this);this.handleKeydown=this.handleKeydown.bind(this);this.refreshKeyboardHandles=this.refreshKeyboardHandles.bind(this);this.refreshKeyboardHandles=a(this.refreshKeyboardHandles,500)}connectedCallback(){this.addEventHandlers();this.refreshKeyboardHandles();this.attachMutationObserver();if(!this.host.querySelector(`#${this.sortableId}`)){this.host.insertAdjacentHTML("beforeend",`<div class="visually-hidden" id="${this.sortableId}">${this.helperText}</div>`)}}disconnectedCallback(){this.removeEventHandlers();this.host.querySelector(`#${this.sortableId}`)?.remove();if(this.mutationObserver){this.mutationObserver.disconnect();this.mutationObserver=undefined}}render(){return r(n,{key:"8d0009173c5f2c5dae0285ccbf957d41523d56fa"},r("div",{key:"f0f1f16a37381fc56dcf7ea612f885b0a8bd1e8a",class:"sortable__live-region","aria-live":"polite","aria-relevant":"additions","aria-atomic":"true",role:"log",part:"announcements"},this.ariaTextList.map((t=>r("div",null,t)))),r("slot",{key:"438e2a954c09a3b48a3c45d8bea14d0559bf1eb0"}))}static get watchers(){return{itemSelector:["handleItemSelectorChange"],handleSelector:["handleHandleSelectorChange"],createKeyboardHandle:["handleCreateKeyboardHandleChange"],sortableHostElement:["handleSortableHostElement"]}}};b.style=c;export{b as nano_sortable};
|
4
|
+
import{g as t,d as e,e as i,r as s,c as h,a as r}from"./index-6cc72cd9.js";import{h as n}from"./renderer-4bc3e2dc.js";import{d as o}from"./drag-9d765d2d.js";import{d as a}from"./throttle-df960210.js";import{a as d}from"./events-f38f3e59.js";const l=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{position:relative;display:block}.sortable__live-region{clip:rect(1px, 1px, 1px, 1px);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}";const c=l;const f={horizontal:{x:1,y:0},vertical:{x:0,y:1}};let u=0;const b=class{itemSelector="li";handleItemSelectorChange(){this.refreshKeyboardHandles()}handleSelector;handleHandleSelectorChange(){this.refreshKeyboardHandles();this.attachMutationObserver()}dropzoneSelector;helperText='Press "Space" or "Enter" to enable element reordering and use the arrow keys to reorder items.'+'Press "Escape" to cancel reordering. Alternatively, use your mouse to drag / reorder.';itemDescriptor=t=>`"${t?.textContent.trim()}"`;grabbedHelperText=t=>`${this.itemDescriptor(t)} grabbed`;droppedHelperText=t=>`${this.itemDescriptor(t)} dropped`;reorderHelperText=(t,e,i)=>`The list has been reordered, ${this.itemDescriptor(t)} is now item ${i} of ${e.length}`;createKeyboardHandle=(t,e)=>{const i=`\n <nano-icon-button\n slot="end"\n icon-name="light/arrows-up-down-left-right"\n class="nano-sortable__keyboard-handle visually-hidden"\n label="Re-order this item"\n ></nano-icon-button>`;const s=document.createElement("div");s.innerHTML=i;const h=s.children[0];e.append(h);return h};handleCreateKeyboardHandleChange(){this.refreshKeyboardHandles()}sortableHostElement;handleSortableHostElement(t,e){if(e)this.removeEventHandlers(e);this.addEventHandlers();this.refreshKeyboardHandles();this.attachMutationObserver();if(this.sortableHostElement){this.sortableHostElement.style.position="relative"}}animationEnabled=true;draggedClass="nano-sortable__dragged";handleDraggedClass="nano-sortable__handle-dragged";placeholderClass="nano-sortable__placeholder";dropzoneActiveClass="";animationTiming={duration:200,easing:"ease-out"};orientation;dragResize=false;nanoOrderChange;nanoGrabbed;nanoDropped;async refreshKeyboardHandles(){if(this.handleSelector){if(this.keyboardHandleMap?.size){this.keyboardHandleMap.clear()}this.sortableHost.querySelectorAll(this.handleSelector).forEach((t=>{if(!t.getAttribute("aria-describedby"))t.setAttribute("aria-describedby",this.sortableId);const e=t.closest(this.itemSelector);if(e)this.keyboardHandleMap.set(t,e)}));return}if(this.keyboardHandleMap?.size){this.keyboardHandleMap?.forEach(((t,e)=>e.remove()));this.keyboardHandleMap.clear()}this.sortableHost.querySelectorAll(this.itemSelector).forEach(((t,e)=>{const i=this.createKeyboardHandle(e,t);if(!i){console.error("`createKeyboardHandle` *must* return the handle element it creates");return}this.keyboardHandleMap.set(i,t);i.setAttribute("aria-describedby",this.sortableId)}))}get host(){return t(this)}dragRequestPending=false;draggedElement;draggedElementClone;draggedElementOrigin;sortableNodes=[];dropzoneNodes=[];animatedElements=[];animationPromise;keyboardHandleMap=new Map;sortableId=`nano-sortable-${u++}`;mouseDownTimer;mutationObserver;keyboardSortActive=false;ariaTextList=[];get sortableHost(){if(this.sortableHostElement)return this.sortableHostElement;return this.host}addAriaMsg(t){this.ariaTextList=[...this.ariaTextList,t];setTimeout((()=>{const e=this.ariaTextList.indexOf(t);this.ariaTextList.splice(e,1);this.ariaTextList=[...this.ariaTextList]}),1e4)}updateUserSelectStyle(t){this.host.style.userSelect=t}hitTest(t,e){const{left:i,top:s,width:h,height:r}=t.getBoundingClientRect();const n=i+h/2;const o=s+r/2;return e.filter((t=>{const{left:e,right:i,top:s,bottom:h}=t.getBoundingClientRect();return!(n<e||n>i||o<s||o>h)}))}isAnimating(t){return this.animatedElements.indexOf(t)!==-1}animateNode(t,i=0,s=0){if(!t.animate){return}this.animatedElements.push(t);t.style.willChange="transform";e((()=>{this.animationPromise=new Promise((e=>{t.animate([{transform:`translate3d(${i}px, ${s}px, 0)`},{transform:"none"}],this.animationTiming).addEventListener("finish",(()=>{const i=this.animatedElements.indexOf(t);t.style.willChange="";if(i!==-1){this.animatedElements.splice(i,1)}e();delete this.animationPromise}),{once:true})}))}))}insertAtTarget(t,e){if(!t||!e)return;let i=[];if(this.animationEnabled){i=this.sortableNodes.map((t=>({x:t.offsetLeft,y:t.offsetTop})))}if(!t.isConnected||!e.isConnected)return;if(this.dropzoneNodes.indexOf(e)>-1){e.append(t)}else{const i=t.compareDocumentPosition(e);let s;if(i&this.host.DOCUMENT_POSITION_FOLLOWING){s=e.parentNode===t.parentNode?"afterend":"beforebegin"}if(i&this.host.DOCUMENT_POSITION_PRECEDING){s=e.parentNode===t.parentNode?"beforebegin":"afterend"}if(s)e.insertAdjacentElement(s,t)}if(this.animationEnabled){this.sortableNodes.forEach(((t,e)=>{const{x:s,y:h}=i[e];const r=s-t.offsetLeft;const n=h-t.offsetTop;if(r!==0||n!==0){this.animateNode(t,r,n)}}))}}reset(){if(this.draggedElementClone!==undefined&&this.draggedElementClone.parentNode!==null){this.draggedElementClone.parentNode.removeChild(this.draggedElementClone)}if(this.draggedElement&&this.draggedElement.parentNode&&this.draggedElementOrigin){this.draggedElement.classList.remove(this.placeholderClass)}if(this.dropzoneActiveClass&&this.dropzoneNodes.length){this.dropzoneNodes.forEach((t=>t.classList.remove(this.dropzoneActiveClass)))}delete this.draggedElementClone;delete this.draggedElement;this.dropzoneNodes=[];this.sortableNodes=[];this.animatedElements=[];this.dragRequestPending=false;this.updateUserSelectStyle("")}createClone(t){const e=t.cloneNode(true);if(t.id)e.id="clone__"+e.id;Array.from(e.children).forEach(((e,i)=>{const s=e;const h=t.children.item(i);if(h){s.style.width=`${h.offsetWidth}px`}}));const{offsetLeft:i,offsetTop:s,offsetWidth:h,offsetHeight:r}=t;Object.assign(e.style,{position:"absolute",left:`calc(${i}px - var(--grab-offset-x, 0px))`,top:`calc(${s}px - var(--grab-offset-y, 0px))`,height:this.dragResize?`${r}px`:undefined,width:this.dragResize?`${h}px`:undefined,willChange:"transform,opacity"});e.classList.add(this.draggedClass);return t.parentNode.appendChild(e)}removeEventHandlers(t){t=t||this.sortableHost;t.removeEventListener("mousedown",this.handleTrack);t.removeEventListener("touchstart",this.handleTrack);t.removeEventListener("keydown",this.handleKeydown)}addEventHandlers(t){t=t||this.sortableHost;d(t,"mousedown touchstart",this.handleTrack,{passive:true});t.addEventListener("keydown",this.handleKeydown)}attachMutationObserver(){if(this.mutationObserver){this.mutationObserver.disconnect();this.mutationObserver=undefined}this.mutationObserver=new MutationObserver((()=>{const t=Array.from(this.keyboardHandleMap.values());const e=Array.from(this.sortableHost.querySelectorAll(this.itemSelector));if(t.length!==e.length||!!e.find((e=>!t.includes(e)))){this.refreshKeyboardHandles()}}));this.mutationObserver.observe(this.sortableHost,{subtree:true,childList:true})}handleKeydown(t){const e=t.target;let i;let s;if(this.handleSelector){i=e.closest(this.handleSelector);s=e.closest(this.itemSelector)}else{s=this.keyboardHandleMap.get(e);i=e}if(!i||!s)return;const h=t=>{this.keyboardSortActive=t;this.draggedElement=t?s:undefined;s.classList.toggle(this.draggedClass,t);i.classList.toggle(this.handleDraggedClass,t);if(t){this.addAriaMsg(this.grabbedHelperText(s));document.addEventListener("mousedown",(()=>h(false)),{once:true})}else{this.addAriaMsg(this.droppedHelperText(s))}};if([" ","Space","Enter"].includes(t.key)){t.preventDefault();if(!this.keyboardSortActive){h(true);this.sortableNodes=Array.from(this.sortableHost.querySelectorAll(this.itemSelector))||[];const t=this.nanoGrabbed.emit({element:s,index:this.sortableNodes.indexOf(s)});if(t.defaultPrevented){h(false);return}}else{h(false);this.nanoDropped.emit({element:s})}return}if(!this.keyboardSortActive)return;if(["Escape","Tab"].includes(t.key))h(false);let r=["Home","End"];if(!this.orientation||this.orientation==="horizontal")r=[...r,"ArrowRight","ArrowLeft"];if(!this.orientation||this.orientation==="vertical")r=[...r,"ArrowUp","ArrowDown"];if(!r.includes(t.key))return;t.preventDefault();this.sortableNodes=Array.from(this.sortableHost.querySelectorAll(this.itemSelector))||[];this.dropzoneNodes=Array.from(this.sortableHost.querySelectorAll(this.dropzoneSelector))||[];const n=this.sortableNodes.indexOf(this.draggedElement);let o=-1;if(this.dropzoneNodes.length){const t=this.draggedElement.closest(this.dropzoneSelector);o=this.dropzoneNodes.indexOf(t);o=o>-1?o:-1}const a=n-1<0&&o>-1?this.dropzoneNodes[o-1]:this.sortableNodes[n-1];const d=n+1===this.sortableNodes.length&&o>-1?this.dropzoneNodes[o+1]:this.sortableNodes[n+1];if(t.key==="Home"){this.insertAtTarget(this.draggedElement,this.sortableNodes[0])}if(t.key==="End"){this.insertAtTarget(this.draggedElement,this.sortableNodes[this.sortableNodes.length-1])}if(["ArrowRight","ArrowDown"].includes(t.key)){this.insertAtTarget(this.draggedElement,d)}if(["ArrowLeft","ArrowUp"].includes(t.key)){this.insertAtTarget(this.draggedElement,a)}this.finishOrder();this.draggedElement=s;const l=()=>{requestAnimationFrame((()=>{if(typeof i["setFocus"]==="function")i.setFocus();else i.focus()}))};if(this.animationPromise)this.animationPromise.then((()=>l()));else l()}handleTrack(t){if(this.dragRequestPending||t.button&&t.button!==1)return;const e=t=>{if(t.cancelable)t.preventDefault();clearTimeout(this.mouseDownTimer)};const i=()=>{clearTimeout(this.mouseDownTimer);document.removeEventListener("touchmove",e);document.removeEventListener("contextmenu",this.finishOrder)};i();this.mouseDownTimer=window?.setTimeout((()=>{if(!this.trackStart(t))return;document.addEventListener("touchmove",e,{passive:false});document.addEventListener("contextmenu",this.finishOrder);this.addAriaMsg(this.grabbedHelperText(this.draggedElement));o(this.sortableHost,{initialEvent:t,relative:true,onMove:(t,e)=>{this.trackMove(t,e)},onStop:()=>{this.nanoDropped.emit({element:this.draggedElement});i();const t=()=>{this.addAriaMsg(this.droppedHelperText(this.draggedElement));requestAnimationFrame((()=>this.finishOrder()))};if(this.animationPromise){this.animationPromise.then((()=>t()))}else t()}})}),150);d(document,"mouseup touchend touchmove",(()=>clearTimeout(this.mouseDownTimer)),{once:true})}trackStart(t){const e=t.target;let i;if(this.handleSelector){i=e.closest(this.handleSelector);if(!i)return;i.classList.add(this.handleDraggedClass)}const s=e.closest(this.itemSelector);if(!s)return false;this.sortableNodes=Array.from(this.sortableHost.querySelectorAll(this.itemSelector))||[];const h=this.nanoGrabbed.emit({element:s,index:this.sortableNodes.indexOf(s)});if(h.defaultPrevented)return false;t.preventDefault();this.updateUserSelectStyle("none");this.dragRequestPending=true;this.draggedElement=s;this.dropzoneNodes=Array.from(this.sortableHost.querySelectorAll(this.dropzoneSelector))||[];this.draggedElementClone=this.createClone(s);this.draggedElementOrigin=s.nextSibling;this.animatedElements=[];this.draggedElement.classList.add(this.placeholderClass);return true}finishOrder=()=>{if(!this.draggedElement)return;const t=Array.from(this.sortableHost.querySelectorAll(this.itemSelector)).filter((t=>t!==this.draggedElementClone));const e=this.sortableNodes.indexOf(this.draggedElement);const i=t.indexOf(this.draggedElement);if(this.handleSelector){const t=this.draggedElement.querySelector(this.handleSelector);t.classList.remove(this.handleDraggedClass)}if(e!==i){const s=this.nanoOrderChange.emit({element:this.draggedElement,originalIndex:e,targetIndex:i});if(s.defaultPrevented){this.animationPromise=new Promise((i=>{setTimeout((()=>{this.insertAtTarget(this.draggedElement,t[e]);this.reset();this.dragRequestPending=false;i()}),200)}));return}this.addAriaMsg(this.reorderHelperText(this.draggedElement,t,i+1))}this.reset();this.dragRequestPending=false};trackMove=(t,s)=>{if(!this.draggedElementClone){return}if(this.orientation){t=t*f[this.orientation].x;s=s*f[this.orientation].y}e((()=>{Object.assign(this.draggedElementClone.style,{transform:`translate3d(${t}px, ${s}px, 0)`})}));let h=this.hitTest(this.draggedElementClone,this.sortableNodes)[0];let r;if(this.dropzoneSelector&&this.dropzoneActiveClass){i((()=>{r=this.draggedElement.closest(this.dropzoneSelector);e((()=>{this.dropzoneNodes.filter((t=>t!==r)).forEach((t=>t.classList.remove(this.dropzoneActiveClass)));r.classList.add(this.dropzoneActiveClass)}))}))}if(!h&&this.dropzoneNodes.length){h=this.hitTest(this.draggedElementClone,this.dropzoneNodes)[0];if(this.draggedElement.closest(this.dropzoneSelector)===h)return}if(h&&h!==this.draggedElement&&!this.isAnimating(h)){this.insertAtTarget(this.draggedElement,h)}};constructor(t){s(this,t);this.nanoOrderChange=h(this,"nanoOrderChange",7);this.nanoGrabbed=h(this,"nanoGrabbed",7);this.nanoDropped=h(this,"nanoDropped",7);this.handleTrack=this.handleTrack.bind(this);this.handleKeydown=this.handleKeydown.bind(this);this.refreshKeyboardHandles=this.refreshKeyboardHandles.bind(this);this.refreshKeyboardHandles=a(this.refreshKeyboardHandles,500)}connectedCallback(){this.addEventHandlers();this.refreshKeyboardHandles();this.attachMutationObserver();if(!this.host.querySelector(`#${this.sortableId}`)){this.host.insertAdjacentHTML("beforeend",`<div class="visually-hidden" id="${this.sortableId}">${this.helperText}</div>`)}}disconnectedCallback(){this.removeEventHandlers();this.host.querySelector(`#${this.sortableId}`)?.remove();if(this.mutationObserver){this.mutationObserver.disconnect();this.mutationObserver=undefined}}render(){return n(r,{key:"c9bce5fa4dd5410d54d84a41ab8ece10d316ede0",class:"nano-sortable"},n("div",{key:"beffbe43a385e254cb696cb5ba98797c0a8be718",class:"sortable__live-region","aria-live":"polite","aria-relevant":"additions","aria-atomic":"true",role:"log",part:"announcements"},this.ariaTextList.map((t=>n("div",null,t)))),n("slot",{key:"9a552eeb74869b9825311907172f44ea0358a3cb"}))}static get watchers(){return{itemSelector:["handleItemSelectorChange"],handleSelector:["handleHandleSelectorChange"],createKeyboardHandle:["handleCreateKeyboardHandleChange"],sortableHostElement:["handleSortableHostElement"]}}};b.style=c;export{b as nano_sortable};
|
5
5
|
//# sourceMappingURL=nano-sortable.entry.js.map
|