@nanoporetech-digital/components 7.6.0 → 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-99d6a3cc.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-263468df.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-d15f6782.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-b7ee4edc.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-99d6a3cc.js.map +0 -1
- package/dist/cjs/page-dots-99dd88f6.js.map +0 -1
- package/dist/cjs/table.worker-263468df.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-d15f6782.js.map +0 -1
- package/dist/esm/page-dots-986d3b32.js.map +0 -1
- package/dist/esm/table.worker-b7ee4edc.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-d15f6782.js +0 -5
- package/dist/nano-components/nano-table-d15f6782.js.map +0 -1
- package/dist/nano-components/page-dots-986d3b32.js +0 -5
- package/dist/nano-components/table.worker-b7ee4edc.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-b7ee4edc.js.map → table.worker-d636a71f.js.map} +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/custom-element-doc-generator.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/generate-vue-component.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/index.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/output-vue.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/plugin.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/types.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/generators/vue/utils.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/stencil.config.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/stencil.config.prod.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/testing/mocks/intersection-observer.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/wdio.conf.d.ts +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"file":"nano-global-nav.entry.js","mappings":"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","names":[],"sources":["src/utils/fetch.ts","src/components/global-nav/style/global-nav.scss?tag=nano-global-nav&encapsulation=shadow","src/components/global-nav/global-nav.tsx"],"sourcesContent":["interface FetchInputConfig {\n body?: { [prop: string]: string };\n headers?: { [prop: string]: string };\n [prop: string]: any;\n}\n\nexport async function clientFetch(\n url: string,\n { body, ...customConfig }: FetchInputConfig = {}\n) {\n const headers: { [prop: string]: string } = {\n Accept: 'application/json, text/plain, */*',\n 'Access-Control-Allow-Origin': '*',\n 'Content-Type': 'application/json',\n Cache: 'no-cache',\n };\n const config: RequestInit = {\n method: body ? 'POST' : 'GET',\n credentials: 'include',\n keepalive: true,\n mode: 'cors',\n ...customConfig,\n headers: {\n ...headers,\n ...customConfig.headers,\n },\n };\n if (body) {\n config.body = JSON.stringify(body);\n }\n\n let id = setTimeout(() => {}, 0);\n if (window.AbortController) {\n const controller = new AbortController();\n const { timeout = 500 } = customConfig;\n id = setTimeout(() => controller.abort(), timeout);\n config.signal = controller.signal;\n }\n\n const response = await fetch(url, config);\n clearTimeout(id);\n\n if (response.ok) {\n return await response.json();\n } else {\n const errorMessage = await response.text();\n return new Error(errorMessage);\n }\n}\n","@use 'sass:map';\n@use '../../../global/style/nano-theme/tokens';\n\n// local\n@use 'setup';\n@use 'bar';\n@use 'burger';\n@use 'search';\n@use 'user';\n\n:host {\n /**\n * @prop --bar-vertical-padding: Defaults to 21px;\n * @prop --bar-item-spacing: Defaults to 16px;\n * @prop --bar-background: Defaults to white;\n * @prop --bar-text-color: Defaults to #{map.get(tokens.$colors, black)};\n * @prop --bar-color-shade: Defaults to #d8d8d8;\n * @prop --bar-color-tint: Defaults to rgb(19 89 111);\n * @prop --bar-color-focus: Defaults to #007fa9;\n * @prop --bar-user-panel-bg: Defaults to #016d86;\n * @prop --bar-dropdown-bg: Defaults to #196c82;\n * @prop --bar-dropdown-text: Defaults to white;\n * @prop --bar-search-focus: Defaults to #007FA9;\n\n * @prop --menu-background: Defaults to #001a21;\n * @prop --menu-text-color: Defaults to white;\n * @prop --menu-user-profile-bg: Defaults to #001a21;\n * @prop --menu-user-panel-bg: Defaults to #193037;\n * @prop --menu-padding: Defaults to 12px;\n * @prop --menu-hint-color: Defaults to #33484d;\n * @prop --menu-title-text: Defaults to #{map.get(tokens.$colors, lightblue)};\n * @prop --menu-icon-color: Defaults to white;\n\n * @prop --login-button-bg: Defaults to #17bb75;\n * @prop --login-button-text: Defaults to white;\n */\n\n --bar-vertical-padding: 19px;\n --bar-item-spacing: 13px;\n --bar-background: white;\n --bar-text-color: #{map.get(tokens.$colors, black)};\n --bar-color-shade: #d8d8d8;\n --bar-color-tint: rgb(19 89 111);\n --bar-color-focus: #007fa9;\n --bar-user-panel-bg: #016d86;\n --bar-dropdown-bg: #196c82;\n --bar-dropdown-text: white;\n --bar-search-focus: #007FA9; \n --menu-background: #001a21;\n --menu-text-color: white;\n --menu-user-profile-bg: #001a21;\n --menu-user-panel-bg: #193037;\n --menu-padding: 12px;\n --menu-hint-color: #33484d;\n --menu-title-text: #{map.get(tokens.$colors, lightblue)};\n --menu-icon-color: white;\n --login-button-bg: #007fa9;\n --login-button-text: white;\n\n // not sure if this required any more.\n --padding: 12px;\n --padding-top: var(--padding);\n --padding-end: var(--padding);\n --padding-bottom: var(--padding);\n --padding-start: var(--padding);\n\n display: flex;\n flex-direction: column;\n position: relative;\n line-height: 1.5;\n block-size: 100%;\n font-size: 0.9375em;\n font-size: clamp(0.77rem, 1vw, 0.9rem);\n\n input,\n select,\n button {\n font-family: inherit;\n appearance: none;\n font-size: inherit;\n }\n\n a,\n button {\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n box-shadow: #{tokens.$control-focus-style};\n }\n }\n}\n","import {\n Component,\n h,\n Host,\n Element,\n State,\n Watch,\n Event,\n EventEmitter,\n Prop,\n Listen,\n Build,\n getAssetPath,\n readTask,\n writeTask,\n Method,\n VNode,\n ComponentInterface,\n} from '@stencil/core';\nimport algoliasearch from 'algoliasearch/dist/algoliasearch-lite.esm.browser';\nimport { clientFetch } from '../../utils/fetch';\nimport { ComponentStore } from '../../utils/store/component-store';\nimport { debounce } from '../../utils/throttle';\nimport { displayTransition } from '../../utils/transitions';\nimport searchInsight from '../../utils/search-insights';\n\nimport {\n AlgoliaMultiResult,\n AlgoliaMultiResults,\n AlgoliaResultHit,\n AlgoliaResults,\n AlgoliaSearchResultDetail,\n SearchIndex,\n} from '../algolia/algolia-interface';\nimport { NavItemEventDetail } from '../nav-item/nav-item-interface';\nimport { InputChangeEventDetail } from '../input/input-interface';\nimport { SelectChangeEventDetail } from '../select/select-interface';\nimport {\n AlgoliaNetworkError,\n MyAccountData,\n MyAccountLink,\n MyAccountUser,\n} from './global-nav-interface';\nimport type { MultipleQueriesQuery } from '@algolia/client-search';\nimport type { SearchClient as AlgoliaClient } from 'algoliasearch/lite';\n\n// the 'breakpoints' where different segments of content go into or out-of the burger / overflow menu\nconst THRESHOLDBREAKS = {\n about: 0,\n main: 1,\n login: 2,\n search: 3,\n icon: 4,\n};\nconst THRESHOLDLIMIT = Object.keys(THRESHOLDBREAKS).length;\n\n/**\n * Nanopore digital global navigation and search bar.\n * Incorporates MyAccount / SSO states (messages / cart / user name etc).\n * Incorporates Algolia search.\n *\n * @slot main - main nav items. Should be used with nano-nav-item's\n * @slot icon - nano-nav-item's displayed alongside icon links that come from MyAccount\n * @slot loggedin - nano-nav-item's to display when users are signed in, alongside links from from MyAccount (within the overflow menu panel).\n * @slot about - nano-nav-item's to display with about links that come from MyAccount\n * @slot site - nano-nav-item's to display with site links that come from MyAccount\n * @slot overflow - items to always display in the overflow menu\n * @slot search - when not using myaccount search OR show-search=\"false\" you can utilise the search slot\n * @slot promotion - a free area for any promotional content, displayed within the overflow menu panel\n * @slot logo - when show-logo=\"false\" you can utilise the logo slot\n * @slot - if using search functionality, place a `<nano-search-results />` element in the default slot\n *\n * @part burger - the overflow / burger ui element\n * @part burger-menu - the overflow / burger menu\n * @part burger-actions-bar - the top bar of the overflow / burger menu\n * @part burger-content - the main content area of the overflow / burger menu\n * @part bars - the main wrapper around the `main-bar` and `search-bar` nav bars\n * @part main-bar - the main nav menu bar\n * @part logo-link - the link wrapping the logo\n * @part search-bar - the search bar that appears under the main nav menu bar\n */\n@Component({\n tag: 'nano-global-nav',\n styleUrl: 'style/global-nav.scss',\n shadow: true,\n assetsDirs: ['assets'],\n})\nexport class GlobalNav implements ComponentInterface {\n // position and dimension state\n private debounceResize: () => any;\n private debounceSetResizingState: () => any;\n private currSize: number = 0;\n\n // menu\n private menuDiv: HTMLElement;\n private menuBtn: HTMLButtonElement;\n private menuWrapDiv: HTMLDivElement;\n private menuContentDiv: HTMLDivElement;\n private menuSelectedItems: NodeListOf<HTMLNanoNavItemElement>;\n\n // search\n private searchBarEl: HTMLDivElement;\n private searchInput: HTMLNanoInputElement;\n private algoliaClient: AlgoliaClient;\n private currentIndex: SearchIndex;\n private autocompleteResults: AlgoliaResults | null;\n private autocompleteEles: Array<HTMLAnchorElement | HTMLButtonElement> = [];\n private currAIndex: number = -1;\n private algoliaSearchResults: AlgoliaMultiResults | null;\n private scopeSearch: AlgoliaMultiResults | null;\n\n // general\n private mainBarDiv: HTMLElement;\n private userLinkPanel: HTMLDivElement;\n private isLoggedIn: boolean = false;\n private myAccData: MyAccountData = null;\n\n // myaccount links\n private aboutNavItms: MyAccountLink[] = [];\n private siteNavItms: MyAccountLink[] = [];\n private loggedInNavItms: MyAccountLink[] = [];\n\n constructor() {\n this.assessSlottedContent = debounce(\n this.assessSlottedContent.bind(this),\n 10\n );\n this.handleBarResize = debounce(this.handleBarResize.bind(this), 200);\n }\n\n // user profile link\n @State() userProfileUrl: string = '';\n\n // has slot tests\n @State() hasLoggedinSlot: boolean = false;\n @State() hasSiteSlot: boolean = false;\n @State() hasPromotionSlot: boolean = false;\n\n // slot item number tests\n @State() aboutSlotLen: number = 0;\n @State() iconSlotLen: number = 0;\n @State() mainSlotLen: number = 0;\n @State() overflowSlotLen: number = 0;\n @State() searchSlotLen: number = 0;\n\n // threshold / sizing\n @State() thresholdReady: boolean = false;\n @State() remoteDataReady: boolean = false;\n @State() ready: boolean = false;\n @State() isResizing: boolean = false;\n @State() threshold: number = THRESHOLDLIMIT;\n\n // modals state\n @State() modalOpen: boolean = false;\n @State() modalIsOpen: boolean = false;\n @State() searchBarShown: boolean = false;\n @State() scrollingUp: boolean = true;\n @State() showAutocomplete: boolean = false;\n @State() secondaryMenuOpen: HTMLNanoNavItemElement = null;\n @State() userMenuOpen: boolean = false;\n @State() menuFullScreen: boolean = false;\n\n // search\n @State() searchLoading: boolean = false;\n @State() searchValInternal: string = '';\n @State() internalSearchIndeces: Array<SearchIndex> = [];\n\n @Element() private el: HTMLNanoGlobalNavElement;\n\n /**\n * Connect to local, dev, test or prod MyAccount\n * environments to retrieve global nav / sso data.\n * Alternatively, you can use the `ssoDataUrl` prop.\n */\n @Prop() env?: 'local' | 'dev' | 'test' | 'prod' = 'prod';\n\n /**\n * A base url to retrieve global nav / sso data.\n * `nav_bar_data.json` will be appended to this url.\n * An alternative to the pre-defined `env` urls\n */\n @Prop() ssoDataUrl?: string;\n\n /**\n * An alternative to both 'env' and 'ssoDataUrl'.\n * You can directly provide a JSON object of myaccount data.\n * (e.g. https://myaccount.nanoporetech.com/nav_bar_data.json)\n * This is useful for SSR\n */\n @Prop() myAccountData: MyAccountData | null;\n @Watch('myAccountData')\n handleMyAccountData() {\n if (!this.myAccountData) return;\n\n if (!this.myAccountData.user || !this.myAccountData.links) return;\n\n this.myAccData = this.myAccountData;\n if (this.myAccData.user.id) {\n this.isLoggedIn = true;\n this.myAccountUser = this.myAccData.user;\n }\n\n this.processMyAccLinks();\n this.processMyAccData();\n this.remoteDataReady = true;\n }\n\n /**\n * Where to take user after SSO login\n */\n @Prop() ssoRedirect: string = encodeURIComponent(window.location.href);\n\n /**\n * Whether to attempt to get global nav / sso data from MyAccount\n */\n @Prop() getMyAccountData: boolean = true;\n\n /**\n * Active MyAccount link sections. By default all will show.\n */\n @Prop() activeMyAccountSections: (\n | 'about'\n | 'loggedin'\n | 'sites'\n | 'icons'\n )[] = null;\n\n /**\n * Whether to show search functionality\n */\n @Prop() showSearch: boolean = true;\n\n /**\n * Whether to show Nanopore logo\n */\n @Prop() showLogo: boolean = true;\n\n /**\n * The link to put on the logo\n */\n @Prop() logoUrl: string = location.protocol + '//' + location.host;\n\n /**\n * An array of Algolia search indexes (and optional display names). Will be automatically populated from MyAccount\n */\n @Prop() searchIndeces: Array<SearchIndex> = [];\n\n /**\n * Logged in user details automatically populated from MyAccount\n */\n @Prop({ mutable: true }) myAccountUser: MyAccountUser = null;\n\n /**\n * An Algolia App ID key. Will be automatically populated from MyAccount\n */\n @Prop({ mutable: true }) searchAppId: string;\n\n /**\n * An Algolia API Key. Will be automatically populated from MyAccount\n */\n @Prop({ mutable: true }) searchApiKey: string;\n\n /**\n * A search value to passed to Algolia to programmatically get or to preload search results\n */\n @Prop({ mutable: true }) searchValue: string = '';\n\n /**\n * Algolia search index to programmatically set or to set an initial index\n */\n @Prop({ mutable: true }) searchIndex: string = 'All';\n\n /**\n * MyAccount store cart count.\n */\n @Prop({ mutable: true }) cartCount: number = 0;\n\n /**\n * MyAccount un-read message count.\n */\n @Prop({ mutable: true }) msgCount: number = 0;\n\n /**\n * Url to the Nanopore store cart. Will default to the url supplied by MyAccount\n */\n @Prop({ mutable: true }) cartUrl: string = null;\n\n /**\n * Url to the Nanopore message center. Will default to the url supplied by MyAccount\n */\n @Prop({ mutable: true }) msgUrl: string = null;\n\n /**\n * Emitted when the global nav is ready.\n */\n @Event() nanoIsReady!: EventEmitter<void>;\n\n /**\n * Emitted when search results are successfully returned from Algolia.\n */\n @Event() nanoSearchResult!: EventEmitter<AlgoliaSearchResultDetail>;\n\n /**\n * Emitted when algolia returns an error.\n */\n @Event() nanoSearchError!: EventEmitter<AlgoliaNetworkError>;\n\n /**\n * Emitted when search field is cleared.\n */\n @Event() nanoSearchReset!: EventEmitter<AlgoliaSearchResultDetail>;\n\n /**\n * Submit the search form (a search value must be present)\n */\n @Method()\n async submitSearch() {\n this.onSearchSubmit();\n this.showAutocomplete = false;\n return;\n }\n\n /**\n * Manually open or close the overflow (burger) menu\n * @param openClose - optionally force open (true) or close (false)\n */\n @Method()\n async toggleOverflowMenu(openClose?: boolean) {\n if (openClose === true || (openClose === undefined && !this.modalIsOpen)) {\n this.menuOpen();\n } else {\n this.menuClose(null, true);\n }\n }\n\n @Watch('env')\n @Watch('ssoDataUrl')\n async getMyAccData() {\n if (this.myAccData) return;\n\n switch (this.env) {\n case 'prod':\n this.userProfileUrl = 'https://myaccount.nanoporetech.com/';\n break;\n case 'local':\n case 'dev':\n case 'test':\n default:\n this.userProfileUrl = 'https://myaccount.nanoporetech.com/';\n break;\n }\n\n if (!this.getMyAccountData || this.myAccData) {\n this.remoteDataReady = true;\n return;\n }\n\n let url = this.ssoDataUrl;\n\n if (!url) {\n switch (this.env) {\n case 'dev':\n url = 'https://myaccount-dev.nanoporetech.com/';\n break;\n case 'test':\n url = 'https://myaccount-test.nanoporetech.com/';\n break;\n default:\n url = 'https://myaccount.nanoporetech.com/';\n break;\n }\n }\n\n const config = { timeout: 5000 };\n\n try {\n if (this.env === 'local') {\n this.myAccData = (await import(\n `./assets/local-my-account.json`\n )) as unknown as MyAccountData;\n } else {\n this.myAccData = await clientFetch(url + 'nav_bar_data.json', config);\n }\n if (this.myAccData.user.id) {\n this.isLoggedIn = true;\n this.myAccountUser = this.myAccData.user;\n }\n this.processMyAccLinks();\n this.processMyAccData();\n setTimeout(() => (this.remoteDataReady = true), 300);\n } catch (e) {\n console.error(e);\n this.remoteDataReady = true;\n }\n }\n\n @Watch('searchIndex')\n currentSelectedIndex() {\n if (!this.internalSearchIndeces.length) {\n return;\n }\n if (!this.searchIndex) return this.internalSearchIndeces[0];\n\n const foundIndex = this.internalSearchIndeces.find(\n (index) => index.name === this.searchIndex\n );\n\n if (!foundIndex) {\n this.currentIndex = this.internalSearchIndeces[0];\n console.error('index not found');\n return;\n }\n\n this.currentIndex = foundIndex;\n return foundIndex;\n }\n\n @Watch('searchValInternal')\n changeInternalSearchVal() {\n if (this.searchValInternal !== this.searchValue)\n this.searchValue = this.searchValInternal;\n }\n\n @Watch('searchApiKey')\n @Watch('searchAppId')\n initAlgoliaClient() {\n if (!this.searchAppId || !this.searchApiKey) return;\n\n this.algoliaClient = algoliasearch(this.searchAppId, this.searchApiKey);\n this.addAlgoliaIndeces();\n\n // setup algolia analytics\n searchInsight.init(this.searchAppId, this.searchApiKey).then(() => {\n if (this.myAccountUser) searchInsight.setUser(this.myAccountUser.uuid);\n });\n }\n\n /** Public facing set of Algolia indices. Add to any indices we may already have (e.g. from MyAccount) */\n @Watch('searchIndeces')\n addIndeces() {\n this.internalSearchIndeces = [\n ...this.internalSearchIndeces,\n ...this.searchIndeces,\n ];\n }\n\n /** Internal set of of Algolia indices. Includes public & private (e.g. from MyAccount) */\n @Watch('internalSearchIndeces')\n addAlgoliaIndeces() {\n if (!this.algoliaClient || !this.internalSearchIndeces.length) return;\n\n this.internalSearchIndeces.forEach((searchIndex) => {\n searchIndex.alogliaIndex = this.algoliaClient.initIndex(\n searchIndex.index\n );\n });\n if (!this.searchIndex) {\n this.searchIndex = this.internalSearchIndeces[0].name;\n }\n }\n\n /** Current content breakpoint. If it goes up, things can look wonky for a second so we temporarily hide stuff */\n @Watch('threshold')\n thresholdChange(newThreshold: number, oldThreshold: number) {\n if (newThreshold > oldThreshold) {\n // we've resized to larger screen.\n this.setResizingState(true);\n }\n }\n\n /* Check if data and item placement is ready */\n @Watch('thresholdReady')\n @Watch('remoteDataReady')\n assessReady() {\n if (this.thresholdReady && this.remoteDataReady) {\n this.ready = true;\n this.nanoIsReady.emit();\n\n if (this.searchValue) requestAnimationFrame(() => this.searchbarShow());\n }\n }\n\n /**\n * Add / remove events when autocomplete results show / hide.\n */\n @Watch('showAutocomplete')\n setupAutocompleteBlur() {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.searchInput.clientWidth; // force reflow\n if (this.showAutocomplete) {\n this.el.shadowRoot.addEventListener('click', this.onAutocompleteBlur);\n } else {\n this.el.shadowRoot.removeEventListener('click', this.onAutocompleteBlur);\n }\n }\n\n @Watch('secondaryMenuOpen')\n closeSearchBar() {\n if (!!this.secondaryMenuOpen && this.searchBarShown) this.searchbarHide();\n }\n\n /** As relevant slotted items change, reset resizing breakpoints */\n @Watch('aboutSlotLen')\n @Watch('iconSlotLen')\n @Watch('mainSlotLen')\n @Watch('overflowSlotLen')\n @Watch('searchSlotLen')\n slotChange() {\n this.threshold = THRESHOLDLIMIT;\n }\n\n // General classes for visuals\n\n private thresholdClasses() {\n const classes = [];\n let i = 0;\n for (i; i < this.threshold; i++) classes.push('threshold-' + (i + 1));\n return classes;\n }\n\n /**\n * provides 'isResizing' - we use this to fade content out on 'breakpoint' increase\n * (when the screen size increases). Otherwise the stepping through of\n * breakpoints to calculate if content currently fits shows on screen (looks ugly)\n */\n private setResizingState = (state: boolean = false) => {\n if (typeof this.debounceSetResizingState === 'undefined') {\n this.debounceSetResizingState = debounce(this.setResizingState, 600);\n }\n if (state) {\n this.isResizing = true;\n this.debounceSetResizingState();\n } else {\n this.isResizing = false;\n }\n };\n\n // Global DOM Events\n\n /**\n * 1) Reset threshold (item fit breakpoint) when screen is bigger than before.\n * 2) Assess the all threshold / breakpoints to see if content fits\n * 3) Hide search bar whenever we resize\n */\n private onWindowResize() {\n if (this.threshold < THRESHOLDLIMIT && window.innerWidth > this.currSize) {\n this.threshold = THRESHOLDLIMIT;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.mainBarDiv.clientWidth; // force reflow\n }\n this.currSize = window.innerWidth;\n this.searchbarHide();\n this.handleBarResize();\n }\n\n // Burger / Overflow Menu\n\n /* listen to nav-item secondary open / close events primarily for resizing the menu */\n @Listen('nanoOpen')\n secondaryOpen(ev: CustomEvent & { target: HTMLNanoNavItemElement }) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n this.secondaryMenuOpen = ev.target;\n\n if (!this.menuSelectedItems) {\n this.menuSelectedItems = this.el.querySelectorAll(\n 'nano-nav-item[selected]'\n );\n this.menuSelectedItems.forEach((i) => i.classList.remove('selected'));\n }\n\n this.menuContentDiv.style.minHeight =\n (ev.detail as NavItemEventDetail).secondaryMenu.scrollHeight + 'px';\n }\n\n @Listen('nanoClose')\n secondaryClose(ev: CustomEvent & { target: HTMLNanoNavItemElement }) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n\n if (this.secondaryMenuOpen === ev.target && this.menuSelectedItems) {\n this.secondaryMenuOpen = null;\n this.menuContentDiv.style.minHeight = '';\n this.menuSelectedItems = null;\n this.el\n .querySelectorAll('nano-nav-item[selected]')\n .forEach((i) => i.classList.add('selected'));\n }\n }\n\n private onMenuBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n if (this.modalOpen) this.menuClose(ev, true);\n else this.menuOpen();\n break;\n }\n };\n\n private onMenuBtnClick = (ev: MouseEvent) => {\n this.menuClose(ev, true);\n };\n\n private menuOpen = (e?: MouseEvent) => {\n if (e) e.preventDefault();\n\n this.menuDiv.style.display = 'block';\n // need to open menu in stages\n // wait for re-flow after changing display\n // wait for repaint after animate, then focus\n\n this.modalOpen = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.menuDiv.clientWidth; // force reflow\n\n this.menuWrapDiv.focus({ preventScroll: true });\n if (\n this.threshold < 2 ||\n this.menuWrapDiv.scrollHeight > window.innerHeight\n ) {\n document.body.style.overflow = 'hidden';\n this.menuFullScreen = true;\n } else document.body.style.overflowX = 'hidden';\n\n setTimeout(() => (this.modalIsOpen = true), 300);\n };\n\n private onMenuHidden = () => {\n this.menuDiv.removeEventListener('transitionend', this.onMenuHidden);\n\n document.body.style.overflow = '';\n this.menuDiv.style.display = 'none';\n this.modalIsOpen = false;\n this.menuFullScreen = false;\n\n setTimeout(() => {\n if (document.activeElement === document.body && this.menuBtn)\n this.mainBarDiv.focus({ preventScroll: true });\n }, 50);\n };\n\n @Listen('click', { target: 'body' })\n menuClose(\n ev?: FocusEvent | MouseEvent | KeyboardEvent | TouchEvent,\n force: boolean = false\n ) {\n if (!this.modalIsOpen) return;\n\n if (force) {\n this.modalOpen = false;\n this.menuDiv.addEventListener('transitionend', this.onMenuHidden);\n return;\n }\n\n if (\n !ev\n .composedPath()\n .some(\n (el) =>\n el === this.menuContentDiv ||\n (el as Element).classList?.contains('gn-menu_actions')\n )\n ) {\n requestAnimationFrame(() => {\n if (this.secondaryMenuOpen) return;\n\n this.modalOpen = false;\n this.menuDiv.addEventListener('transitionend', this.onMenuHidden);\n });\n }\n }\n\n private subMenuClose = (ev?: MouseEvent) => {\n ev.preventDefault();\n (ev.target as HTMLNanoNavItemElement).closest('nano-nav-item').open = false;\n };\n\n // User profile menu\n\n private onUserBtnClick = (ev: MouseEvent) => {\n ev.preventDefault();\n this.userMenuOpen = !this.userMenuOpen;\n };\n\n private onUserBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.userMenuOpen = !this.userMenuOpen;\n break;\n }\n };\n\n private onUserMenuBlur = (ev: FocusEvent) => {\n if (!ev.relatedTarget) {\n this.userMenuOpen = false;\n return;\n }\n if ((ev.relatedTarget as HTMLElement).closest('.user-links-panel'))\n return false;\n this.userMenuOpen = false;\n };\n\n @Watch('userMenuOpen')\n async handleUserMenu() {\n await displayTransition(this.userLinkPanel, {\n className: 'show',\n show: this.userMenuOpen,\n });\n if (this.userMenuOpen) {\n this.userLinkPanel.focus();\n this.userLinkPanel.addEventListener('focusout', this.onUserMenuBlur);\n } else {\n this.userLinkPanel.removeEventListener('focusout', this.onUserMenuBlur);\n this.el.focus();\n }\n }\n\n // Search bar open / closed\n\n private onSearchBtnClick = (ev: MouseEvent) => {\n ev.preventDefault();\n if (this.searchBarShown) this.searchbarHide();\n else this.searchbarShow();\n };\n\n private async searchbarShow() {\n if (!this.searchBarEl) return;\n this.searchBarShown = true;\n\n this.searchBarEl.removeEventListener(\n 'transitionend',\n this.onSearchBarHidden\n );\n this.searchBarEl.addEventListener('transitionend', this.onSearchBarShown);\n this.searchBarEl.style.display = 'block';\n\n requestAnimationFrame(() => {\n const widgetHeight =\n Math.floor(\n this.searchBarEl.querySelector('.search-widget').scrollHeight\n ) - 1;\n this.searchBarEl.style.height = widgetHeight.toString() + 'px';\n });\n }\n\n private onSearchBarShown = () => {\n this.searchBarEl.removeEventListener(\n 'transitionend',\n this.onSearchBarShown\n );\n if (this.searchInput) this.searchInput.setFocus();\n this.searchBarEl.style.overflow = 'visible';\n };\n\n private searchbarHide = (ev?: FocusEvent) => {\n if (\n ev &&\n ev.relatedTarget &&\n (ev.relatedTarget as HTMLElement).closest('#global-nav-search-bar')\n ) {\n return;\n }\n this.showAutocomplete = this.searchBarShown = false;\n if (this.searchValInternal.length && ev) return;\n\n if (!this.searchBarEl) return;\n this.searchBarEl.addEventListener('transitionend', this.onSearchBarHidden);\n this.searchBarEl.style.overflow = 'hidden';\n this.searchBarEl.style.height = '0px';\n };\n\n private onSearchBarHidden = () => {\n this.searchBarEl.style.display = 'none';\n };\n\n // Algolia search\n\n private autocompleteSnippet(hit: AlgoliaResultHit) {\n const lookFor = ['title']; // , 'body'\n if (hit._snippetResult) {\n const found = lookFor.find(\n (prop) =>\n hit._snippetResult[prop] &&\n hit._snippetResult[prop].matchLevel !== 'none'\n );\n\n if (found) {\n if (found !== 'title')\n return (\n (hit.title.length > 15\n ? hit.title.substring(0, 15) + ' ...'\n : hit.title) +\n ' ' +\n hit._snippetResult[found].value\n );\n else return hit._snippetResult['title'].value;\n }\n }\n return hit.title;\n }\n\n private onSearchInput = (ev: CustomEvent<InputEvent>) => {\n this.searchValInternal = this.searchInput.value;\n\n if (!this.isSearchValSet()) {\n this.searchLoading = false;\n return;\n }\n\n if (ev.detail.type === 'input') {\n this.showAutocomplete = false;\n this.searchLoading = true;\n }\n };\n\n /**\n * Constructs a multi-search query for all set search indices\n * (which are normally controlled via the myAccount payload) then sends to Algolia.\n * Post-processes results, adding correct domains to url fields.\n * @returns formatted algolia results\n */\n private async doAlgoliaSearch() {\n this.algoliaSearchResults = null;\n\n const queries: MultipleQueriesQuery[] = this.internalSearchIndeces.map(\n (index) => {\n const toReturn = {\n clickAnalytics: true,\n attributesToSnippet: ['body:5', 'title:8'],\n indexName: index.index,\n query: this.searchValInternal,\n facets: index.filters,\n hitsPerPage: 5,\n filters: '',\n };\n if (index.name === 'Community') {\n toReturn.filters =\n 'created > ' + Math.floor((Date.now() - 63115200000) / 1000); // only get last 2 years\n }\n return toReturn;\n }\n );\n\n try {\n this.algoliaSearchResults = this.processSearchResults(\n (await this.algoliaClient.search(queries)) as any\n ) as AlgoliaMultiResults;\n } catch (e) {\n this.nanoSearchError.emit(e as AlgoliaNetworkError);\n }\n this.searchLoading = false;\n if (!this.algoliaSearchResults) return;\n\n this.algoliaSearchResults.results.map((result, i) => {\n result.indexName = this.internalSearchIndeces[i].name;\n result.selected =\n this.currentIndex.name === this.internalSearchIndeces[i].name;\n result.domain = this.currentIndex.domain || null;\n result.domains = this.myAccData.domains || null;\n result.allGroup = !!this.internalSearchIndeces[i].allGroup;\n result.filters = this.internalSearchIndeces[i].filters;\n result.replicas = this.currentIndex.replicas;\n });\n\n return this.algoliaSearchResults;\n }\n\n /**\n * Called whenever the search input value changes.\n * Performs Algolia search and shows autocomplete results.\n * @param ev optional input change event\n */\n private onSearchChange = async (ev?: CustomEvent<InputChangeEventDetail>) => {\n this.searchValInternal = this.searchValue = ev\n ? ev.detail.value\n : this.searchValInternal;\n this.showAutocomplete = false;\n this.autocompleteResults = null;\n\n if (!this.isSearchValSet()) {\n if (!this.searchValInternal.length) {\n this.nanoSearchReset.emit();\n }\n this.searchLoading = false;\n return;\n }\n if (!this.currentIndex) this.currentSelectedIndex();\n\n // start search\n this.searchLoading = true;\n const algoliaHits = await this.doAlgoliaSearch();\n\n this.scopeSearch = null;\n this.scopeSearch = algoliaHits;\n\n // set / show autocomplete results\n this.autocompleteResults = algoliaHits.results.find((res) => res.selected);\n this.showAutocompleteResults();\n\n this.searchLoading = false;\n };\n\n /**\n * Called whenever the search form is submitted (but can also be called manually).\n * Fires event which will activate / display `nano-global-search-results`\n *\n * @param ev optional form submit event\n * @returns Algolia search results\n */\n private onSearchSubmit = async (ev?) => {\n if (ev) ev.preventDefault();\n if (!this.isSearchValSet()) return;\n\n if (!this.currentIndex) this.currentSelectedIndex();\n if (!this.algoliaSearchResults) await this.doAlgoliaSearch();\n\n const activeIndex = this.algoliaSearchResults.results.find(\n (res) => res.selected\n );\n const { index, domain, filters, query, replicas } = activeIndex;\n\n this.nanoSearchResult.emit({\n meta: {\n indexTitle: activeIndex.indexName,\n index,\n domain,\n filters,\n query,\n replicas,\n },\n client: { apiKey: this.searchApiKey, appId: this.searchAppId },\n });\n this.showAutocomplete = false;\n return this.algoliaSearchResults;\n };\n\n private onSearchIndexChange = async (\n index: CustomEvent<SelectChangeEventDetail> | string\n ) => {\n const ev = index as CustomEvent<SelectChangeEventDetail>;\n let indexStr = index as string;\n\n if (!this.currentIndex) this.currentSelectedIndex();\n\n if (ev.detail && ev.detail.value.length)\n indexStr = ev.detail.value as string;\n if (!indexStr || !indexStr.length) return;\n if (this.currentIndex.index === indexStr) return;\n\n const selectedIndex = this.internalSearchIndeces.find(\n (index) => index.index === indexStr\n );\n if (!selectedIndex || !selectedIndex.alogliaIndex) return;\n\n this.searchIndex = selectedIndex.name;\n if (this.isSearchValSet()) await this.onSearchChange();\n };\n\n private isSearchValSet() {\n if (this.searchValInternal.length < 3) return false;\n return true;\n }\n\n private switchIndexSubmit = async (index: string) => {\n if (this.isSearchValSet()) {\n await this.onSearchIndexChange(index);\n this.onSearchSubmit();\n } else this.onSearchIndexChange(index);\n };\n\n // Autocomplete\n\n @Watch('showAutocomplete')\n resetHitFocus() {\n this.currAIndex = -1;\n }\n\n private onAutocompleteBlur = (ev: MouseEvent) => {\n if (!this.showAutocomplete || !this.autocompleteResults) return;\n if (ev && ev.target && (ev.target as HTMLElement).closest('.search-widget'))\n return;\n this.showAutocomplete = false;\n };\n\n private showAutocompleteResults = () => {\n if (!this.autocompleteResults || !this.autocompleteResults.hits) return;\n this.showAutocomplete = true;\n };\n\n private setActiveElement(\n autocompleteEle: HTMLAnchorElement | HTMLButtonElement\n ) {\n this.autocompleteEles.map((ele) =>\n ele.setAttribute('aria-selected', 'false')\n );\n autocompleteEle.focus({ preventScroll: true });\n autocompleteEle.setAttribute('aria-selected', 'true');\n }\n\n private onAutocompleteInteract = (ev: KeyboardEvent) => {\n // list open, navigate items with arrows\n if (!this.showAutocomplete || !this.autocompleteResults) return;\n let testIndex = this.currAIndex;\n\n switch (ev.key) {\n case 'Tab':\n setTimeout(() => {\n if (\n !this.el.shadowRoot.activeElement ||\n !this.el.shadowRoot.activeElement.closest('.search-widget')\n ) {\n this.showAutocomplete = false;\n return;\n } else {\n const found = this.autocompleteEles.find((ele, i) => {\n if (ele === this.el.shadowRoot.activeElement) {\n this.currAIndex = i;\n return true;\n }\n });\n if (found) this.setActiveElement(found);\n else this.currAIndex = -1;\n }\n });\n break;\n case 'ArrowDown':\n case 'ArrowUp': {\n if (ev.key === 'ArrowDown') testIndex++;\n else if (ev.key === 'ArrowUp') testIndex--;\n\n const found = this.autocompleteEles[testIndex];\n if (\n found ||\n testIndex < 0 ||\n testIndex > this.autocompleteEles.length - 1\n ) {\n ev.preventDefault();\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.searchInput.clientWidth; // force reflow\n\n if (found) {\n this.setActiveElement(found);\n this.currAIndex = testIndex;\n } else if (testIndex < 0) {\n this.searchInput.setFocus();\n this.currAIndex = -1;\n }\n break;\n }\n case 'Enter':\n case ' ':\n if (this.autocompleteEles[this.currAIndex]) {\n this.autocompleteEles[this.currAIndex].click();\n }\n break;\n }\n };\n\n // Various.\n\n /**\n * Assesses what content is present in which slots\n */\n private assessSlottedContent = () => {\n readTask(() => {\n this.hasSiteSlot = !!this.el.querySelectorAll('[slot=\"site\"]').length;\n this.hasLoggedinSlot =\n !!this.el.querySelectorAll('[slot=\"loggedin\"]').length;\n this.hasPromotionSlot =\n !!this.el.querySelectorAll('[slot=\"promotion\"]').length;\n\n this.aboutSlotLen = this.el.querySelectorAll('[slot=\"about\"]').length;\n this.iconSlotLen = this.el.querySelectorAll('[slot=\"icon\"]').length;\n this.mainSlotLen = this.el.querySelectorAll('[slot=\"main\"]').length;\n this.overflowSlotLen =\n this.el.querySelectorAll('[slot=\"overflow\"]').length;\n this.searchSlotLen = this.el.querySelectorAll('[slot=\"search\"]').length;\n });\n };\n\n private async handleBarResize() {\n const descreaseThreshold = () => {\n return new Promise<void>((resolve) => {\n this.threshold--;\n\n setTimeout(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.mainBarDiv.clientWidth; // force reflow\n resolve();\n }, 200);\n });\n };\n\n // Decrease the threshold until content fits\n while (this.threshold > 0) {\n if (\n this.mainBarDiv.scrollWidth <= this.mainBarDiv.parentElement.clientWidth\n )\n break;\n await descreaseThreshold();\n }\n\n /* content now fits so add / remove context classes\n on nav-items depending on whether they're added to bar or burger. */\n\n this.thresholdReady = true;\n\n let menuItems: Array<Element>, barItems: Array<Element>;\n readTask(() => {\n menuItems = [\n ...Array.from(this.el.querySelectorAll('nano-nav-item[slot=\"site\"]')),\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"overflow\"]')\n ),\n ];\n barItems = [];\n\n if (this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.icon)\n menuItems.push(\n ...Array.from(this.el.querySelectorAll('nano-nav-item[slot=\"icon\"]'))\n );\n else\n barItems.push(\n ...Array.from(this.el.querySelectorAll('nano-nav-item[slot=\"icon\"]'))\n );\n\n if (this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"loggedin\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"loggedin\"]')\n )\n );\n\n if (this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.main)\n menuItems.push(\n ...Array.from(this.el.querySelectorAll('nano-nav-item[slot=\"main\"]'))\n );\n else\n barItems.push(\n ...Array.from(this.el.querySelectorAll('nano-nav-item[slot=\"main\"]'))\n );\n\n if (this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.about)\n menuItems.push(\n ...Array.from(this.el.querySelectorAll('nano-nav-item[slot=\"about\"]'))\n );\n else\n barItems.push(\n ...Array.from(this.el.querySelectorAll('nano-nav-item[slot=\"about\"]'))\n );\n });\n\n writeTask(() => {\n menuItems.forEach((item) => {\n item.classList.add('nano-global-nav-menu');\n item.classList.remove('nano-global-nav-bar');\n });\n barItems.forEach((item) => {\n item.classList.remove('nano-global-nav-menu');\n item.classList.add('nano-global-nav-bar');\n });\n });\n }\n\n // Stencil Lifecycle / Rendering\n\n componentWillLoad() {\n ComponentStore.init(\n this,\n ['searchIndex', 'searchValue'],\n 'url-hash',\n 'gns'\n );\n\n this.assessSlottedContent();\n }\n\n connectedCallback() {\n this.handleMyAccountData();\n this.getMyAccData();\n }\n\n componentDidLoad() {\n if (Build.isBrowser) {\n this.debounceResize = debounce(this.onWindowResize.bind(this), 200);\n window.addEventListener('resize', this.debounceResize);\n this.currSize = window.innerWidth;\n }\n\n this.initAlgoliaClient();\n this.addAlgoliaIndeces();\n requestAnimationFrame(() => this.handleBarResize());\n }\n\n disconnectedCallback() {\n if (Build.isBrowser)\n window.removeEventListener('resize', this.debounceResize);\n }\n\n // Render output\n\n private autocompleteList(): VNode {\n let content;\n if (this.showAutocomplete && this.scrollingUp) {\n let currentScopeHits = 0;\n let scopeChangeSuggestions = 0;\n\n const scopeSuggestReducer = (\n total: number,\n result: AlgoliaMultiResult\n ) => {\n return result.index !== this.currentIndex.index\n ? total + result.hits.length\n : total;\n };\n const currentSuggestReducer = (\n total: number,\n result: AlgoliaMultiResult\n ) => {\n return result.index === this.currentIndex.index\n ? total + result.hits.length\n : total;\n };\n\n if (this.scopeSearch) {\n scopeChangeSuggestions = this.scopeSearch.results.reduce(\n scopeSuggestReducer,\n 0\n );\n currentScopeHits = this.scopeSearch.results.reduce(\n currentSuggestReducer,\n 0\n );\n }\n\n if (\n (this.autocompleteResults && this.autocompleteResults.hits.length) ||\n (scopeChangeSuggestions && !currentScopeHits)\n ) {\n let scopeSuggestions = 0;\n\n content = (\n <div>\n {!currentScopeHits && (\n <div class=\"search-autocomplete-hit search-autocomplete-hit--no-result\">\n No results matching '{this.searchValInternal}' were found in{' '}\n <strong>{this.currentIndex.name}</strong>. Try another phrase.\n </div>\n )}\n {this.autocompleteResults && [\n this.autocompleteResults.hits.map((hit, i) => {\n return (\n <a\n role=\"option\"\n ref={(a) => this.autocompleteEles.push(a)}\n tabindex=\"-1\"\n id={'autocomplete-hit-' + i}\n href={hit.url}\n class=\"search-autocomplete-hit\"\n innerHTML={this.autocompleteSnippet(hit)}\n onClick={() => {\n searchInsight.sendClick({\n index: this.currentIndex.index,\n eventName:\n 'Global nav quick search - search result clicked',\n queryID: this.autocompleteResults.queryID,\n objectIDs: [hit.objectID],\n positions: [i + 1],\n });\n }}\n ></a>\n );\n }),\n ]}\n {(!currentScopeHits || this.currentIndex.allGroup) &&\n this.scopeSearch &&\n this.scopeSearch.results && [\n this.scopeSearch.results.map((result, i) => {\n if (\n !result.hits.length ||\n result.index === this.currentIndex.index ||\n scopeSuggestions > 1\n )\n return;\n scopeSuggestions++;\n return (\n <button\n role=\"option\"\n ref={(button) => this.autocompleteEles.push(button)}\n tabindex=\"-1\"\n id={'autocomplete-scope-' + i}\n class=\"search-autocomplete-hit\"\n onClick={() => this.switchIndexSubmit(result.index)}\n onMouseDown={() => this.switchIndexSubmit(result.index)}\n >\n \"{this.searchValInternal}\"{' '}\n <div class=\"search-autocomplete-hit-scope\">\n in {result.indexName}\n </div>\n </button>\n );\n }),\n ]}\n {!!currentScopeHits && (\n <div class=\"search-autocomplete-foot\">\n <button\n role=\"option\"\n class=\"search-autocomplete-submit\"\n ref={(button) => this.autocompleteEles.push(button)}\n id={'autocomplete-foot'}\n onClick={this.onSearchSubmit}\n onMouseDown={this.onSearchSubmit}\n >\n View all results\n </button>\n </div>\n )}\n </div>\n );\n } else if (!currentScopeHits) {\n content = (\n <div class=\"search-autocomplete-hit search-autocomplete-hit--no-result\">\n No results matching '{this.searchValInternal}' were found. Try\n another phrase.\n </div>\n );\n }\n }\n\n return (\n <div\n class=\"search-autocomplete\"\n role=\"listbox\"\n id=\"autocomplete-results\"\n aria-expanded={this.showAutocomplete ? 'true' : 'false'}\n hidden={!this.showAutocomplete}\n onKeyDown={this.onAutocompleteInteract}\n >\n {content}\n </div>\n );\n }\n\n private searchWidget(): VNode[] {\n return [\n <form\n class=\"search-inputs\"\n onSubmit={this.onSearchSubmit}\n id=\"global-nav-search\"\n >\n <nano-select\n class=\"search-input\"\n label=\"Which area of content would you like to search?\"\n hideLabel\n showInlineError={false}\n value={this.currentSelectedIndex()?.index}\n onNanoChange={this.onSearchIndexChange}\n mask\n >\n {this.internalSearchIndeces.map((index) => {\n return (\n <nano-option\n selected={index.name === this.searchIndex}\n value={index.index}\n >\n {index.name || index.index}\n </nano-option>\n );\n })}\n <nano-icon\n name=\"light/chevron-down\"\n class=\"select-input__arrow\"\n slot=\"down-arrow\"\n />\n </nano-select>\n <nano-input\n class=\"search-input\"\n label=\"What would you like to search for?\"\n aria-label=\"What would you like to search for\"\n hideLabel\n showInlineError={false}\n clear-input\n placeholder=\"Search Nanopore\"\n type=\"text\"\n ref={(input) => (this.searchInput = input)}\n onNanoChange={this.onSearchChange}\n onNanoInput={this.onSearchInput}\n onKeyDown={this.onAutocompleteInteract}\n debounce={500}\n aria-autocomplete=\"list\"\n aria-activedescendant={\n this.autocompleteEles[this.currAIndex]\n ? this.autocompleteEles[this.currAIndex].id\n : false\n }\n aria-controls=\"autocomplete-results\"\n onNanoFocus={this.showAutocompleteResults}\n value={this.searchValue}\n role=\"textbox\"\n >\n <button\n class={{\n 'search-icon': true,\n 'search-icon--search': true,\n 'search-icon--show': !!this.searchValue && !this.searchLoading,\n }}\n slot=\"end\"\n onClick={(e) => {\n this.searchValInternal = this.searchInput.value;\n this.onSearchSubmit(e);\n }}\n >\n <nano-icon\n name=\"light/magnifying-glass\"\n role=\"img\"\n ariaLabel=\"Search now\"\n ></nano-icon>\n </button>\n <span\n class={{\n 'search-icon': true,\n 'search-icon--loader': true,\n 'search-icon--show': this.searchLoading,\n }}\n slot=\"end\"\n >\n <nano-icon name=\"light/spinner-third\"></nano-icon>\n </span>\n </nano-input>\n <input type=\"submit\" />\n </form>,\n ];\n }\n\n render() {\n this.autocompleteEles = [];\n const isRtl = this.el.ownerDocument.dir === 'rtl';\n\n const searchWidget = this.searchWidget();\n searchWidget.push(this.autocompleteList());\n\n return (\n <Host\n class={{\n [this.thresholdClasses().join(' ')]: true,\n ready: this.ready,\n 'search-bar-shown': this.searchBarShown && this.scrollingUp,\n 'search-auto-complete-shown':\n this.showAutocomplete && this.scrollingUp,\n 'modal-open': this.modalIsOpen,\n resizing: this.isResizing,\n }}\n dir={isRtl ? 'rtl' : null}\n >\n <div\n class={{\n 'global-nav': true,\n 'scrolling-down': !this.scrollingUp,\n }}\n >\n {/* START BURGER / OVERFLOW MENU */}\n <nav\n id=\"global-nav-menu\"\n class={{\n 'gn-menu': true,\n open: this.modalOpen,\n 'has-promotion': this.hasPromotionSlot,\n 'menu-full-screen': this.menuFullScreen,\n 'secondary-open': !!this.secondaryMenuOpen,\n }}\n aria-expanded={this.modalOpen ? 'true' : 'false'}\n ref={(div) => (this.menuDiv = div)}\n part=\"burger\"\n >\n <div\n class=\"gn-menu_wrap\"\n ref={(div) => (this.menuWrapDiv = div)}\n tabindex=\"-1\"\n part=\"burger-menu\"\n >\n <div class=\"gn-menu_actions\" part=\"burger-actions-bar\">\n <button\n class=\"menu-btn icon-btn icon-btn\"\n onMouseDown={this.onMenuBtnClick}\n onKeyDown={this.onMenuBtnKeyDown}\n >\n {this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login && (\n <nano-icon\n name=\"light/xmark\"\n aria-label=\"close menu\"\n role=\"img\"\n ></nano-icon>\n )}\n {this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.login && (\n <nano-icon\n name=\"light/bars\"\n aria-label=\"close menu\"\n role=\"img\"\n ></nano-icon>\n )}\n </button>\n\n {this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [\n !!this.iconSlotLen && <slot name=\"icon\" />,\n this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('icons')) && [\n this.msgUrl && (\n <a href={this.msgUrl} class=\"icon-btn\">\n <nano-icon\n name=\"light/bell\"\n role=\"img\"\n ariaLabel=\"Check notifications\"\n ></nano-icon>\n {this.msgCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.msgCount}\n </span>\n )}\n </a>\n ),\n this.cartUrl && (\n <a href={this.cartUrl} class=\"icon-btn\">\n <nano-icon\n name=\"light/cart-shopping\"\n role=\"img\"\n ariaLabel=\"Go to cart\"\n ></nano-icon>\n {this.cartCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.cartCount}\n </span>\n )}\n </a>\n ),\n ],\n ]}\n\n {this.myAccData && this.myAccData.urls.login && (\n <a\n href={this.myAccData.urls.login + this.ssoRedirect}\n class=\"login-btn\"\n >\n Login / Register{' '}\n <nano-icon name=\"solid/chevron-right\"></nano-icon>\n </a>\n )}\n </div>\n\n <div\n class=\"content-wrap\"\n ref={(div) => (this.menuContentDiv = div)}\n >\n <div class=\"content\" part=\"burger-content\">\n <nav class=\"nav-links nav-links--main\" role=\"menu\">\n <slot\n name=\"overflow\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.main &&\n !!this.mainSlotLen && (\n <slot\n name=\"main\"\n onSlotchange={this.assessSlottedContent}\n />\n )}\n </nav>\n\n {/* ABOUT AND SITE MENU IN BURGER */}\n {(((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.hasSiteSlot) ||\n !!this.siteNavItms.length) && (\n <div>\n {/* SITES MENU (Always in burger) */}\n {(this.hasSiteSlot || !!this.siteNavItms.length) && [\n (this.threshold >= THRESHOLDLIMIT - 2 ||\n this.mainSlotLen < 2) &&\n this.overflowSlotLen < 2 && (\n <div class=\"nav-links-wrap\">\n <h4 class=\"nav-links_title nav-links_title--sites\">\n Sites\n </h4>\n <nav\n class=\"nav-links nav-links--sub nav-links--sites\"\n aria-label=\"Different company site links\"\n >\n <slot\n name=\"site\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.siteNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={link.address}\n target={link.target}\n >\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </nav>\n </div>\n ),\n ((this.threshold < THRESHOLDLIMIT - 2 &&\n this.mainSlotLen >= 2) ||\n this.overflowSlotLen >= 2) && (\n <nav\n class=\"nav-links\"\n aria-label=\"Different company site links\"\n >\n <nano-nav-item\n class=\"nano-global-nav nano-global-nav-menu\"\n closeOnBlur={false}\n >\n Sites\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-right\"\n ></nano-icon>\n <div slot=\"secondary\">\n <div class=\"content\">\n <button\n class=\"back-btn\"\n onClick={this.subMenuClose}\n >\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-left\"\n aria-label=\"go back\"\n role=\"img\"\n ></nano-icon>\n Sites\n </button>\n <div class=\"content--sub\">\n <slot\n name=\"site\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.siteNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={link.address}\n target={link.target}\n >\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </div>\n </div>\n </div>\n </nano-nav-item>\n </nav>\n ),\n ]}\n </div>\n )}\n </div>\n\n {/* USER PROFILE IN BURGER */}\n {this.isLoggedIn &&\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login &&\n (this.loggedInNavItms.length || this.hasLoggedinSlot) && (\n <nav class=\"nav-links\" aria-label=\"Your user account links\">\n <nano-nav-item\n class=\"nano-global-nav user-nav nano-global-nav-menu\"\n closeOnBlur={false}\n >\n {this.myAccountUser.name}\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-right\"\n ></nano-icon>\n <div slot=\"secondary\">\n <div class=\"content\">\n <button\n class=\"back-btn\"\n onClick={this.subMenuClose}\n >\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-left\"\n aria-label=\"go back\"\n role=\"img\"\n ></nano-icon>\n {this.myAccountUser.name}\n </button>\n {!!this.myAccountUser?.small_avatar_url && (\n <nano-global-nav-user-profile\n myAccountUser={this.myAccountUser}\n userProfileUrl={this.userProfileUrl}\n ></nano-global-nav-user-profile>\n )}\n <div class=\"content--sub\">\n <slot\n name=\"loggedin\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.loggedInNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a href={link.address} target={link.target}>\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={\n this.myAccData.urls.forgot_password +\n this.ssoRedirect\n }\n >\n Change Password\n </a>\n </nano-nav-item>\n </div>\n </div>\n </div>\n </nano-nav-item>\n </nav>\n )}\n\n <slot\n name=\"promotion\"\n onSlotchange={this.assessSlottedContent}\n />\n\n {this.myAccData && this.myAccData.urls.logout && (\n <div class=\"login-btn logout-btn\">\n <a href={this.myAccData.urls.logout + this.ssoRedirect}>\n Logout\n </a>\n </div>\n )}\n </div>\n </div>\n </nav>\n {/* END BURGER / OVERFLOW MENU */}\n\n {/* START MAIN NAV BAR */}\n <div class=\"bars\" part=\"bars\">\n <nav\n part=\"main-bar\"\n class=\"main-bar\"\n aria-label=\"Main site navigation\"\n tabindex=\"-1\"\n ref={(div) => (this.mainBarDiv = div)}\n >\n {(this.hasPromotionSlot ||\n !!this.overflowSlotLen ||\n ((this.myAccData || !!this.iconSlotLen) &&\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.icon) ||\n (this.isLoggedIn &&\n (!!this.loggedInNavItms.length || this.hasLoggedinSlot) &&\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login) ||\n (!!this.mainSlotLen &&\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.main) ||\n ((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.about) ||\n this.hasSiteSlot ||\n !!this.siteNavItms.length) && (\n <button\n class=\"menu-btn icon-btn\"\n onMouseDown={this.menuOpen}\n onKeyDown={this.onMenuBtnKeyDown}\n aria-expanded={this.modalOpen ? 'true' : 'false'}\n aria-controls=\"global-nav-menu\"\n ref={(btn) => (this.menuBtn = btn)}\n >\n <nano-icon\n name=\"light/bars\"\n aria-label=\"Open menu\"\n ></nano-icon>\n </button>\n )}\n\n {this.showLogo && (\n <a href={this.logoUrl} class=\"logo-link\" part=\"logo-link\">\n <img\n src={getAssetPath(`../nano-assets/ont-logo.svg`)}\n alt=\"Oxford Nanopore Technologies Logo\"\n class=\"logo\"\n />\n </a>\n )}\n {!this.showLogo && (\n <div class=\"logo-link\">\n <slot name=\"logo\" onSlotchange={this.assessSlottedContent} />\n </div>\n )}\n\n <div class=\"nav-links nav-links--main\">\n <slot name=\"main\" onSlotchange={this.assessSlottedContent} />\n </div>\n\n {/* search widget displayed in the bar (there is enough space to show it) */}\n {this.mainSlotLen === 0 &&\n this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.search && [\n this.showSearch && !!this.internalSearchIndeces.length && (\n <div\n class=\"search-widget\"\n role=\"combobox\"\n aria-owns=\"autocomplete-results\"\n aria-expanded={\n this.showAutocomplete && this.autocompleteResults\n ? 'true'\n : 'false'\n }\n >\n {searchWidget}\n </div>\n ),\n (!this.showSearch || !this.myAccData) &&\n !!this.searchSlotLen && (\n <slot\n name=\"search\"\n onSlotchange={this.assessSlottedContent}\n />\n ),\n ]}\n\n {/* Bar Icon buttons */}\n\n {/* Bar search icon button (when not enough to show search in bar) */}\n {(this.mainSlotLen > 0 ||\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.search) &&\n ((this.showSearch && !!this.internalSearchIndeces.length) ||\n !!this.searchSlotLen) && (\n <button\n class={{\n 'icon-btn': true,\n 'search-btn': true,\n 'search-btn--open': this.searchBarShown,\n }}\n aria-controls=\"global-nav-search-bar\"\n aria-expanded={this.searchBarShown ? 'true' : 'false'}\n onClick={this.onSearchBtnClick}\n >\n <nano-icon\n name=\"light/magnifying-glass\"\n role=\"img\"\n ariaLabel=\"Search Oxford Nanopore\"\n ></nano-icon>\n </button>\n )}\n\n {/* Bar cart and notifications */}\n {this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [\n !!this.iconSlotLen && <slot name=\"icon\" />,\n this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('icons')) && [\n this.msgUrl && (\n <a href={this.msgUrl} class=\"icon-btn\">\n <nano-icon\n name=\"light/bell\"\n ariaLabel=\"View your notifications\"\n ></nano-icon>\n {this.msgCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.msgCount}\n </span>\n )}\n </a>\n ),\n this.cartUrl && (\n <a href={this.cartUrl} class=\"icon-btn\">\n <nano-icon\n name=\"light/cart-shopping\"\n ariaLabel=\"View your shopping cart\"\n ></nano-icon>\n {this.cartCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.cartCount}\n </span>\n )}\n </a>\n ),\n ],\n ]}\n\n {/* Bar about links */}\n {(!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.about && (\n <nav\n class=\"nav-links nav-links--sub\"\n aria-label=\"About the company. Links\"\n role=\"menu\"\n >\n <slot\n name=\"about\"\n onSlotchange={this.assessSlottedContent}\n />\n {!!this.aboutNavItms.length && (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-bar\">\n <a\n href={this.aboutNavItms[0].address}\n target={this.aboutNavItms[0].target}\n >\n {this.aboutNavItms[0].title}\n </a>\n </nano-nav-item>\n )}\n </nav>\n )}\n\n {/* Bar login button / User panel */}\n {this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('loggedin')) &&\n this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.login && [\n this.myAccData.urls.login && (\n <a\n href={this.myAccData.urls.login + this.ssoRedirect}\n class=\"login-btn\"\n >\n Login / Register\n </a>\n ),\n this.myAccountUser && (\n <div class=\"user-links\">\n <button\n class={{\n 'icon-btn': true,\n 'user-links-btn': true,\n open: this.userMenuOpen,\n }}\n onMouseDown={this.onUserBtnClick}\n onKeyDown={this.onUserBtnKeyDown}\n >\n {' '}\n {this.myAccountUser.name}\n <nano-icon\n name=\"solid/caret-down\"\n ariaLabel=\"View your account links\"\n ></nano-icon>\n </button>\n <div\n class=\"user-links-panel\"\n tabindex=\"-1\"\n ref={(div) => (this.userLinkPanel = div)}\n >\n {!!this.myAccountUser?.small_avatar_url && (\n <nano-global-nav-user-profile\n myAccountUser={this.myAccountUser}\n userProfileUrl={this.userProfileUrl}\n ></nano-global-nav-user-profile>\n )}\n <div class=\"user-links-panel-content\">\n {this.loggedInNavItms.map((link) => {\n return (\n <a href={link.address} target={link.target}>\n {link.title}\n </a>\n );\n })}\n </div>\n <div class=\"user-links-panel-foot\">\n <a\n href={\n this.myAccData.urls.forgot_password +\n this.ssoRedirect\n }\n >\n Change Password\n </a>\n <a\n href={this.myAccData.urls.logout + this.ssoRedirect}\n >\n Logout\n </a>\n </div>\n </div>\n </div>\n ),\n ]}\n </nav>\n\n {/* Search widget shown in bar underneath main bar when there is not enough space */}\n {(this.mainSlotLen > 0 ||\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.search) && (\n <div\n id=\"global-nav-search-bar\"\n class={{\n 'search-bar': true,\n show: this.searchBarShown,\n }}\n aria-expanded={this.searchBarShown ? 'true' : 'false'}\n role=\"region\"\n tabindex=\"-1\"\n ref={(div) => (this.searchBarEl = div)}\n part=\"search-bar\"\n >\n <div class=\"search-widget\">\n {this.showSearch && !!this.internalSearchIndeces.length && (\n <div>{searchWidget}</div>\n )}\n {(!this.showSearch || !this.myAccData) &&\n !!this.searchSlotLen && (\n <slot\n name=\"search\"\n onSlotchange={this.assessSlottedContent}\n />\n )}\n </div>\n </div>\n )}\n </div>\n {/* END MAIN NAV BAR */}\n\n {/* BURGER MENU MOBILE MASK */}\n {(this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login ||\n this.menuFullScreen) && (\n <div\n class={{\n mask: true,\n open: this.modalOpen,\n }}\n onClick={this.menuClose}\n onTouchEnd={this.menuClose}\n ></div>\n )}\n </div>\n <div class=\"site-content\">\n <slot />\n </div>\n </Host>\n );\n }\n\n // Data processing\n\n /**\n * Finds a correct domain (as defined by myAccount data) for a given origin\n * @returns a domain string for this origin\n */\n private domainFor(origin: string): string {\n if (!this.myAccData) return '';\n const domain = this.myAccData.domains.find((dm) => dm.origin === origin);\n return domain ? domain.domain : '';\n }\n\n /**\n * process a set, or multiple sets of algolia results\n * and applies correct domain names / http protocol to each result's url\n * @returns results where partial paths are turned to full urls\n */\n private processSearchResults(results: AlgoliaMultiResults | AlgoliaResults) {\n const multiResults = results as AlgoliaMultiResults;\n const singleResult = results as AlgoliaResults;\n\n if (multiResults.results) {\n multiResults.results.forEach((result, i) => {\n multiResults.results[i] = this.processSearchResults(\n result\n ) as AlgoliaResults;\n });\n return multiResults;\n } else {\n singleResult.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url =\n location.protocol + '//' + this.domainFor(hit.origin) + hit.url;\n });\n return singleResult;\n }\n }\n\n /**\n * Ingests the data blob from myAccount; turns prescient fields to internal state\n */\n private processMyAccData() {\n if (!this.myAccData || !this.myAccData.search.indeces.length) return;\n\n if (this.myAccData.search.api_key)\n this.searchApiKey = this.myAccData.search.api_key;\n if (this.myAccData.search.app_id)\n this.searchAppId = this.myAccData.search.app_id;\n\n if (this.myAccData.cart.count) this.cartCount = this.myAccData.cart.count;\n if (this.myAccData.notifications.count)\n this.msgCount = this.myAccData.notifications.count;\n\n if (!this.searchAppId || !this.searchApiKey) return;\n this.internalSearchIndeces = [\n ...this.myAccData.search.indeces,\n ...this.searchIndeces,\n ];\n\n if (this.myAccData.urls.cart && !this.cartUrl)\n this.cartUrl = this.myAccData.urls.cart;\n if (this.myAccData.urls.messages && !this.msgUrl)\n this.msgUrl = this.myAccData.urls.messages;\n }\n\n /**\n * Ingests the data blob from myAccount links; applies prescient fields to internal state\n */\n private processMyAccLinks() {\n if (!this.myAccData.links || !this.myAccData.links.length) return;\n\n this.myAccData.links.forEach((link) => {\n switch (link.area) {\n case 'left-side-logged-in':\n case 'left-side-logged-out':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('sites')\n )\n break;\n if (this.isLoggedIn && link.area === 'left-side-logged-in')\n this.siteNavItms.push(link);\n else if (!this.isLoggedIn && link.area === 'left-side-logged-out')\n this.siteNavItms.push(link);\n break;\n case 'right-side-logged-in':\n case 'right-side-logged-out':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('about')\n )\n break;\n if (this.isLoggedIn && link.area === 'right-side-logged-in')\n this.aboutNavItms.push(link);\n else if (!this.isLoggedIn && link.area === 'right-side-logged-out')\n this.aboutNavItms.push(link);\n break;\n case 'profile-panel-list':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('loggedin')\n )\n break;\n this.loggedInNavItms.push(link);\n break;\n }\n });\n }\n}\n"],"version":3}
|
1
|
+
{"file":"nano-global-nav.entry.js","mappings":"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","names":[],"sources":["src/utils/fetch.ts","src/components/global-nav/style/global-nav.scss?tag=nano-global-nav&encapsulation=shadow","src/components/global-nav/global-nav.tsx"],"sourcesContent":["interface FetchInputConfig {\n body?: { [prop: string]: string };\n headers?: { [prop: string]: string };\n [prop: string]: any;\n}\n\nexport async function clientFetch(\n url: string,\n { body, ...customConfig }: FetchInputConfig = {}\n) {\n const headers: { [prop: string]: string } = {\n Accept: 'application/json, text/plain, */*',\n 'Access-Control-Allow-Origin': '*',\n 'Content-Type': 'application/json',\n Cache: 'no-cache',\n };\n const config: RequestInit = {\n method: body ? 'POST' : 'GET',\n credentials: 'include',\n keepalive: true,\n mode: 'cors',\n ...customConfig,\n headers: {\n ...headers,\n ...customConfig.headers,\n },\n };\n if (body) {\n config.body = JSON.stringify(body);\n }\n\n let id = setTimeout(() => {}, 0);\n if (window.AbortController) {\n const controller = new AbortController();\n const { timeout = 500 } = customConfig;\n id = setTimeout(() => controller.abort(), timeout);\n config.signal = controller.signal;\n }\n\n const response = await fetch(url, config);\n clearTimeout(id);\n\n if (response.ok) {\n return await response.json();\n } else {\n const errorMessage = await response.text();\n return new Error(errorMessage);\n }\n}\n","@use 'sass:map';\n@use '../../../global/style/nano-theme/tokens';\n\n// local\n@use 'setup';\n@use 'bar';\n@use 'burger';\n@use 'search';\n@use 'user';\n\n:host {\n /**\n * @prop --bar-vertical-padding: Defaults to 21px;\n * @prop --bar-item-spacing: Defaults to 16px;\n * @prop --bar-background: Defaults to white;\n * @prop --bar-text-color: Defaults to #{map.get(tokens.$colors, black)};\n * @prop --bar-color-shade: Defaults to #d8d8d8;\n * @prop --bar-color-tint: Defaults to rgb(19 89 111);\n * @prop --bar-color-focus: Defaults to #007fa9;\n * @prop --bar-user-panel-bg: Defaults to #016d86;\n * @prop --bar-dropdown-bg: Defaults to #196c82;\n * @prop --bar-dropdown-text: Defaults to white;\n * @prop --bar-search-focus: Defaults to #007FA9;\n\n * @prop --menu-background: Defaults to #001a21;\n * @prop --menu-text-color: Defaults to white;\n * @prop --menu-user-profile-bg: Defaults to #001a21;\n * @prop --menu-user-panel-bg: Defaults to #193037;\n * @prop --menu-padding: Defaults to 12px;\n * @prop --menu-hint-color: Defaults to #33484d;\n * @prop --menu-title-text: Defaults to #{map.get(tokens.$colors, lightblue)};\n * @prop --menu-icon-color: Defaults to white;\n\n * @prop --login-button-bg: Defaults to #17bb75;\n * @prop --login-button-text: Defaults to white;\n */\n\n --bar-vertical-padding: 19px;\n --bar-item-spacing: 13px;\n --bar-background: white;\n --bar-text-color: #{map.get(tokens.$colors, black)};\n --bar-color-shade: #d8d8d8;\n --bar-color-tint: rgb(19 89 111);\n --bar-color-focus: #007fa9;\n --bar-user-panel-bg: #016d86;\n --bar-dropdown-bg: #196c82;\n --bar-dropdown-text: white;\n --bar-search-focus: #007FA9; \n --menu-background: #001a21;\n --menu-text-color: white;\n --menu-user-profile-bg: #001a21;\n --menu-user-panel-bg: #193037;\n --menu-padding: 12px;\n --menu-hint-color: #33484d;\n --menu-title-text: #{map.get(tokens.$colors, lightblue)};\n --menu-icon-color: white;\n --login-button-bg: #007fa9;\n --login-button-text: white;\n\n // not sure if this required any more.\n --padding: 12px;\n --padding-top: var(--padding);\n --padding-end: var(--padding);\n --padding-bottom: var(--padding);\n --padding-start: var(--padding);\n\n display: flex;\n flex-direction: column;\n position: relative;\n line-height: 1.5;\n block-size: 100%;\n font-size: 0.9375em;\n font-size: clamp(0.77rem, 1vw, 0.9rem);\n\n input,\n select,\n button {\n font-family: inherit;\n appearance: none;\n font-size: inherit;\n }\n\n a,\n button {\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n box-shadow: #{tokens.$control-focus-style};\n }\n }\n}\n","import {\n Component,\n Host,\n Element,\n State,\n Watch,\n Event,\n EventEmitter,\n Prop,\n Listen,\n Build,\n getAssetPath,\n readTask,\n writeTask,\n Method,\n VNode,\n ComponentInterface,\n} from '@stencil/core';\nimport algoliasearch from 'algoliasearch/dist/algoliasearch-lite.esm.browser';\nimport { clientFetch } from '../../utils/fetch';\nimport { ComponentStore } from '../../utils/store/component-store';\nimport { debounce } from '../../utils/throttle';\nimport { displayTransition } from '../../utils/transitions';\nimport searchInsight from '../../utils/search-insights';\n\nimport {\n AlgoliaMultiResult,\n AlgoliaMultiResults,\n AlgoliaResultHit,\n AlgoliaResults,\n AlgoliaSearchResultDetail,\n SearchIndex,\n} from '../algolia/algolia-interface';\nimport { NavItemEventDetail } from '../nav-item/nav-item-interface';\nimport { InputChangeEventDetail } from '../input/input-interface';\nimport { SelectChangeEventDetail } from '../select/select-interface';\nimport { transformTag, h } from '../../utils/renderer';\nimport {\n AlgoliaNetworkError,\n MyAccountData,\n MyAccountLink,\n MyAccountUser,\n} from './global-nav-interface';\nimport type { MultipleQueriesQuery } from '@algolia/client-search';\nimport type { SearchClient as AlgoliaClient } from 'algoliasearch/lite';\n\n// the 'breakpoints' where different segments of content go into or out-of the burger / overflow menu\nconst THRESHOLDBREAKS = {\n about: 0,\n main: 1,\n login: 2,\n search: 3,\n icon: 4,\n};\nconst THRESHOLDLIMIT = Object.keys(THRESHOLDBREAKS).length;\n\n/**\n * Nanopore digital global navigation and search bar.\n * Incorporates MyAccount / SSO states (messages / cart / user name etc).\n * Incorporates Algolia search.\n *\n * @slot main - main nav items. Should be used with nano-nav-item's\n * @slot icon - nano-nav-item's displayed alongside icon links that come from MyAccount\n * @slot loggedin - nano-nav-item's to display when users are signed in, alongside links from from MyAccount (within the overflow menu panel).\n * @slot about - nano-nav-item's to display with about links that come from MyAccount\n * @slot site - nano-nav-item's to display with site links that come from MyAccount\n * @slot overflow - items to always display in the overflow menu\n * @slot search - when not using myaccount search OR show-search=\"false\" you can utilise the search slot\n * @slot promotion - a free area for any promotional content, displayed within the overflow menu panel\n * @slot logo - when show-logo=\"false\" you can utilise the logo slot\n * @slot - if using search functionality, place a `<nano-search-results />` element in the default slot\n *\n * @part burger - the overflow / burger ui element\n * @part burger-menu - the overflow / burger menu\n * @part burger-actions-bar - the top bar of the overflow / burger menu\n * @part burger-content - the main content area of the overflow / burger menu\n * @part bars - the main wrapper around the `main-bar` and `search-bar` nav bars\n * @part main-bar - the main nav menu bar\n * @part logo-link - the link wrapping the logo\n * @part search-bar - the search bar that appears under the main nav menu bar\n */\n@Component({\n tag: 'nano-global-nav',\n styleUrl: 'style/global-nav.scss',\n shadow: true,\n assetsDirs: ['assets'],\n})\nexport class GlobalNav implements ComponentInterface {\n // position and dimension state\n private debounceResize: () => any;\n private debounceSetResizingState: () => any;\n private currSize: number = 0;\n\n // menu\n private menuDiv: HTMLElement;\n private menuBtn: HTMLButtonElement;\n private menuWrapDiv: HTMLDivElement;\n private menuContentDiv: HTMLDivElement;\n private menuSelectedItems: NodeListOf<HTMLNanoNavItemElement>;\n\n // search\n private searchBarEl: HTMLDivElement;\n private searchInput: HTMLNanoInputElement;\n private algoliaClient: AlgoliaClient;\n private currentIndex: SearchIndex;\n private autocompleteResults: AlgoliaResults | null;\n private autocompleteEles: Array<HTMLAnchorElement | HTMLButtonElement> = [];\n private currAIndex: number = -1;\n private algoliaSearchResults: AlgoliaMultiResults | null;\n private scopeSearch: AlgoliaMultiResults | null;\n\n // general\n private mainBarDiv: HTMLElement;\n private userLinkPanel: HTMLDivElement;\n private isLoggedIn: boolean = false;\n private myAccData: MyAccountData = null;\n\n // myaccount links\n private aboutNavItms: MyAccountLink[] = [];\n private siteNavItms: MyAccountLink[] = [];\n private loggedInNavItms: MyAccountLink[] = [];\n\n constructor() {\n this.assessSlottedContent = debounce(\n this.assessSlottedContent.bind(this),\n 10\n );\n this.handleBarResize = debounce(this.handleBarResize.bind(this), 200);\n }\n\n // user profile link\n @State() userProfileUrl: string = '';\n\n // has slot tests\n @State() hasLoggedinSlot: boolean = false;\n @State() hasSiteSlot: boolean = false;\n @State() hasPromotionSlot: boolean = false;\n\n // slot item number tests\n @State() aboutSlotLen: number = 0;\n @State() iconSlotLen: number = 0;\n @State() mainSlotLen: number = 0;\n @State() overflowSlotLen: number = 0;\n @State() searchSlotLen: number = 0;\n\n // threshold / sizing\n @State() thresholdReady: boolean = false;\n @State() remoteDataReady: boolean = false;\n @State() ready: boolean = false;\n @State() isResizing: boolean = false;\n @State() threshold: number = THRESHOLDLIMIT;\n\n // modals state\n @State() modalOpen: boolean = false;\n @State() modalIsOpen: boolean = false;\n @State() searchBarShown: boolean = false;\n @State() scrollingUp: boolean = true;\n @State() showAutocomplete: boolean = false;\n @State() secondaryMenuOpen: HTMLNanoNavItemElement = null;\n @State() userMenuOpen: boolean = false;\n @State() menuFullScreen: boolean = false;\n\n // search\n @State() searchLoading: boolean = false;\n @State() searchValInternal: string = '';\n @State() internalSearchIndeces: Array<SearchIndex> = [];\n\n @Element() private el: HTMLNanoGlobalNavElement;\n\n /**\n * Connect to local, dev, test or prod MyAccount\n * environments to retrieve global nav / sso data.\n * Alternatively, you can use the `ssoDataUrl` prop.\n */\n @Prop() env?: 'local' | 'dev' | 'test' | 'prod' = 'prod';\n\n /**\n * A base url to retrieve global nav / sso data.\n * `nav_bar_data.json` will be appended to this url.\n * An alternative to the pre-defined `env` urls\n */\n @Prop() ssoDataUrl?: string;\n\n /**\n * An alternative to both 'env' and 'ssoDataUrl'.\n * You can directly provide a JSON object of myaccount data.\n * (e.g. https://myaccount.nanoporetech.com/nav_bar_data.json)\n * This is useful for SSR\n */\n @Prop() myAccountData: MyAccountData | null;\n @Watch('myAccountData')\n handleMyAccountData() {\n if (!this.myAccountData) return;\n\n if (!this.myAccountData.user || !this.myAccountData.links) return;\n\n this.myAccData = this.myAccountData;\n if (this.myAccData.user.id) {\n this.isLoggedIn = true;\n this.myAccountUser = this.myAccData.user;\n }\n\n this.processMyAccLinks();\n this.processMyAccData();\n this.remoteDataReady = true;\n }\n\n /**\n * Where to take user after SSO login\n */\n @Prop() ssoRedirect: string = encodeURIComponent(window.location.href);\n\n /**\n * Whether to attempt to get global nav / sso data from MyAccount\n */\n @Prop() getMyAccountData: boolean = true;\n\n /**\n * Active MyAccount link sections. By default all will show.\n */\n @Prop() activeMyAccountSections: (\n | 'about'\n | 'loggedin'\n | 'sites'\n | 'icons'\n )[] = null;\n\n /**\n * Whether to show search functionality\n */\n @Prop() showSearch: boolean = true;\n\n /**\n * Whether to show Nanopore logo\n */\n @Prop() showLogo: boolean = true;\n\n /**\n * The link to put on the logo\n */\n @Prop() logoUrl: string = location.protocol + '//' + location.host;\n\n /**\n * An array of Algolia search indexes (and optional display names). Will be automatically populated from MyAccount\n */\n @Prop() searchIndeces: Array<SearchIndex> = [];\n\n /**\n * Logged in user details automatically populated from MyAccount\n */\n @Prop({ mutable: true }) myAccountUser: MyAccountUser = null;\n\n /**\n * An Algolia App ID key. Will be automatically populated from MyAccount\n */\n @Prop({ mutable: true }) searchAppId: string;\n\n /**\n * An Algolia API Key. Will be automatically populated from MyAccount\n */\n @Prop({ mutable: true }) searchApiKey: string;\n\n /**\n * A search value to passed to Algolia to programmatically get or to preload search results\n */\n @Prop({ mutable: true }) searchValue: string = '';\n\n /**\n * Algolia search index to programmatically set or to set an initial index\n */\n @Prop({ mutable: true }) searchIndex: string = 'All';\n\n /**\n * MyAccount store cart count.\n */\n @Prop({ mutable: true }) cartCount: number = 0;\n\n /**\n * MyAccount un-read message count.\n */\n @Prop({ mutable: true }) msgCount: number = 0;\n\n /**\n * Url to the Nanopore store cart. Will default to the url supplied by MyAccount\n */\n @Prop({ mutable: true }) cartUrl: string = null;\n\n /**\n * Url to the Nanopore message center. Will default to the url supplied by MyAccount\n */\n @Prop({ mutable: true }) msgUrl: string = null;\n\n /**\n * Emitted when the global nav is ready.\n */\n @Event() nanoIsReady!: EventEmitter<void>;\n\n /**\n * Emitted when search results are successfully returned from Algolia.\n */\n @Event() nanoSearchResult!: EventEmitter<AlgoliaSearchResultDetail>;\n\n /**\n * Emitted when algolia returns an error.\n */\n @Event() nanoSearchError!: EventEmitter<AlgoliaNetworkError>;\n\n /**\n * Emitted when search field is cleared.\n */\n @Event() nanoSearchReset!: EventEmitter<AlgoliaSearchResultDetail>;\n\n /**\n * Submit the search form (a search value must be present)\n */\n @Method()\n async submitSearch() {\n this.onSearchSubmit();\n this.showAutocomplete = false;\n return;\n }\n\n /**\n * Manually open or close the overflow (burger) menu\n * @param openClose - optionally force open (true) or close (false)\n */\n @Method()\n async toggleOverflowMenu(openClose?: boolean) {\n if (openClose === true || (openClose === undefined && !this.modalIsOpen)) {\n this.menuOpen();\n } else {\n this.menuClose(null, true);\n }\n }\n\n @Watch('env')\n @Watch('ssoDataUrl')\n async getMyAccData() {\n if (this.myAccData) return;\n\n switch (this.env) {\n case 'prod':\n this.userProfileUrl = 'https://myaccount.nanoporetech.com/';\n break;\n case 'local':\n case 'dev':\n case 'test':\n default:\n this.userProfileUrl = 'https://myaccount.nanoporetech.com/';\n break;\n }\n\n if (!this.getMyAccountData || this.myAccData) {\n this.remoteDataReady = true;\n return;\n }\n\n let url = this.ssoDataUrl;\n\n if (!url) {\n switch (this.env) {\n case 'dev':\n url = 'https://myaccount-dev.nanoporetech.com/';\n break;\n case 'test':\n url = 'https://myaccount-test.nanoporetech.com/';\n break;\n default:\n url = 'https://myaccount.nanoporetech.com/';\n break;\n }\n }\n\n const config = { timeout: 5000 };\n\n try {\n if (this.env === 'local') {\n this.myAccData = (await import(\n `./assets/local-my-account.json`\n )) as unknown as MyAccountData;\n } else {\n this.myAccData = await clientFetch(url + 'nav_bar_data.json', config);\n }\n if (this.myAccData.user.id) {\n this.isLoggedIn = true;\n this.myAccountUser = this.myAccData.user;\n }\n this.processMyAccLinks();\n this.processMyAccData();\n setTimeout(() => (this.remoteDataReady = true), 300);\n } catch (e) {\n console.error(e);\n this.remoteDataReady = true;\n }\n }\n\n @Watch('searchIndex')\n currentSelectedIndex() {\n if (!this.internalSearchIndeces.length) {\n return;\n }\n if (!this.searchIndex) return this.internalSearchIndeces[0];\n\n const foundIndex = this.internalSearchIndeces.find(\n (index) => index.name === this.searchIndex\n );\n\n if (!foundIndex) {\n this.currentIndex = this.internalSearchIndeces[0];\n console.error('index not found');\n return;\n }\n\n this.currentIndex = foundIndex;\n return foundIndex;\n }\n\n @Watch('searchValInternal')\n changeInternalSearchVal() {\n if (this.searchValInternal !== this.searchValue)\n this.searchValue = this.searchValInternal;\n }\n\n @Watch('searchApiKey')\n @Watch('searchAppId')\n initAlgoliaClient() {\n if (!this.searchAppId || !this.searchApiKey) return;\n\n this.algoliaClient = algoliasearch(this.searchAppId, this.searchApiKey);\n this.addAlgoliaIndeces();\n\n // setup algolia analytics\n searchInsight.init(this.searchAppId, this.searchApiKey).then(() => {\n if (this.myAccountUser) searchInsight.setUser(this.myAccountUser.uuid);\n });\n }\n\n /** Public facing set of Algolia indices. Add to any indices we may already have (e.g. from MyAccount) */\n @Watch('searchIndeces')\n addIndeces() {\n this.internalSearchIndeces = [\n ...this.internalSearchIndeces,\n ...this.searchIndeces,\n ];\n }\n\n /** Internal set of of Algolia indices. Includes public & private (e.g. from MyAccount) */\n @Watch('internalSearchIndeces')\n addAlgoliaIndeces() {\n if (!this.algoliaClient || !this.internalSearchIndeces.length) return;\n\n this.internalSearchIndeces.forEach((searchIndex) => {\n searchIndex.alogliaIndex = this.algoliaClient.initIndex(\n searchIndex.index\n );\n });\n if (!this.searchIndex) {\n this.searchIndex = this.internalSearchIndeces[0].name;\n }\n }\n\n /** Current content breakpoint. If it goes up, things can look wonky for a second so we temporarily hide stuff */\n @Watch('threshold')\n thresholdChange(newThreshold: number, oldThreshold: number) {\n if (newThreshold > oldThreshold) {\n // we've resized to larger screen.\n this.setResizingState(true);\n }\n }\n\n /* Check if data and item placement is ready */\n @Watch('thresholdReady')\n @Watch('remoteDataReady')\n assessReady() {\n if (this.thresholdReady && this.remoteDataReady) {\n this.ready = true;\n this.nanoIsReady.emit();\n\n if (this.searchValue) requestAnimationFrame(() => this.searchbarShow());\n }\n }\n\n /**\n * Add / remove events when autocomplete results show / hide.\n */\n @Watch('showAutocomplete')\n setupAutocompleteBlur() {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.searchInput.clientWidth; // force reflow\n if (this.showAutocomplete) {\n this.el.shadowRoot.addEventListener('click', this.onAutocompleteBlur);\n } else {\n this.el.shadowRoot.removeEventListener('click', this.onAutocompleteBlur);\n }\n }\n\n @Watch('secondaryMenuOpen')\n closeSearchBar() {\n if (!!this.secondaryMenuOpen && this.searchBarShown) this.searchbarHide();\n }\n\n /** As relevant slotted items change, reset resizing breakpoints */\n @Watch('aboutSlotLen')\n @Watch('iconSlotLen')\n @Watch('mainSlotLen')\n @Watch('overflowSlotLen')\n @Watch('searchSlotLen')\n slotChange() {\n this.threshold = THRESHOLDLIMIT;\n }\n\n // General classes for visuals\n\n private thresholdClasses() {\n const classes = [];\n let i = 0;\n for (i; i < this.threshold; i++) classes.push('threshold-' + (i + 1));\n return classes;\n }\n\n /**\n * provides 'isResizing' - we use this to fade content out on 'breakpoint' increase\n * (when the screen size increases). Otherwise the stepping through of\n * breakpoints to calculate if content currently fits shows on screen (looks ugly)\n */\n private setResizingState = (state: boolean = false) => {\n if (typeof this.debounceSetResizingState === 'undefined') {\n this.debounceSetResizingState = debounce(this.setResizingState, 600);\n }\n if (state) {\n this.isResizing = true;\n this.debounceSetResizingState();\n } else {\n this.isResizing = false;\n }\n };\n\n // Global DOM Events\n\n /**\n * 1) Reset threshold (item fit breakpoint) when screen is bigger than before.\n * 2) Assess the all threshold / breakpoints to see if content fits\n * 3) Hide search bar whenever we resize\n */\n private onWindowResize() {\n if (this.threshold < THRESHOLDLIMIT && window.innerWidth > this.currSize) {\n this.threshold = THRESHOLDLIMIT;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.mainBarDiv.clientWidth; // force reflow\n }\n this.currSize = window.innerWidth;\n this.searchbarHide();\n this.handleBarResize();\n }\n\n // Burger / Overflow Menu\n\n /* listen to nav-item secondary open / close events primarily for resizing the menu */\n @Listen('nanoOpen')\n secondaryOpen(ev: CustomEvent & { target: HTMLNanoNavItemElement }) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n this.secondaryMenuOpen = ev.target;\n\n if (!this.menuSelectedItems) {\n this.menuSelectedItems = this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[selected]`\n );\n this.menuSelectedItems.forEach((i) => i.classList.remove('selected'));\n }\n\n this.menuContentDiv.style.minHeight =\n (ev.detail as NavItemEventDetail).secondaryMenu.scrollHeight + 'px';\n }\n\n @Listen('nanoClose')\n secondaryClose(ev: CustomEvent & { target: HTMLNanoNavItemElement }) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n\n if (this.secondaryMenuOpen === ev.target && this.menuSelectedItems) {\n this.secondaryMenuOpen = null;\n this.menuContentDiv.style.minHeight = '';\n this.menuSelectedItems = null;\n this.el\n .querySelectorAll(`${transformTag('nano-nav-item')}[selected]`)\n .forEach((i) => i.classList.add('selected'));\n }\n }\n\n private onMenuBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n if (this.modalOpen) this.menuClose(ev, true);\n else this.menuOpen();\n break;\n }\n };\n\n private onMenuBtnClick = (ev: MouseEvent) => {\n this.menuClose(ev, true);\n };\n\n private menuOpen = (e?: MouseEvent) => {\n if (e) e.preventDefault();\n\n this.menuDiv.style.display = 'block';\n // need to open menu in stages\n // wait for re-flow after changing display\n // wait for repaint after animate, then focus\n\n this.modalOpen = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.menuDiv.clientWidth; // force reflow\n\n this.menuWrapDiv.focus({ preventScroll: true });\n if (\n this.threshold < 2 ||\n this.menuWrapDiv.scrollHeight > window.innerHeight\n ) {\n document.body.style.overflow = 'hidden';\n this.menuFullScreen = true;\n } else document.body.style.overflowX = 'hidden';\n\n setTimeout(() => (this.modalIsOpen = true), 300);\n };\n\n private onMenuHidden = () => {\n this.menuDiv.removeEventListener('transitionend', this.onMenuHidden);\n\n document.body.style.overflow = '';\n this.menuDiv.style.display = 'none';\n this.modalIsOpen = false;\n this.menuFullScreen = false;\n\n setTimeout(() => {\n if (document.activeElement === document.body && this.menuBtn)\n this.mainBarDiv.focus({ preventScroll: true });\n }, 50);\n };\n\n @Listen('click', { target: 'body' })\n menuClose(\n ev?: FocusEvent | MouseEvent | KeyboardEvent | TouchEvent,\n force: boolean = false\n ) {\n if (!this.modalIsOpen) return;\n\n if (force) {\n this.modalOpen = false;\n this.menuDiv.addEventListener('transitionend', this.onMenuHidden);\n return;\n }\n\n if (\n !ev\n .composedPath()\n .some(\n (el) =>\n el === this.menuContentDiv ||\n (el as Element).classList?.contains('gn-menu_actions')\n )\n ) {\n requestAnimationFrame(() => {\n if (this.secondaryMenuOpen) return;\n\n this.modalOpen = false;\n this.menuDiv.addEventListener('transitionend', this.onMenuHidden);\n });\n }\n }\n\n private subMenuClose = (ev?: MouseEvent) => {\n ev.preventDefault();\n (ev.target as HTMLNanoNavItemElement).closest<HTMLNanoNavItemElement>(\n transformTag('nano-nav-item')\n ).open = false;\n };\n\n // User profile menu\n\n private onUserBtnClick = (ev: MouseEvent) => {\n ev.preventDefault();\n this.userMenuOpen = !this.userMenuOpen;\n };\n\n private onUserBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.userMenuOpen = !this.userMenuOpen;\n break;\n }\n };\n\n private onUserMenuBlur = (ev: FocusEvent) => {\n if (!ev.relatedTarget) {\n this.userMenuOpen = false;\n return;\n }\n if ((ev.relatedTarget as HTMLElement).closest('.user-links-panel'))\n return false;\n this.userMenuOpen = false;\n };\n\n @Watch('userMenuOpen')\n async handleUserMenu() {\n await displayTransition(this.userLinkPanel, {\n className: 'show',\n show: this.userMenuOpen,\n });\n if (this.userMenuOpen) {\n this.userLinkPanel.focus();\n this.userLinkPanel.addEventListener('focusout', this.onUserMenuBlur);\n } else {\n this.userLinkPanel.removeEventListener('focusout', this.onUserMenuBlur);\n this.el.focus();\n }\n }\n\n // Search bar open / closed\n\n private onSearchBtnClick = (ev: MouseEvent) => {\n ev.preventDefault();\n if (this.searchBarShown) this.searchbarHide();\n else this.searchbarShow();\n };\n\n private async searchbarShow() {\n if (!this.searchBarEl) return;\n this.searchBarShown = true;\n\n this.searchBarEl.removeEventListener(\n 'transitionend',\n this.onSearchBarHidden\n );\n this.searchBarEl.addEventListener('transitionend', this.onSearchBarShown);\n this.searchBarEl.style.display = 'block';\n\n requestAnimationFrame(() => {\n const widgetHeight =\n Math.floor(\n this.searchBarEl.querySelector('.search-widget').scrollHeight\n ) - 1;\n this.searchBarEl.style.height = widgetHeight.toString() + 'px';\n });\n }\n\n private onSearchBarShown = () => {\n this.searchBarEl.removeEventListener(\n 'transitionend',\n this.onSearchBarShown\n );\n if (this.searchInput) this.searchInput.setFocus();\n this.searchBarEl.style.overflow = 'visible';\n };\n\n private searchbarHide = (ev?: FocusEvent) => {\n if (\n ev &&\n ev.relatedTarget &&\n (ev.relatedTarget as HTMLElement).closest('#global-nav-search-bar')\n ) {\n return;\n }\n this.showAutocomplete = this.searchBarShown = false;\n if (this.searchValInternal.length && ev) return;\n\n if (!this.searchBarEl) return;\n this.searchBarEl.addEventListener('transitionend', this.onSearchBarHidden);\n this.searchBarEl.style.overflow = 'hidden';\n this.searchBarEl.style.height = '0px';\n };\n\n private onSearchBarHidden = () => {\n this.searchBarEl.style.display = 'none';\n };\n\n // Algolia search\n\n private autocompleteSnippet(hit: AlgoliaResultHit) {\n const lookFor = ['title']; // , 'body'\n if (hit._snippetResult) {\n const found = lookFor.find(\n (prop) =>\n hit._snippetResult[prop] &&\n hit._snippetResult[prop].matchLevel !== 'none'\n );\n\n if (found) {\n if (found !== 'title')\n return (\n (hit.title.length > 15\n ? hit.title.substring(0, 15) + ' ...'\n : hit.title) +\n ' ' +\n hit._snippetResult[found].value\n );\n else return hit._snippetResult['title'].value;\n }\n }\n return hit.title;\n }\n\n private onSearchInput = (ev: CustomEvent<InputEvent>) => {\n this.searchValInternal = this.searchInput.value;\n\n if (!this.isSearchValSet()) {\n this.searchLoading = false;\n return;\n }\n\n if (ev.detail.type === 'input') {\n this.showAutocomplete = false;\n this.searchLoading = true;\n }\n };\n\n /**\n * Constructs a multi-search query for all set search indices\n * (which are normally controlled via the myAccount payload) then sends to Algolia.\n * Post-processes results, adding correct domains to url fields.\n * @returns formatted algolia results\n */\n private async doAlgoliaSearch() {\n this.algoliaSearchResults = null;\n\n const queries: MultipleQueriesQuery[] = this.internalSearchIndeces.map(\n (index) => {\n const toReturn = {\n clickAnalytics: true,\n attributesToSnippet: ['body:5', 'title:8'],\n indexName: index.index,\n query: this.searchValInternal,\n facets: index.filters,\n hitsPerPage: 5,\n filters: '',\n };\n if (index.name === 'Community') {\n toReturn.filters =\n 'created > ' + Math.floor((Date.now() - 63115200000) / 1000); // only get last 2 years\n }\n return toReturn;\n }\n );\n\n try {\n this.algoliaSearchResults = this.processSearchResults(\n (await this.algoliaClient.search(queries)) as any\n ) as AlgoliaMultiResults;\n } catch (e) {\n this.nanoSearchError.emit(e as AlgoliaNetworkError);\n }\n this.searchLoading = false;\n if (!this.algoliaSearchResults) return;\n\n this.algoliaSearchResults.results.map((result, i) => {\n result.indexName = this.internalSearchIndeces[i].name;\n result.selected =\n this.currentIndex.name === this.internalSearchIndeces[i].name;\n result.domain = this.currentIndex.domain || null;\n result.domains = this.myAccData.domains || null;\n result.allGroup = !!this.internalSearchIndeces[i].allGroup;\n result.filters = this.internalSearchIndeces[i].filters;\n result.replicas = this.currentIndex.replicas;\n });\n\n return this.algoliaSearchResults;\n }\n\n /**\n * Called whenever the search input value changes.\n * Performs Algolia search and shows autocomplete results.\n * @param ev optional input change event\n */\n private onSearchChange = async (ev?: CustomEvent<InputChangeEventDetail>) => {\n this.searchValInternal = this.searchValue = ev\n ? ev.detail.value\n : this.searchValInternal;\n this.showAutocomplete = false;\n this.autocompleteResults = null;\n\n if (!this.isSearchValSet()) {\n if (!this.searchValInternal.length) {\n this.nanoSearchReset.emit();\n }\n this.searchLoading = false;\n return;\n }\n if (!this.currentIndex) this.currentSelectedIndex();\n\n // start search\n this.searchLoading = true;\n const algoliaHits = await this.doAlgoliaSearch();\n\n this.scopeSearch = null;\n this.scopeSearch = algoliaHits;\n\n // set / show autocomplete results\n this.autocompleteResults = algoliaHits.results.find((res) => res.selected);\n this.showAutocompleteResults();\n\n this.searchLoading = false;\n };\n\n /**\n * Called whenever the search form is submitted (but can also be called manually).\n * Fires event which will activate / display `nano-global-search-results`\n *\n * @param ev optional form submit event\n * @returns Algolia search results\n */\n private onSearchSubmit = async (ev?) => {\n if (ev) ev.preventDefault();\n if (!this.isSearchValSet()) return;\n\n if (!this.currentIndex) this.currentSelectedIndex();\n if (!this.algoliaSearchResults) await this.doAlgoliaSearch();\n\n const activeIndex = this.algoliaSearchResults.results.find(\n (res) => res.selected\n );\n const { index, domain, filters, query, replicas } = activeIndex;\n\n this.nanoSearchResult.emit({\n meta: {\n indexTitle: activeIndex.indexName,\n index,\n domain,\n filters,\n query,\n replicas,\n },\n client: { apiKey: this.searchApiKey, appId: this.searchAppId },\n });\n this.showAutocomplete = false;\n return this.algoliaSearchResults;\n };\n\n private onSearchIndexChange = async (\n index: CustomEvent<SelectChangeEventDetail> | string\n ) => {\n const ev = index as CustomEvent<SelectChangeEventDetail>;\n let indexStr = index as string;\n\n if (!this.currentIndex) this.currentSelectedIndex();\n\n if (ev.detail && ev.detail.value.length)\n indexStr = ev.detail.value as string;\n if (!indexStr || !indexStr.length) return;\n if (this.currentIndex.index === indexStr) return;\n\n const selectedIndex = this.internalSearchIndeces.find(\n (index) => index.index === indexStr\n );\n if (!selectedIndex || !selectedIndex.alogliaIndex) return;\n\n this.searchIndex = selectedIndex.name;\n if (this.isSearchValSet()) await this.onSearchChange();\n };\n\n private isSearchValSet() {\n if (this.searchValInternal.length < 3) return false;\n return true;\n }\n\n private switchIndexSubmit = async (index: string) => {\n if (this.isSearchValSet()) {\n await this.onSearchIndexChange(index);\n this.onSearchSubmit();\n } else this.onSearchIndexChange(index);\n };\n\n // Autocomplete\n\n @Watch('showAutocomplete')\n resetHitFocus() {\n this.currAIndex = -1;\n }\n\n private onAutocompleteBlur = (ev: MouseEvent) => {\n if (!this.showAutocomplete || !this.autocompleteResults) return;\n if (ev && ev.target && (ev.target as HTMLElement).closest('.search-widget'))\n return;\n this.showAutocomplete = false;\n };\n\n private showAutocompleteResults = () => {\n if (!this.autocompleteResults || !this.autocompleteResults.hits) return;\n this.showAutocomplete = true;\n };\n\n private setActiveElement(\n autocompleteEle: HTMLAnchorElement | HTMLButtonElement\n ) {\n this.autocompleteEles.map((ele) =>\n ele.setAttribute('aria-selected', 'false')\n );\n autocompleteEle.focus({ preventScroll: true });\n autocompleteEle.setAttribute('aria-selected', 'true');\n }\n\n private onAutocompleteInteract = (ev: KeyboardEvent) => {\n // list open, navigate items with arrows\n if (!this.showAutocomplete || !this.autocompleteResults) return;\n let testIndex = this.currAIndex;\n\n switch (ev.key) {\n case 'Tab':\n setTimeout(() => {\n if (\n !this.el.shadowRoot.activeElement ||\n !this.el.shadowRoot.activeElement.closest('.search-widget')\n ) {\n this.showAutocomplete = false;\n return;\n } else {\n const found = this.autocompleteEles.find((ele, i) => {\n if (ele === this.el.shadowRoot.activeElement) {\n this.currAIndex = i;\n return true;\n }\n });\n if (found) this.setActiveElement(found);\n else this.currAIndex = -1;\n }\n });\n break;\n case 'ArrowDown':\n case 'ArrowUp': {\n if (ev.key === 'ArrowDown') testIndex++;\n else if (ev.key === 'ArrowUp') testIndex--;\n\n const found = this.autocompleteEles[testIndex];\n if (\n found ||\n testIndex < 0 ||\n testIndex > this.autocompleteEles.length - 1\n ) {\n ev.preventDefault();\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.searchInput.clientWidth; // force reflow\n\n if (found) {\n this.setActiveElement(found);\n this.currAIndex = testIndex;\n } else if (testIndex < 0) {\n this.searchInput.setFocus();\n this.currAIndex = -1;\n }\n break;\n }\n case 'Enter':\n case ' ':\n if (this.autocompleteEles[this.currAIndex]) {\n this.autocompleteEles[this.currAIndex].click();\n }\n break;\n }\n };\n\n // Various.\n\n /**\n * Assesses what content is present in which slots\n */\n private assessSlottedContent = () => {\n readTask(() => {\n this.hasSiteSlot = !!this.el.querySelectorAll('[slot=\"site\"]').length;\n this.hasLoggedinSlot =\n !!this.el.querySelectorAll('[slot=\"loggedin\"]').length;\n this.hasPromotionSlot =\n !!this.el.querySelectorAll('[slot=\"promotion\"]').length;\n\n this.aboutSlotLen = this.el.querySelectorAll('[slot=\"about\"]').length;\n this.iconSlotLen = this.el.querySelectorAll('[slot=\"icon\"]').length;\n this.mainSlotLen = this.el.querySelectorAll('[slot=\"main\"]').length;\n this.overflowSlotLen =\n this.el.querySelectorAll('[slot=\"overflow\"]').length;\n this.searchSlotLen = this.el.querySelectorAll('[slot=\"search\"]').length;\n });\n };\n\n private async handleBarResize() {\n const descreaseThreshold = () => {\n return new Promise<void>((resolve) => {\n this.threshold--;\n\n setTimeout(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.mainBarDiv.clientWidth; // force reflow\n resolve();\n }, 200);\n });\n };\n\n // Decrease the threshold until content fits\n while (this.threshold > 0) {\n if (\n this.mainBarDiv.scrollWidth <= this.mainBarDiv.parentElement.clientWidth\n )\n break;\n await descreaseThreshold();\n }\n\n /* content now fits so add / remove context classes\n on nav-items depending on whether they're added to bar or burger. */\n\n this.thresholdReady = true;\n\n let menuItems: Array<Element>, barItems: Array<Element>;\n readTask(() => {\n menuItems = [\n ...Array.from(\n this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[slot=\"site\"]`\n )\n ),\n ...Array.from(\n this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[slot=\"overflow\"]`\n )\n ),\n ];\n barItems = [];\n\n if (this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.icon)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[slot=\"icon\"]`\n )\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[slot=\"icon\"]`\n )\n )\n );\n\n if (this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[slot=\"loggedin\"]`\n )\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[slot=\"loggedin\"]`\n )\n )\n );\n\n if (this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.main)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[slot=\"main\"]`\n )\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[slot=\"main\"]`\n )\n )\n );\n\n if (this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.about)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[slot=\"about\"]`\n )\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll(\n `${transformTag('nano-nav-item')}[slot=\"about\"]`\n )\n )\n );\n });\n\n writeTask(() => {\n menuItems.forEach((item) => {\n item.classList.add('nano-global-nav-menu');\n item.classList.remove('nano-global-nav-bar');\n });\n barItems.forEach((item) => {\n item.classList.remove('nano-global-nav-menu');\n item.classList.add('nano-global-nav-bar');\n });\n });\n }\n\n // Stencil Lifecycle / Rendering\n\n componentWillLoad() {\n ComponentStore.init(\n this,\n ['searchIndex', 'searchValue'],\n 'url-hash',\n 'gns'\n );\n\n this.assessSlottedContent();\n }\n\n connectedCallback() {\n this.handleMyAccountData();\n this.getMyAccData();\n }\n\n componentDidLoad() {\n if (Build.isBrowser) {\n this.debounceResize = debounce(this.onWindowResize.bind(this), 200);\n window.addEventListener('resize', this.debounceResize);\n this.currSize = window.innerWidth;\n }\n\n this.initAlgoliaClient();\n this.addAlgoliaIndeces();\n requestAnimationFrame(() => this.handleBarResize());\n }\n\n disconnectedCallback() {\n if (Build.isBrowser)\n window.removeEventListener('resize', this.debounceResize);\n }\n\n // Render output\n\n private autocompleteList(): VNode {\n let content;\n if (this.showAutocomplete && this.scrollingUp) {\n let currentScopeHits = 0;\n let scopeChangeSuggestions = 0;\n\n const scopeSuggestReducer = (\n total: number,\n result: AlgoliaMultiResult\n ) => {\n return result.index !== this.currentIndex.index\n ? total + result.hits.length\n : total;\n };\n const currentSuggestReducer = (\n total: number,\n result: AlgoliaMultiResult\n ) => {\n return result.index === this.currentIndex.index\n ? total + result.hits.length\n : total;\n };\n\n if (this.scopeSearch) {\n scopeChangeSuggestions = this.scopeSearch.results.reduce(\n scopeSuggestReducer,\n 0\n );\n currentScopeHits = this.scopeSearch.results.reduce(\n currentSuggestReducer,\n 0\n );\n }\n\n if (\n (this.autocompleteResults && this.autocompleteResults.hits.length) ||\n (scopeChangeSuggestions && !currentScopeHits)\n ) {\n let scopeSuggestions = 0;\n\n content = (\n <div>\n {!currentScopeHits && (\n <div class=\"search-autocomplete-hit search-autocomplete-hit--no-result\">\n No results matching '{this.searchValInternal}' were found in{' '}\n <strong>{this.currentIndex.name}</strong>. Try another phrase.\n </div>\n )}\n {this.autocompleteResults && [\n this.autocompleteResults.hits.map((hit, i) => {\n return (\n <a\n role=\"option\"\n ref={(a) => this.autocompleteEles.push(a)}\n tabindex=\"-1\"\n id={'autocomplete-hit-' + i}\n href={hit.url}\n class=\"search-autocomplete-hit\"\n innerHTML={this.autocompleteSnippet(hit)}\n onClick={() => {\n searchInsight.sendClick({\n index: this.currentIndex.index,\n eventName:\n 'Global nav quick search - search result clicked',\n queryID: this.autocompleteResults.queryID,\n objectIDs: [hit.objectID],\n positions: [i + 1],\n });\n }}\n ></a>\n );\n }),\n ]}\n {(!currentScopeHits || this.currentIndex.allGroup) &&\n this.scopeSearch &&\n this.scopeSearch.results && [\n this.scopeSearch.results.map((result, i) => {\n if (\n !result.hits.length ||\n result.index === this.currentIndex.index ||\n scopeSuggestions > 1\n )\n return;\n scopeSuggestions++;\n return (\n <button\n role=\"option\"\n ref={(button) => this.autocompleteEles.push(button)}\n tabindex=\"-1\"\n id={'autocomplete-scope-' + i}\n class=\"search-autocomplete-hit\"\n onClick={() => this.switchIndexSubmit(result.index)}\n onMouseDown={() => this.switchIndexSubmit(result.index)}\n >\n \"{this.searchValInternal}\"{' '}\n <div class=\"search-autocomplete-hit-scope\">\n in {result.indexName}\n </div>\n </button>\n );\n }),\n ]}\n {!!currentScopeHits && (\n <div class=\"search-autocomplete-foot\">\n <button\n role=\"option\"\n class=\"search-autocomplete-submit\"\n ref={(button) => this.autocompleteEles.push(button)}\n id={'autocomplete-foot'}\n onClick={this.onSearchSubmit}\n onMouseDown={this.onSearchSubmit}\n >\n View all results\n </button>\n </div>\n )}\n </div>\n );\n } else if (!currentScopeHits) {\n content = (\n <div class=\"search-autocomplete-hit search-autocomplete-hit--no-result\">\n No results matching '{this.searchValInternal}' were found. Try\n another phrase.\n </div>\n );\n }\n }\n\n return (\n <div\n class=\"search-autocomplete\"\n role=\"listbox\"\n id=\"autocomplete-results\"\n aria-expanded={this.showAutocomplete ? 'true' : 'false'}\n hidden={!this.showAutocomplete}\n onKeyDown={this.onAutocompleteInteract}\n >\n {content}\n </div>\n );\n }\n\n private searchWidget(): VNode[] {\n return [\n <form\n class=\"search-inputs\"\n onSubmit={this.onSearchSubmit}\n id=\"global-nav-search\"\n >\n <nano-select\n class=\"search-input\"\n label=\"Which area of content would you like to search?\"\n hideLabel\n showInlineError={false}\n value={this.currentSelectedIndex()?.index}\n onNanoChange={this.onSearchIndexChange}\n mask\n >\n {this.internalSearchIndeces.map((index) => {\n return (\n <nano-option\n selected={index.name === this.searchIndex}\n value={index.index}\n >\n {index.name || index.index}\n </nano-option>\n );\n })}\n <nano-icon\n name=\"light/chevron-down\"\n class=\"select-input__arrow\"\n slot=\"down-arrow\"\n />\n </nano-select>\n <nano-input\n class=\"search-input\"\n label=\"What would you like to search for?\"\n aria-label=\"What would you like to search for\"\n hideLabel\n showInlineError={false}\n clear-input\n placeholder=\"Search Nanopore\"\n type=\"text\"\n ref={(input) => (this.searchInput = input)}\n onNanoChange={this.onSearchChange}\n onNanoInput={this.onSearchInput}\n onKeyDown={this.onAutocompleteInteract}\n debounce={500}\n aria-autocomplete=\"list\"\n aria-activedescendant={\n this.autocompleteEles[this.currAIndex]\n ? this.autocompleteEles[this.currAIndex].id\n : false\n }\n aria-controls=\"autocomplete-results\"\n onNanoFocus={this.showAutocompleteResults}\n value={this.searchValue}\n role=\"textbox\"\n >\n <button\n class={{\n 'search-icon': true,\n 'search-icon--search': true,\n 'search-icon--show': !!this.searchValue && !this.searchLoading,\n }}\n slot=\"end\"\n onClick={(e) => {\n this.searchValInternal = this.searchInput.value;\n this.onSearchSubmit(e);\n }}\n >\n <nano-icon\n name=\"light/magnifying-glass\"\n role=\"img\"\n ariaLabel=\"Search now\"\n ></nano-icon>\n </button>\n <span\n class={{\n 'search-icon': true,\n 'search-icon--loader': true,\n 'search-icon--show': this.searchLoading,\n }}\n slot=\"end\"\n >\n <nano-icon name=\"light/spinner-third\"></nano-icon>\n </span>\n </nano-input>\n <input type=\"submit\" />\n </form>,\n ];\n }\n\n render() {\n this.autocompleteEles = [];\n const isRtl = this.el.ownerDocument.dir === 'rtl';\n\n const searchWidget = this.searchWidget();\n searchWidget.push(this.autocompleteList());\n\n return (\n <Host\n class={{\n [this.thresholdClasses().join(' ')]: true,\n ready: this.ready,\n 'search-bar-shown': this.searchBarShown && this.scrollingUp,\n 'search-auto-complete-shown':\n this.showAutocomplete && this.scrollingUp,\n 'modal-open': this.modalIsOpen,\n resizing: this.isResizing,\n 'nano-global-nav': true,\n }}\n dir={isRtl ? 'rtl' : null}\n >\n <div\n class={{\n 'global-nav': true,\n 'scrolling-down': !this.scrollingUp,\n }}\n >\n {/* START BURGER / OVERFLOW MENU */}\n <nav\n id=\"global-nav-menu\"\n class={{\n 'gn-menu': true,\n open: this.modalOpen,\n 'has-promotion': this.hasPromotionSlot,\n 'menu-full-screen': this.menuFullScreen,\n 'secondary-open': !!this.secondaryMenuOpen,\n }}\n aria-expanded={this.modalOpen ? 'true' : 'false'}\n ref={(div) => (this.menuDiv = div)}\n part=\"burger\"\n >\n <div\n class=\"gn-menu_wrap\"\n ref={(div) => (this.menuWrapDiv = div)}\n tabindex=\"-1\"\n part=\"burger-menu\"\n >\n <div class=\"gn-menu_actions\" part=\"burger-actions-bar\">\n <button\n class=\"menu-btn icon-btn icon-btn\"\n onMouseDown={this.onMenuBtnClick}\n onKeyDown={this.onMenuBtnKeyDown}\n >\n {this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login && (\n <nano-icon\n name=\"light/xmark\"\n aria-label=\"close menu\"\n role=\"img\"\n ></nano-icon>\n )}\n {this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.login && (\n <nano-icon\n name=\"light/bars\"\n aria-label=\"close menu\"\n role=\"img\"\n ></nano-icon>\n )}\n </button>\n\n {this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [\n !!this.iconSlotLen && <slot name=\"icon\" />,\n this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('icons')) && [\n this.msgUrl && (\n <a href={this.msgUrl} class=\"icon-btn\">\n <nano-icon\n name=\"light/bell\"\n role=\"img\"\n ariaLabel=\"Check notifications\"\n ></nano-icon>\n {this.msgCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.msgCount}\n </span>\n )}\n </a>\n ),\n this.cartUrl && (\n <a href={this.cartUrl} class=\"icon-btn\">\n <nano-icon\n name=\"light/cart-shopping\"\n role=\"img\"\n ariaLabel=\"Go to cart\"\n ></nano-icon>\n {this.cartCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.cartCount}\n </span>\n )}\n </a>\n ),\n ],\n ]}\n\n {this.myAccData && this.myAccData.urls.login && (\n <a\n href={this.myAccData.urls.login + this.ssoRedirect}\n class=\"login-btn\"\n >\n Login / Register{' '}\n <nano-icon name=\"solid/chevron-right\"></nano-icon>\n </a>\n )}\n </div>\n\n <div\n class=\"content-wrap\"\n ref={(div) => (this.menuContentDiv = div)}\n >\n <div class=\"content\" part=\"burger-content\">\n <nav class=\"nav-links nav-links--main\" role=\"menu\">\n <slot\n name=\"overflow\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.main &&\n !!this.mainSlotLen && (\n <slot\n name=\"main\"\n onSlotchange={this.assessSlottedContent}\n />\n )}\n </nav>\n\n {/* ABOUT AND SITE MENU IN BURGER */}\n {(((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.hasSiteSlot) ||\n !!this.siteNavItms.length) && (\n <div>\n {/* SITES MENU (Always in burger) */}\n {(this.hasSiteSlot || !!this.siteNavItms.length) && [\n (this.threshold >= THRESHOLDLIMIT - 2 ||\n this.mainSlotLen < 2) &&\n this.overflowSlotLen < 2 && (\n <div class=\"nav-links-wrap\">\n <h4 class=\"nav-links_title nav-links_title--sites\">\n Sites\n </h4>\n <nav\n class=\"nav-links nav-links--sub nav-links--sites\"\n aria-label=\"Different company site links\"\n >\n <slot\n name=\"site\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.siteNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={link.address}\n target={link.target}\n >\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </nav>\n </div>\n ),\n ((this.threshold < THRESHOLDLIMIT - 2 &&\n this.mainSlotLen >= 2) ||\n this.overflowSlotLen >= 2) && (\n <nav\n class=\"nav-links\"\n aria-label=\"Different company site links\"\n >\n <nano-nav-item\n class=\"nano-global-nav nano-global-nav-menu\"\n closeOnBlur={false}\n >\n Sites\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-right\"\n ></nano-icon>\n <div slot=\"secondary\">\n <div class=\"content\">\n <button\n class=\"back-btn\"\n onClick={this.subMenuClose}\n >\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-left\"\n aria-label=\"go back\"\n role=\"img\"\n ></nano-icon>\n Sites\n </button>\n <div class=\"content--sub\">\n <slot\n name=\"site\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.siteNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={link.address}\n target={link.target}\n >\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </div>\n </div>\n </div>\n </nano-nav-item>\n </nav>\n ),\n ]}\n </div>\n )}\n </div>\n\n {/* USER PROFILE IN BURGER */}\n {this.isLoggedIn &&\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login &&\n (this.loggedInNavItms.length || this.hasLoggedinSlot) && (\n <nav class=\"nav-links\" aria-label=\"Your user account links\">\n <nano-nav-item\n class=\"nano-global-nav user-nav nano-global-nav-menu\"\n closeOnBlur={false}\n >\n {this.myAccountUser.name}\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-right\"\n ></nano-icon>\n <div slot=\"secondary\">\n <div class=\"content\">\n <button\n class=\"back-btn\"\n onClick={this.subMenuClose}\n >\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-left\"\n aria-label=\"go back\"\n role=\"img\"\n ></nano-icon>\n {this.myAccountUser.name}\n </button>\n {!!this.myAccountUser?.small_avatar_url && (\n <nano-global-nav-user-profile\n myAccountUser={this.myAccountUser}\n userProfileUrl={this.userProfileUrl}\n ></nano-global-nav-user-profile>\n )}\n <div class=\"content--sub\">\n <slot\n name=\"loggedin\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.loggedInNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a href={link.address} target={link.target}>\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={\n this.myAccData.urls.forgot_password +\n this.ssoRedirect\n }\n >\n Change Password\n </a>\n </nano-nav-item>\n </div>\n </div>\n </div>\n </nano-nav-item>\n </nav>\n )}\n\n <slot\n name=\"promotion\"\n onSlotchange={this.assessSlottedContent}\n />\n\n {this.myAccData && this.myAccData.urls.logout && (\n <div class=\"login-btn logout-btn\">\n <a href={this.myAccData.urls.logout + this.ssoRedirect}>\n Logout\n </a>\n </div>\n )}\n </div>\n </div>\n </nav>\n {/* END BURGER / OVERFLOW MENU */}\n\n {/* START MAIN NAV BAR */}\n <div class=\"bars\" part=\"bars\">\n <nav\n part=\"main-bar\"\n class=\"main-bar\"\n aria-label=\"Main site navigation\"\n tabindex=\"-1\"\n ref={(div) => (this.mainBarDiv = div)}\n >\n {(this.hasPromotionSlot ||\n !!this.overflowSlotLen ||\n ((this.myAccData || !!this.iconSlotLen) &&\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.icon) ||\n (this.isLoggedIn &&\n (!!this.loggedInNavItms.length || this.hasLoggedinSlot) &&\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login) ||\n (!!this.mainSlotLen &&\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.main) ||\n ((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.about) ||\n this.hasSiteSlot ||\n !!this.siteNavItms.length) && (\n <button\n class=\"menu-btn icon-btn\"\n onMouseDown={this.menuOpen}\n onKeyDown={this.onMenuBtnKeyDown}\n aria-expanded={this.modalOpen ? 'true' : 'false'}\n aria-controls=\"global-nav-menu\"\n ref={(btn) => (this.menuBtn = btn)}\n >\n <nano-icon\n name=\"light/bars\"\n aria-label=\"Open menu\"\n ></nano-icon>\n </button>\n )}\n\n {this.showLogo && (\n <a href={this.logoUrl} class=\"logo-link\" part=\"logo-link\">\n <img\n src={getAssetPath(`../nano-assets/ont-logo.svg`)}\n alt=\"Oxford Nanopore Technologies Logo\"\n class=\"logo\"\n />\n </a>\n )}\n {!this.showLogo && (\n <div class=\"logo-link\">\n <slot name=\"logo\" onSlotchange={this.assessSlottedContent} />\n </div>\n )}\n\n <div class=\"nav-links nav-links--main\">\n <slot name=\"main\" onSlotchange={this.assessSlottedContent} />\n </div>\n\n {/* search widget displayed in the bar (there is enough space to show it) */}\n {this.mainSlotLen === 0 &&\n this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.search && [\n this.showSearch && !!this.internalSearchIndeces.length && (\n <div\n class=\"search-widget\"\n role=\"combobox\"\n aria-owns=\"autocomplete-results\"\n aria-expanded={\n this.showAutocomplete && this.autocompleteResults\n ? 'true'\n : 'false'\n }\n >\n {searchWidget}\n </div>\n ),\n (!this.showSearch || !this.myAccData) &&\n !!this.searchSlotLen && (\n <slot\n name=\"search\"\n onSlotchange={this.assessSlottedContent}\n />\n ),\n ]}\n\n {/* Bar Icon buttons */}\n\n {/* Bar search icon button (when not enough to show search in bar) */}\n {(this.mainSlotLen > 0 ||\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.search) &&\n ((this.showSearch && !!this.internalSearchIndeces.length) ||\n !!this.searchSlotLen) && (\n <button\n class={{\n 'icon-btn': true,\n 'search-btn': true,\n 'search-btn--open': this.searchBarShown,\n }}\n aria-controls=\"global-nav-search-bar\"\n aria-expanded={this.searchBarShown ? 'true' : 'false'}\n onClick={this.onSearchBtnClick}\n >\n <nano-icon\n name=\"light/magnifying-glass\"\n role=\"img\"\n ariaLabel=\"Search Oxford Nanopore\"\n ></nano-icon>\n </button>\n )}\n\n {/* Bar cart and notifications */}\n {this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [\n !!this.iconSlotLen && <slot name=\"icon\" />,\n this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('icons')) && [\n this.msgUrl && (\n <a href={this.msgUrl} class=\"icon-btn\">\n <nano-icon\n name=\"light/bell\"\n ariaLabel=\"View your notifications\"\n ></nano-icon>\n {this.msgCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.msgCount}\n </span>\n )}\n </a>\n ),\n this.cartUrl && (\n <a href={this.cartUrl} class=\"icon-btn\">\n <nano-icon\n name=\"light/cart-shopping\"\n ariaLabel=\"View your shopping cart\"\n ></nano-icon>\n {this.cartCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.cartCount}\n </span>\n )}\n </a>\n ),\n ],\n ]}\n\n {/* Bar about links */}\n {(!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.about && (\n <nav\n class=\"nav-links nav-links--sub\"\n aria-label=\"About the company. Links\"\n role=\"menu\"\n >\n <slot\n name=\"about\"\n onSlotchange={this.assessSlottedContent}\n />\n {!!this.aboutNavItms.length && (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-bar\">\n <a\n href={this.aboutNavItms[0].address}\n target={this.aboutNavItms[0].target}\n >\n {this.aboutNavItms[0].title}\n </a>\n </nano-nav-item>\n )}\n </nav>\n )}\n\n {/* Bar login button / User panel */}\n {this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('loggedin')) &&\n this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.login && [\n this.myAccData.urls.login && (\n <a\n href={this.myAccData.urls.login + this.ssoRedirect}\n class=\"login-btn\"\n >\n Login / Register\n </a>\n ),\n this.myAccountUser && (\n <div class=\"user-links\">\n <button\n class={{\n 'icon-btn': true,\n 'user-links-btn': true,\n open: this.userMenuOpen,\n }}\n onMouseDown={this.onUserBtnClick}\n onKeyDown={this.onUserBtnKeyDown}\n >\n {' '}\n {this.myAccountUser.name}\n <nano-icon\n name=\"solid/caret-down\"\n ariaLabel=\"View your account links\"\n ></nano-icon>\n </button>\n <div\n class=\"user-links-panel\"\n tabindex=\"-1\"\n ref={(div) => (this.userLinkPanel = div)}\n >\n {!!this.myAccountUser?.small_avatar_url && (\n <nano-global-nav-user-profile\n myAccountUser={this.myAccountUser}\n userProfileUrl={this.userProfileUrl}\n ></nano-global-nav-user-profile>\n )}\n <div class=\"user-links-panel-content\">\n {this.loggedInNavItms.map((link) => {\n return (\n <a href={link.address} target={link.target}>\n {link.title}\n </a>\n );\n })}\n </div>\n <div class=\"user-links-panel-foot\">\n <a\n href={\n this.myAccData.urls.forgot_password +\n this.ssoRedirect\n }\n >\n Change Password\n </a>\n <a\n href={this.myAccData.urls.logout + this.ssoRedirect}\n >\n Logout\n </a>\n </div>\n </div>\n </div>\n ),\n ]}\n </nav>\n\n {/* Search widget shown in bar underneath main bar when there is not enough space */}\n {(this.mainSlotLen > 0 ||\n this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.search) && (\n <div\n id=\"global-nav-search-bar\"\n class={{\n 'search-bar': true,\n show: this.searchBarShown,\n }}\n aria-expanded={this.searchBarShown ? 'true' : 'false'}\n role=\"region\"\n tabindex=\"-1\"\n ref={(div) => (this.searchBarEl = div)}\n part=\"search-bar\"\n >\n <div class=\"search-widget\">\n {this.showSearch && !!this.internalSearchIndeces.length && (\n <div>{searchWidget}</div>\n )}\n {(!this.showSearch || !this.myAccData) &&\n !!this.searchSlotLen && (\n <slot\n name=\"search\"\n onSlotchange={this.assessSlottedContent}\n />\n )}\n </div>\n </div>\n )}\n </div>\n {/* END MAIN NAV BAR */}\n\n {/* BURGER MENU MOBILE MASK */}\n {(this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login ||\n this.menuFullScreen) && (\n <div\n class={{\n mask: true,\n open: this.modalOpen,\n }}\n onClick={this.menuClose}\n onTouchEnd={this.menuClose}\n ></div>\n )}\n </div>\n <div class=\"site-content\">\n <slot />\n </div>\n </Host>\n );\n }\n\n // Data processing\n\n /**\n * Finds a correct domain (as defined by myAccount data) for a given origin\n * @returns a domain string for this origin\n */\n private domainFor(origin: string): string {\n if (!this.myAccData) return '';\n const domain = this.myAccData.domains.find((dm) => dm.origin === origin);\n return domain ? domain.domain : '';\n }\n\n /**\n * process a set, or multiple sets of algolia results\n * and applies correct domain names / http protocol to each result's url\n * @returns results where partial paths are turned to full urls\n */\n private processSearchResults(results: AlgoliaMultiResults | AlgoliaResults) {\n const multiResults = results as AlgoliaMultiResults;\n const singleResult = results as AlgoliaResults;\n\n if (multiResults.results) {\n multiResults.results.forEach((result, i) => {\n multiResults.results[i] = this.processSearchResults(\n result\n ) as AlgoliaResults;\n });\n return multiResults;\n } else {\n singleResult.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url =\n location.protocol + '//' + this.domainFor(hit.origin) + hit.url;\n });\n return singleResult;\n }\n }\n\n /**\n * Ingests the data blob from myAccount; turns prescient fields to internal state\n */\n private processMyAccData() {\n if (!this.myAccData || !this.myAccData.search.indeces.length) return;\n\n if (this.myAccData.search.api_key)\n this.searchApiKey = this.myAccData.search.api_key;\n if (this.myAccData.search.app_id)\n this.searchAppId = this.myAccData.search.app_id;\n\n if (this.myAccData.cart.count) this.cartCount = this.myAccData.cart.count;\n if (this.myAccData.notifications.count)\n this.msgCount = this.myAccData.notifications.count;\n\n if (!this.searchAppId || !this.searchApiKey) return;\n this.internalSearchIndeces = [\n ...this.myAccData.search.indeces,\n ...this.searchIndeces,\n ];\n\n if (this.myAccData.urls.cart && !this.cartUrl)\n this.cartUrl = this.myAccData.urls.cart;\n if (this.myAccData.urls.messages && !this.msgUrl)\n this.msgUrl = this.myAccData.urls.messages;\n }\n\n /**\n * Ingests the data blob from myAccount links; applies prescient fields to internal state\n */\n private processMyAccLinks() {\n if (!this.myAccData.links || !this.myAccData.links.length) return;\n\n this.myAccData.links.forEach((link) => {\n switch (link.area) {\n case 'left-side-logged-in':\n case 'left-side-logged-out':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('sites')\n )\n break;\n if (this.isLoggedIn && link.area === 'left-side-logged-in')\n this.siteNavItms.push(link);\n else if (!this.isLoggedIn && link.area === 'left-side-logged-out')\n this.siteNavItms.push(link);\n break;\n case 'right-side-logged-in':\n case 'right-side-logged-out':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('about')\n )\n break;\n if (this.isLoggedIn && link.area === 'right-side-logged-in')\n this.aboutNavItms.push(link);\n else if (!this.isLoggedIn && link.area === 'right-side-logged-out')\n this.aboutNavItms.push(link);\n break;\n case 'profile-panel-list':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('loggedin')\n )\n break;\n this.loggedInNavItms.push(link);\n break;\n }\n });\n }\n}\n"],"version":3}
|