@nanoporetech-digital/components 7.0.1 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/cjs/nano-global-nav.cjs.entry.js +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-69e03f91.js → nano-table-b88f7169.js} +2 -2
- package/dist/cjs/{nano-table-69e03f91.js.map → nano-table-b88f7169.js.map} +1 -1
- package/dist/cjs/nano-table.cjs.entry.js +1 -1
- package/dist/cjs/{table.worker-703ca04e.js → table.worker-4ec6ba52.js} +2 -2
- package/dist/cjs/table.worker-4ec6ba52.js.map +1 -0
- package/dist/collection/assets/img/ont-logo-light.svg +1 -0
- package/dist/collection/assets/img/ont-logo.svg +1 -0
- package/dist/collection/assets/img/ont-wheel-light.svg +1 -0
- package/dist/collection/assets/img/ont-wheel.svg +1 -0
- package/dist/collection/components/global-nav/assets/ont-logo-light.svg +1 -0
- package/dist/collection/components/global-nav/assets/ont-logo.svg +1 -89
- package/dist/collection/components/global-nav/assets/ont-wheel-light.svg +1 -31
- package/dist/collection/components/global-nav/assets/ont-wheel.svg +1 -0
- package/dist/collection/components/global-nav/style/global-nav.css +5 -3
- package/dist/components/nano-global-nav.js +1 -1
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +1 -1
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/{nano-table-f479526e.js → nano-table-91dfb09f.js} +2 -2
- package/dist/esm/{nano-table-f479526e.js.map → nano-table-91dfb09f.js.map} +1 -1
- package/dist/esm/nano-table.entry.js +1 -1
- package/dist/esm/{table.worker-a35b02e8.js → table.worker-2ade36ab.js} +2 -2
- package/dist/esm/table.worker-2ade36ab.js.map +1 -0
- package/dist/nano-assets/fonts/jp/noto-sans-jp-v53-japanese-500.woff2 +0 -0
- package/dist/nano-assets/fonts/jp/noto-sans-jp-v53-japanese-700.woff2 +0 -0
- package/dist/nano-assets/fonts/jp/noto-sans-jp-v53-japanese-regular.woff2 +0 -0
- package/dist/nano-assets/fonts/latin/noto-sans-v38-latin-500.woff2 +0 -0
- package/dist/nano-assets/fonts/latin/noto-sans-v38-latin-500italic.woff2 +0 -0
- package/dist/nano-assets/fonts/latin/noto-sans-v38-latin-700.woff2 +0 -0
- package/dist/nano-assets/fonts/latin/noto-sans-v38-latin-700italic.woff2 +0 -0
- package/dist/nano-assets/fonts/latin/noto-sans-v38-latin-italic.woff2 +0 -0
- package/dist/nano-assets/fonts/latin/noto-sans-v38-latin-regular.woff2 +0 -0
- package/dist/nano-assets/fonts/sc/noto-sans-sc-v37-chinese-simplified-500.woff2 +0 -0
- package/dist/nano-assets/fonts/sc/noto-sans-sc-v37-chinese-simplified-700.woff2 +0 -0
- package/dist/nano-assets/fonts/sc/noto-sans-sc-v37-chinese-simplified-regular.woff2 +0 -0
- package/dist/nano-assets/hash.txt +1 -1
- package/dist/nano-assets/icon/favicon.ico +0 -0
- package/dist/nano-assets/icon/icon.png +0 -0
- package/dist/nano-assets/img/ont-logo-light.svg +1 -0
- package/dist/nano-assets/img/ont-logo.svg +1 -0
- package/dist/nano-assets/img/ont-wheel-light.svg +1 -0
- package/dist/nano-assets/img/ont-wheel.svg +1 -0
- package/dist/nano-assets/ont-logo-light.svg +1 -0
- package/dist/nano-assets/ont-logo.svg +1 -89
- package/dist/nano-assets/ont-wheel-light.svg +1 -31
- package/dist/nano-assets/ont-wheel.svg +1 -0
- package/dist/nano-components/assets/ont-logo-light.svg +1 -0
- package/dist/nano-components/assets/ont-logo.svg +1 -89
- package/dist/nano-components/assets/ont-wheel-light.svg +1 -31
- package/dist/nano-components/assets/ont-wheel.svg +1 -0
- 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-table-f479526e.js → nano-table-91dfb09f.js} +2 -2
- package/dist/nano-components/nano-table.entry.js +1 -1
- package/dist/nano-components/{table.worker-a35b02e8.js → table.worker-2ade36ab.js} +2 -2
- package/dist/themes/nanopore.css +1 -1
- package/dist/themes/nanopore.css.map +1 -1
- package/dist/themes/noto-sans-jp.css +1 -0
- package/dist/themes/noto-sans-jp.css.map +1 -0
- package/dist/themes/noto-sans-sc.css +1 -0
- package/dist/themes/noto-sans-sc.css.map +1 -0
- package/dist/themes/noto-sans.css +1 -0
- package/dist/themes/noto-sans.css.map +1 -0
- package/docs-json.json +1 -1
- package/hydrate/index.js +1 -1
- package/package.json +2 -2
- package/dist/cjs/table.worker-703ca04e.js.map +0 -1
- package/dist/collection/assets/icon/icon.svg +0 -31
- package/dist/collection/assets/img/logo.svg +0 -89
- package/dist/collection/components/global-nav/assets/ont-logo-inverse.svg +0 -47
- package/dist/esm/table.worker-a35b02e8.js.map +0 -1
- package/dist/nano-assets/fonts/3AF163_21_0.woff +0 -0
- package/dist/nano-assets/fonts/3AF163_21_0.woff2 +0 -0
- package/dist/nano-assets/fonts/3AF163_22_0.woff +0 -0
- package/dist/nano-assets/fonts/3AF163_22_0.woff2 +0 -0
- package/dist/nano-assets/fonts/3AF163_25_0.woff +0 -0
- package/dist/nano-assets/fonts/3AF163_25_0.woff2 +0 -0
- package/dist/nano-assets/fonts/3AF163_28_0.woff +0 -0
- package/dist/nano-assets/fonts/3AF163_28_0.woff2 +0 -0
- package/dist/nano-assets/fonts/3AF163_29_0.woff +0 -0
- package/dist/nano-assets/fonts/3AF163_29_0.woff2 +0 -0
- package/dist/nano-assets/fonts/MHeiPRCBold_normal_normal.woff +0 -0
- package/dist/nano-assets/fonts/MHeiPRCBold_normal_normal.woff2 +0 -0
- package/dist/nano-assets/fonts/MHeiPRCHeavy_normal_normal.woff +0 -0
- package/dist/nano-assets/fonts/MHeiPRCHeavy_normal_normal.woff2 +0 -0
- package/dist/nano-assets/fonts/MHeiPRCLight_normal_normal.woff +0 -0
- package/dist/nano-assets/fonts/MHeiPRCLight_normal_normal.woff2 +0 -0
- package/dist/nano-assets/fonts/MHeiPRCMedium_normal_normal.woff +0 -0
- package/dist/nano-assets/fonts/MHeiPRCMedium_normal_normal.woff2 +0 -0
- package/dist/nano-assets/icon/icon.svg +0 -31
- package/dist/nano-assets/img/logo.svg +0 -89
- package/dist/nano-assets/ont-logo-inverse.svg +0 -47
- package/dist/nano-components/assets/ont-logo-inverse.svg +0 -47
- package/dist/themes/nanopore.cn.css +0 -1
- package/dist/themes/nanopore.cn.css.map +0 -1
- /package/dist/nano-components/{nano-table-f479526e.js.map → nano-table-91dfb09f.js.map} +0 -0
- /package/dist/nano-components/{table.worker-a35b02e8.js.map → table.worker-2ade36ab.js.map} +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"file":"nano-global-nav.entry.cjs.js","mappings":"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","names":["debounce","readTask","algoliasearch","searchInsight","displayTransition","writeTask","ComponentStore","h","index","Host","getAssetPath"],"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 'sass:list';\n@use '../../../global/style/nano-theme/form' as nanoForm;\n\n// globals\n@import '../../../global/style/utilities/globals';\n@import '../../../global/style/nano-theme/base';\n@import '../../../global/style/nano-theme/colours';\n@import '../../../global/style/nano-theme/layers';\n\n// local\n@import 'setup';\n@import 'bar';\n@import 'burger';\n@import 'search';\n@import '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 #196c82;\n * @prop --bar-color-shade: Defaults to rgb(19 89 111);\n * @prop --bar-color-tint: Defaults to rgb(19 89 111);\n * @prop --bar-color-focus: Defaults to #001a21;\n * @prop --bar-user-panel-bg: Defaults to #016d86;\n\n * @prop --menu-background: Defaults to #001a21;\n * @prop --menu-text-color: Defaults to white;\n * @prop --bar-dropdown-bg: Defaults to #196c82;\n * @prop --bar-dropdown-text: 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($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: 21px;\n --bar-item-spacing: 13px;\n --bar-background: white;\n --bar-text-color: #196c82;\n --bar-color-shade: rgb(12 90 113);\n --bar-color-tint: rgb(19 89 111);\n --bar-color-focus: #99a3a6;\n --bar-user-panel-bg: #016d86;\n --bar-dropdown-bg: #196c82;\n --bar-dropdown-text: white;\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($colors, lightblue)};\n --menu-icon-color: white;\n --login-button-bg: #17bb75;\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: #{nanoForm.$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';\nimport type { SearchClient as AlgoliaClient } from 'algoliasearch/lite';\nimport type {\n InputChangeEventDetail,\n SelectChangeEventDetail,\n AlgoliaResults,\n SearchIndex,\n MyAccountLink,\n AloliaSearchResultDetail,\n AlgoliaMultiResult,\n MyAccountUser,\n MyAccountData,\n NavItemEventDetail,\n AlgoliaResultHit,\n AlgoliaNetworkError,\n AlgoliaMultiResults,\n} from '../../interface';\nimport type { MultipleQueriesQuery } from '@algolia/client-search';\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: () => {};\n private debounceSetResizingState: () => {};\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<AloliaSearchResultDetail>;\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<AloliaSearchResultDetail>;\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 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 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 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 this.menuSelectedItems.forEach((i) => (i.selected = false));\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 setTimeout(() => {\n if (this.secondaryMenuOpen === ev.target && this.menuSelectedItems) {\n this.secondaryMenuOpen = null;\n this.menuContentDiv.style.minHeight = '';\n this.menuSelectedItems.forEach((i) => i.classList.add('selected'));\n this.menuSelectedItems.forEach((i) => (i.selected = true));\n this.menuSelectedItems = null;\n }\n }, 300);\n }\n\n private onMenuBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.modalOpen ? this.menuClose(ev, true) : 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 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 this.searchBarShown ? this.searchbarHide() : 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 * @param ev optional form submit event\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 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 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 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={true}\n showInlineError={false}\n value={this.currentSelectedIndex()?.index}\n onNanoChange={this.onSearchIndexChange}\n mask={true}\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={true}\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 as Document).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.cjs.js","mappings":"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","names":["debounce","readTask","algoliasearch","searchInsight","displayTransition","writeTask","ComponentStore","h","index","Host","getAssetPath"],"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 'sass:list';\n@use '../../../global/style/nano-theme/form' as nanoForm;\n\n// globals\n@import '../../../global/style/utilities/globals';\n@import '../../../global/style/nano-theme/base';\n@import '../../../global/style/nano-theme/colours';\n@import '../../../global/style/nano-theme/layers';\n\n// local\n@import 'setup';\n@import 'bar';\n@import 'burger';\n@import 'search';\n@import '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 #196c82;\n * @prop --bar-color-shade: Defaults to rgb(19 89 111);\n * @prop --bar-color-tint: Defaults to rgb(19 89 111);\n * @prop --bar-color-focus: Defaults to #001a21;\n * @prop --bar-user-panel-bg: Defaults to #016d86;\n\n * @prop --menu-background: Defaults to #001a21;\n * @prop --menu-text-color: Defaults to white;\n * @prop --bar-dropdown-bg: Defaults to #196c82;\n * @prop --bar-dropdown-text: 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($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: 21px;\n --bar-item-spacing: 13px;\n --bar-background: white;\n --bar-text-color: #196c82;\n --bar-color-shade: rgb(12 90 113);\n --bar-color-tint: rgb(19 89 111);\n --bar-color-focus: #99a3a6;\n --bar-user-panel-bg: #016d86;\n --bar-dropdown-bg: #196c82;\n --bar-dropdown-text: white;\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($colors, lightblue)};\n --menu-icon-color: white;\n --login-button-bg: #17bb75;\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: #{nanoForm.$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';\nimport type { SearchClient as AlgoliaClient } from 'algoliasearch/lite';\nimport type {\n InputChangeEventDetail,\n SelectChangeEventDetail,\n AlgoliaResults,\n SearchIndex,\n MyAccountLink,\n AloliaSearchResultDetail,\n AlgoliaMultiResult,\n MyAccountUser,\n MyAccountData,\n NavItemEventDetail,\n AlgoliaResultHit,\n AlgoliaNetworkError,\n AlgoliaMultiResults,\n} from '../../interface';\nimport type { MultipleQueriesQuery } from '@algolia/client-search';\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: () => {};\n private debounceSetResizingState: () => {};\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<AloliaSearchResultDetail>;\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<AloliaSearchResultDetail>;\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 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 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 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 this.menuSelectedItems.forEach((i) => (i.selected = false));\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 setTimeout(() => {\n if (this.secondaryMenuOpen === ev.target && this.menuSelectedItems) {\n this.secondaryMenuOpen = null;\n this.menuContentDiv.style.minHeight = '';\n this.menuSelectedItems.forEach((i) => i.classList.add('selected'));\n this.menuSelectedItems.forEach((i) => (i.selected = true));\n this.menuSelectedItems = null;\n }\n }, 300);\n }\n\n private onMenuBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.modalOpen ? this.menuClose(ev, true) : 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 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 this.searchBarShown ? this.searchbarHide() : 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 * @param ev optional form submit event\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 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 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 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={true}\n showInlineError={false}\n value={this.currentSelectedIndex()?.index}\n onNanoChange={this.onSearchIndexChange}\n mask={true}\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={true}\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 as Document).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}
|