@nanoporetech-digital/components 4.0.0 → 4.1.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 +12 -0
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +2 -2
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon.cjs.entry.js +1 -1
- package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-737365b7.js → nano-table-c5b6630a.js} +2 -2
- package/dist/cjs/{nano-table-737365b7.js.map → nano-table-c5b6630a.js.map} +1 -1
- package/dist/cjs/nano-table.cjs.entry.js +1 -1
- package/dist/cjs/{table.worker-c3b11144.js → table.worker-0876611d.js} +2 -2
- package/dist/cjs/table.worker-0876611d.js.map +1 -0
- package/dist/collection/components/global-nav/global-nav-user-profile.js +1 -1
- package/dist/collection/components/global-nav/global-nav-user-profile.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +1 -1
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-nav/style/global-nav.css +6 -4
- package/dist/collection/components/icon/utils.js +1 -1
- package/dist/collection/components/icon/utils.js.map +1 -1
- package/dist/components/global-nav-user-profile.js +1 -1
- package/dist/components/global-nav-user-profile.js.map +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/icon.js.map +1 -1
- package/dist/components/nano-global-nav.js +2 -2
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +2 -2
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-icon.entry.js +1 -1
- package/dist/esm/nano-icon.entry.js.map +1 -1
- package/dist/esm/{nano-table-75d755ae.js → nano-table-ff985e63.js} +2 -2
- package/dist/esm/{nano-table-75d755ae.js.map → nano-table-ff985e63.js.map} +1 -1
- package/dist/esm/nano-table.entry.js +1 -1
- package/dist/esm/{table.worker-d60d6df4.js → table.worker-906bc297.js} +2 -2
- package/dist/esm/table.worker-906bc297.js.map +1 -0
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/p-0c077605.entry.js +5 -0
- package/dist/nano-components/p-0c077605.entry.js.map +1 -0
- package/dist/nano-components/{p-42e7f253.js → p-13dd65c9.js} +2 -2
- package/dist/nano-components/p-173cc842.entry.js +5 -0
- package/dist/nano-components/p-173cc842.entry.js.map +1 -0
- package/dist/nano-components/p-4b136a65.js +5 -0
- package/dist/nano-components/{p-1b7bad31.entry.js → p-c38a246f.entry.js} +2 -2
- package/dist/nano-components/p-f2d89239.entry.js +5 -0
- package/dist/nano-components/p-f2d89239.entry.js.map +1 -0
- package/docs-json.json +1 -1
- package/hydrate/index.js +3 -3
- package/package.json +2 -2
- package/dist/cjs/table.worker-c3b11144.js.map +0 -1
- package/dist/esm/table.worker-d60d6df4.js.map +0 -1
- package/dist/nano-components/p-b2655717.entry.js +0 -5
- package/dist/nano-components/p-b2655717.entry.js.map +0 -1
- package/dist/nano-components/p-d4cebdef.entry.js +0 -5
- package/dist/nano-components/p-d4cebdef.entry.js.map +0 -1
- package/dist/nano-components/p-d98c6a62.js +0 -5
- package/dist/nano-components/p-f471a392.entry.js +0 -5
- package/dist/nano-components/p-f471a392.entry.js.map +0 -1
- /package/dist/nano-components/{p-42e7f253.js.map → p-13dd65c9.js.map} +0 -0
- /package/dist/nano-components/{p-1b7bad31.entry.js.map → p-4b136a65.js.map} +0 -0
- /package/dist/nano-components/{p-d98c6a62.js.map → p-c38a246f.entry.js.map} +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["async","clientFetch","url","_a","body","customConfig","__rest","headers","Accept","Cache","config","Object","assign","method","credentials","keepalive","mode","JSON","stringify","id","setTimeout","window","AbortController","controller","timeout","abort","signal","response","fetch","clearTimeout","ok","json","errorMessage","text","Error","globalNavCss","THRESHOLDBREAKS","about","main","login","search","icon","GlobalNav","constructor","hostRef","this","currSize","thresholdsGoingUp","THRESHOLDLIMIT","keys","length","autocompleteEles","currAIndex","isLoggedIn","myAccData","aboutNavItms","siteNavItms","loggedInNavItms","setResizingState","state","debounceSetResizingState","debounce","isResizing","onMenuBtnKeyDown","ev","key","modalOpen","menuClose","menuOpen","onMenuBtnClick","e","preventDefault","menuDiv","style","display","menuWrapDiv","focus","preventScroll","threshold","scrollHeight","innerHeight","document","overflow","menuFullScreen","overflowX","modalIsOpen","onMenuHidden","removeEventListener","activeElement","menuBtn","mainBarDiv","subMenuClose","target","closest","open","onUserBtnClick","userMenuOpen","onUserBtnKeyDown","onUserMenuBlur","relatedTarget","onSearchBtnClick","searchBarShown","searchbarShow","searchbarHide","onSearchBtnKeyDown","onSearchBarShown","searchBarEl","searchInput","setFocus","showAutocomplete","searchValInternal","addEventListener","onSearchBarHidden","height","onSearchInput","value","isSearchValSet","searchLoading","detail","type","onSearchChange","searchValue","autocompleteResults","nanoSearchReset","emit","currentIndex","currentSelectedIndex","processSearchResults","alogliaIndex","attributesToSnippet","hitsPerPage","filters","Math","floor","Date","now","console","error","scopeSearch","onSearchSubmit","showAutocompleteResults","algoliaSearchResults","queries","internalSearchIndeces","map","index","indexName","query","facets","algoliaClient","multipleQueries","nanoSearchError","results","result","i","name","selected","domain","domains","allGroup","nanoSearchResult","client","apiKey","searchApiKey","appId","searchAppId","onSearchIndexChange","indexStr","selectedIndex","find","searchIndex","switchIndexSubmit","onAutocompleteBlur","hits","onAutocompleteInteract","testIndex","el","shadowRoot","found","ele","setActiveElement","click","assessSlottedContent","readTask","hasSiteSlot","querySelectorAll","hasLoggedinSlot","hasPromotionSlot","aboutSlotLen","iconSlotLen","mainSlotLen","overflowSlotLen","searchSlotLen","encodeURIComponent","location","href","protocol","host","bind","handleMyAccountData","myAccountData","user","links","myAccountUser","processMyAccLinks","processMyAccData","remoteDataReady","env","userProfileUrl","getMyAccountData","ssoDataUrl","import","foundIndex","changeInternalSearchVal","initAlgoliaClient","algoliasearch","addAlgoliaIndeces","addIndeces","searchIndeces","forEach","initIndex","thresholdChange","newThreshold","oldThreshold","ratioChange","intersectRatio","thresholdReady","menuItems","barItems","Array","from","push","writeTask","item","classList","add","remove","assessReady","ready","remoteReady","attachIO","isReady","nanoIsReady","setupAutocompleteBlur","closeSearchBar","secondaryMenuOpen","slotChange","thresholdClasses","classes","onWindowResize","innerWidth","secondaryOpen","secondaryMenu","stopPropagation","menuSelectedItems","menuContentDiv","minHeight","secondaryClose","force","composedPath","some","contains","requestAnimationFrame","displayTransition","userLinkPanel","widgetHeight","querySelector","toString","autocompleteSnippet","hit","lookFor","_snippetResult","prop","matchLevel","title","substring","resetHitFocus","autocompleteEle","setAttribute","io","root","IntersectionObserver","data","slice","intersectionRatio","observe","componentDidLoad","debounceResize","componentWillLoad","ComponentStore","init","disconnectedCallback","disconnect","undefined","mo","connectedCallback","getMyAccData","autocompleteList","content","scrollingUp","currentScopeHits","scopeChangeSuggestions","scopeSuggestReducer","total","currentSuggestReducer","reduce","scopeSuggestions","h","class","role","ref","a","tabindex","innerHTML","button","onClick","onMouseDown","hidden","onKeyDown","searchWidget","onSubmit","label","hideLabel","showInlineError","onNanoChange","mask","slot","placeholder","input","onNanoInput","onNanoFocus","render","isRtl","ownerDocument","dir","Host","join","resizing","div","activeMyAccountSections","includes","msgUrl","msgCount","cartUrl","cartCount","urls","ssoRedirect","onSlotchange","link","address","small_avatar_url","forgot_password","logout","quietMode","w","btn","showLogo","logoUrl","src","getAssetPath","alt","showSearch","_b","show","onTouchEnd","domainFor","origin","dm","multiResults","singleResult","match","indeces","api_key","app_id","cart","count","notifications","messages","area"],"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 height: 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, { SearchClient as AlgoliaClient } from 'algoliasearch';\nimport { clientFetch } from '../../utils/fetch';\nimport { ComponentStore } from '../../utils/store/component-store';\nimport { debounce } from '../../utils/throttle';\nimport { displayTransition } from '../../utils/transitions';\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';\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};\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@Component({\n tag: 'nano-global-nav',\n styleUrl: 'style/global-nav.scss',\n shadow: true,\n})\nexport class GlobalNav implements ComponentInterface {\n // position and dimension state\n private io: IntersectionObserver;\n private debounceResize: () => {};\n private debounceSetResizingState: () => {};\n private currSize: number = 0;\n private thresholdsGoingUp: boolean = false;\n private THRESHOLDLIMIT = Object.keys(THRESHOLDBREAKS).length;\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 barsDiv: HTMLDivElement;\n // private siteContent: HTMLDivElement;\n private userLinkPanel: HTMLDivElement;\n private isLoggedIn: boolean = false;\n\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 }\n\n // user profile link\n @State() userProfileUrl: string = '';\n\n // has slot tests\n private mo?: MutationObserver;\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 @State() internalSearchIndeces: Array<SearchIndex> = [];\n @State() thresholdReady: boolean = false;\n @State() remoteDataReady: boolean = false;\n @State() ready: boolean = false;\n @State() isResizing: boolean = false;\n @State() intersectRatio: number;\n @State() threshold: number = this.THRESHOLDLIMIT;\n @State() modalOpen: boolean = false;\n @State() modalIsOpen: boolean = false;\n @State() searchBarShown: boolean = false;\n @State() scrollingUp: boolean = true;\n @State() searchLoading: boolean = false;\n @State() showAutocomplete: boolean = false;\n @State() secondaryMenuOpen: HTMLNanoNavItemElement = null;\n @State() userMenuOpen: boolean = false;\n @State() menuFullScreen: boolean = false;\n @State() searchValInternal: string = '';\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_prod_en';\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 @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://community.nanoporetech.com/profile/me';\n case 'local':\n case 'dev':\n case 'test':\n default:\n this.userProfileUrl =\n 'https://community-test.nanoporetech.com/profile/me';\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 `./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.index === 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\n @Watch('searchIndeces')\n addIndeces() {\n this.internalSearchIndeces = [\n ...this.internalSearchIndeces,\n ...this.searchIndeces,\n ];\n }\n\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].index;\n }\n\n @Watch('threshold')\n thresholdChange(newThreshold, oldThreshold) {\n if (newThreshold > oldThreshold) {\n // we've resized to larger screen.\n this.thresholdsGoingUp = true;\n this.setResizingState(true);\n }\n }\n\n /**\n * Primary logic for resizing changes.\n * When content doesn't fit - we loop down through break points until it does\n */\n @Watch('intersectRatio')\n ratioChange() {\n if (this.intersectRatio < 1 && this.threshold > 0) {\n // content doesn't fit\n if (this.thresholdsGoingUp) this.setResizingState(true);\n this.threshold--;\n setTimeout(() => this.ratioChange(), 500);\n } else {\n this.thresholdReady = true;\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 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 < this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"icon\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"icon\"]')\n )\n );\n\n if (this.threshold < this.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 < this.THRESHOLDLIMIT - THRESHOLDBREAKS.main)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"main\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"main\"]')\n )\n );\n\n if (this.threshold < this.THRESHOLDLIMIT - THRESHOLDBREAKS.about)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"about\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"about\"]')\n )\n );\n });\n\n writeTask(() => {\n menuItems.forEach((item) => {\n item.classList.add('nano-global-nav-menu');\n item.classList.remove('nano-global-nav-bar');\n });\n barItems.forEach((item) => {\n item.classList.remove('nano-global-nav-menu');\n item.classList.add('nano-global-nav-bar');\n });\n });\n }\n }\n\n @Watch('thresholdReady')\n @Watch('remoteDataReady')\n assessReady() {\n if (this.thresholdReady && this.remoteDataReady) {\n this.ready = true;\n }\n }\n\n @Watch('remoteDataReady')\n remoteReady() {\n this.attachIO();\n }\n\n @Watch('ready')\n isReady() {\n this.nanoIsReady.emit();\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 /**\n * As relevant slotted items change, reset resizing breakpoints\n */\n @Watch('aboutSlotLen')\n @Watch('iconSlotLen')\n @Watch('mainSlotLen')\n @Watch('overflowSlotLen')\n @Watch('searchSlotLen')\n slotChange() {\n this.threshold = this.THRESHOLDLIMIT;\n if (this.ready) this.ratioChange();\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 this.thresholdsGoingUp = false;\n }\n };\n\n // Global DOM Events\n\n private onWindowResize() {\n if (\n this.threshold < this.THRESHOLDLIMIT &&\n window.innerWidth > this.currSize\n ) {\n this.threshold = this.THRESHOLDLIMIT;\n this.ratioChange();\n }\n this.currSize = window.innerWidth;\n this.searchBarShown = false;\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 }, 200);\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, 'show', this.userMenuOpen);\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 (smaller screens / mobile)\n\n private onSearchBtnClick = (ev: MouseEvent) => {\n ev.preventDefault();\n if (!this.searchBarShown) this.searchbarShow();\n else this.searchbarHide();\n };\n\n private onSearchBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.searchBarShown ? this.searchbarHide() : this.searchbarShow();\n break;\n }\n };\n\n private searchbarShow() {\n this.searchBarShown = true;\n this.searchBarEl.addEventListener('transitionend', this.onSearchBarShown);\n this.searchBarEl.style.display = 'block';\n\n setTimeout(() => {\n const widgetHeight =\n Math.floor(\n this.searchBarEl.querySelector('.search-widget').scrollHeight\n ) - 1;\n this.searchBarEl.style.height = widgetHeight.toString() + 'px';\n }, 50);\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 = false;\n if (this.searchValInternal.length && ev) return;\n\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.removeEventListener(\n 'transitionend',\n this.onSearchBarHidden\n );\n this.searchBarEl.style.display = 'none';\n this.searchBarShown = false;\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 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 try {\n this.autocompleteResults = this.processSearchResults(\n (await this.currentIndex.alogliaIndex.search(this.searchValInternal, {\n attributesToSnippet: ['body:5', 'title:8'],\n hitsPerPage: 5,\n filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years\n })) as any\n ) as AlgoliaResults;\n } catch (e) {\n console.error(e);\n }\n\n this.scopeSearch = null;\n this.scopeSearch = await this.onSearchSubmit(null, false);\n\n this.searchLoading = false;\n this.showAutocompleteResults();\n };\n\n private onSearchSubmit = async (ev?, emit: boolean = true) => {\n if (ev) ev.preventDefault();\n if (!this.isSearchValSet()) return;\n this.searchLoading = true;\n this.algoliaSearchResults = null;\n\n if (!this.currentIndex) this.currentSelectedIndex();\n\n const queries = this.internalSearchIndeces.map((index) => {\n return {\n indexName: index.index,\n query: this.searchValInternal,\n facets: index.filters,\n hitsPerPage: 10,\n filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years\n };\n });\n\n try {\n this.algoliaSearchResults = this.processSearchResults(\n (await this.algoliaClient.multipleQueries(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 });\n\n if (emit) {\n this.nanoSearchResult.emit({\n results: this.algoliaSearchResults.results,\n client: { apiKey: this.searchApiKey, appId: this.searchAppId },\n });\n this.showAutocomplete = false;\n }\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.index;\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 /**\n * Attach the IntersectionObserver - from which all threshold / breakpoint logic hinges\n */\n private attachIO() {\n if (this.io) return;\n const root = this.el.shadowRoot.querySelector('.global-nav .main-bar');\n if (\n Build.isBrowser &&\n typeof window !== 'undefined' &&\n (window as any).IntersectionObserver &&\n !!root\n ) {\n const io = (this.io = new (window as any).IntersectionObserver(\n (data: IntersectionObserverEntry[]) => {\n this.intersectRatio = data.slice(-1)[0].intersectionRatio;\n },\n { root, threshold: 1 }\n ));\n io.observe(root.querySelector('.measure-ele'));\n }\n }\n\n // Stencil Lifecycle / Rendering\n\n componentDidLoad() {\n if (Build.isBrowser) {\n this.debounceResize = debounce(this.onWindowResize.bind(this), 300);\n\n window.addEventListener('resize', this.debounceResize);\n this.currSize = window.innerWidth;\n }\n\n this.initAlgoliaClient();\n this.addAlgoliaIndeces();\n if (this.remoteDataReady) this.attachIO();\n }\n\n componentWillLoad() {\n ComponentStore.init(\n this,\n ['searchIndex', 'searchValue'],\n 'url-hash',\n 'gns'\n );\n\n this.assessSlottedContent();\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n if (this.mo) {\n this.mo.disconnect();\n this.mo = undefined;\n }\n if (Build.isBrowser)\n window.removeEventListener('resize', this.debounceResize);\n }\n\n connectedCallback() {\n this.handleMyAccountData();\n this.getMyAccData();\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 ></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.searchIndex}\n onNanoChange={this.onSearchIndexChange}\n mask={true}\n >\n {this.internalSearchIndeces.map((index) => {\n return (\n <nano-option\n selected={index.index === 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 onMouseDown={(e) => {\n this.searchValInternal = this.searchInput.value;\n this.onSearchSubmit(e, true);\n }}\n >\n <nano-icon name=\"light/search\"></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 role=\"navigation\"\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 >\n <div\n class=\"gn-menu_wrap\"\n ref={(div) => (this.menuWrapDiv = div)}\n tabindex=\"-1\"\n >\n <div class=\"gn-menu_actions\">\n <button\n class=\"menu-btn icon-btn icon-btn\"\n onMouseDown={this.onMenuBtnClick}\n onKeyDown={this.onMenuBtnKeyDown}\n >\n {this.threshold < this.THRESHOLDLIMIT - 3 && (\n <nano-icon\n name=\"light/times\"\n aria-label=\"close menu\"\n ></nano-icon>\n )}\n {this.threshold >= this.THRESHOLDLIMIT - 3 && (\n <nano-icon\n name=\"light/bars\"\n aria-label=\"close menu\"\n ></nano-icon>\n )}\n </button>\n\n {this.threshold <\n this.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 name=\"light/bell\"></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 name=\"light/shopping-cart\"></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\">\n <nav class=\"nav-links nav-links--main\" role=\"menu\">\n <slot\n name=\"overflow\"\n onSlotchange={this.assessSlottedContent}\n />\n {this.threshold <\n this.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 >= this.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 < this.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 class=\"nano-global-nav nano-global-nav-menu\">\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 ></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 {this.isLoggedIn &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.login &&\n (this.loggedInNavItms.length || this.hasLoggedinSlot) && (\n <nav class=\"nav-links\" aria-label=\"Your user account links\">\n <nano-nav-item class=\"nano-global-nav user-nav nano-global-nav-menu\">\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 ></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=\"sticker-trigger\" />\n <nano-sticker\n auto-resize=\"false\"\n break-point-max=\"800\"\n quietMode={{ h: 600, w: 800 }}\n >\n <div class=\"bars\">\n <nav\n class=\"main-bar\"\n aria-label=\"Main site navigation\"\n tabindex=\"-1\"\n ref={(div) => (this.mainBarDiv = div)}\n role={\n !!this.mainSlotLen &&\n this.threshold >= this.THRESHOLDLIMIT - THRESHOLDBREAKS.main\n ? 'menu'\n : undefined\n }\n >\n {(this.hasPromotionSlot ||\n !!this.overflowSlotLen ||\n ((this.myAccData || !!this.iconSlotLen) &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon) ||\n (this.isLoggedIn &&\n (!!this.loggedInNavItms.length || this.hasLoggedinSlot) &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.login) ||\n (!!this.mainSlotLen &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.main) ||\n ((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold <\n this.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\">\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\n name=\"logo\"\n onSlotchange={this.assessSlottedContent}\n />\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 >=\n this.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 <\n this.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 onMouseDown={this.onSearchBtnClick}\n onKeyDown={this.onSearchBtnKeyDown}\n >\n <nano-icon name=\"light/search\"></nano-icon>\n </button>\n )}\n\n {/* Bar cart and notifications */}\n {this.threshold >=\n this.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 name=\"light/bell\"></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 && !!this.cartCount && (\n <a href={this.cartUrl} class=\"icon-btn\">\n <nano-icon name=\"light/shopping-cart\"></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 >=\n this.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 >=\n this.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 name=\"solid/caret-down\"></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={\n this.myAccData.urls.logout + this.ssoRedirect\n }\n >\n Logout\n </a>\n </div>\n </div>\n </div>\n ),\n ]}\n <span class=\"measure-ele\"></span>\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 <\n this.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 >\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 </nano-sticker>\n {/* END MAIN NAV BAR */}\n\n {(this.threshold < this.THRESHOLDLIMIT - 3 ||\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 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 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 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 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"],"mappings":"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"}
|
package/docs-json.json
CHANGED
package/hydrate/index.js
CHANGED
@@ -17229,7 +17229,7 @@ async function clientFetch(url, _a = {}) {
|
|
17229
17229
|
}
|
17230
17230
|
}
|
17231
17231
|
|
17232
|
-
const globalNavCss = "/*!@:host*/.sc-nano-global-nav-h{box-sizing:border-box}/*!@*,\n*::before,\n*::after*/*.sc-nano-global-nav,*.sc-nano-global-nav::before,*.sc-nano-global-nav::after{box-sizing:border-box}/*!@[hidden]*/[hidden].sc-nano-global-nav{display:none !important}/*!@.global-nav*/.global-nav.sc-nano-global-nav{font-family:inherit;font-size:inherit;font-stretch:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;z-index:var(--nano-layer-index-menubar, 10)}/*!@.global-nav button*/.global-nav.sc-nano-global-nav button.sc-nano-global-nav{background:none;color:inherit;border:none}/*!@.global-nav .icon-btn*/.global-nav.sc-nano-global-nav .icon-btn.sc-nano-global-nav{position:relative;background:none;color:inherit;border:none;align-self:normal;padding:9px 7px;cursor:pointer;display:flex;align-items:center}/*!@.global-nav .icon-btn nano-icon*/.global-nav.sc-nano-global-nav .icon-btn.sc-nano-global-nav nano-icon.sc-nano-global-nav{width:18px;height:18px}/*!@.global-nav ::slotted(nano-nav-item[slot=icon])*/.global-nav .sc-nano-global-nav-s>nano-nav-item[slot=icon]{--padding-top:9px;--padding-bottom:9px;--padding-start:7px;--padding-end:7px;--display:flex;font-size:18px}/*!@.global-nav a*/.global-nav.sc-nano-global-nav a.sc-nano-global-nav{color:inherit;text-decoration:none;white-space:nowrap}/*!@.global-nav .nav-links_title*/.global-nav.sc-nano-global-nav .nav-links_title.sc-nano-global-nav{margin:8px 0 3px}/*!@.global-nav .nav-links ul*/.global-nav.sc-nano-global-nav .nav-links.sc-nano-global-nav ul.sc-nano-global-nav{margin:0;padding:0}/*!@.global-nav .nav-links li*/.global-nav.sc-nano-global-nav .nav-links.sc-nano-global-nav li.sc-nano-global-nav{list-style:none}/*!@.global-nav .login-btn*/.global-nav.sc-nano-global-nav .login-btn.sc-nano-global-nav{display:flex;align-items:center}/*!@.global-nav .menu-btn*/.global-nav.sc-nano-global-nav .menu-btn.sc-nano-global-nav{padding:9px var(--bar-item-spacing) 9px var(--bar-item-spacing)}/*!@.site-content*/.site-content.sc-nano-global-nav{display:flex;transition:min-height 0.2s ease;position:relative;z-index:auto;align-items:stretch;flex:1}/*!@.mask*/.mask.sc-nano-global-nav{opacity:0;background:rgba(0, 0, 0, 0.3);position:fixed;inset-inline:0;inset-block-start:0;height:100vh;z-index:-1;transition:transform 0.2s ease, opacity 0.2s ease, visibility 0.01s ease 0.2s, z-index 0.01s ease 0.2s;visibility:hidden}/*!@.mask.open*/.mask.open.sc-nano-global-nav{opacity:1;transition:z-index 0.01s ease, visibility 0.01s ease, transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s;z-index:3;visibility:visible}/*!@.bars*/.bars.sc-nano-global-nav{color:var(--bar-text-color);z-index:var(--nano-layer-index-menubar, 10);position:relative;max-width:100%;min-width:100%;box-shadow:none;transition:0.2s ease box-shadow}/*!@[stuck] .bars*/[stuck].sc-nano-global-nav .bars.sc-nano-global-nav{box-shadow:0 1px 25px 0 rgba(0, 0, 0, 0.15)}/*!@.bars::before*/.bars.sc-nano-global-nav::before{content:\"\";width:100%;height:100%;z-index:-1;background:var(--bar-background);position:absolute}/*!@.main-bar*/.main-bar.sc-nano-global-nav{width:100%;padding-inline:0 var(--bar-item-spacing);padding-block:var(--bar-vertical-padding);display:flex;align-items:center;justify-content:space-between;overflow-x:hidden}/*!@.main-bar:focus*/.main-bar.sc-nano-global-nav:focus{outline:none}/*!@:host(.ready) .main-bar*/.ready.sc-nano-global-nav-h .main-bar.sc-nano-global-nav{overflow-x:visible}/*!@.main-bar > *,\n.main-bar ::slotted(*)*/.main-bar.sc-nano-global-nav>*.sc-nano-global-nav,.main-bar .sc-nano-global-nav-s>*{transition:opacity 0.2s ease}/*!@:host(:not(.ready)) .main-bar > *,\n:host(:not(.ready)) .main-bar ::slotted(*)*/.sc-nano-global-nav-h:not(.ready) .main-bar.sc-nano-global-nav>*.sc-nano-global-nav,.sc-nano-global-nav-h:not(.ready) .main-bar .sc-nano-global-nav-s>*{opacity:0 !important}/*!@:host(.ready) .main-bar > *,\n:host(.ready) .main-bar ::slotted(*)*/.ready.sc-nano-global-nav-h .main-bar.sc-nano-global-nav>*.sc-nano-global-nav,.sc-nano-global-nav-h.ready .main-bar .sc-nano-global-nav-s>*{opacity:1}/*!@:host(.resizing) .main-bar > *,\n:host(.resizing) .main-bar ::slotted(*)*/.resizing.sc-nano-global-nav-h .main-bar.sc-nano-global-nav>*.sc-nano-global-nav,.sc-nano-global-nav-h.resizing .main-bar .sc-nano-global-nav-s>*{opacity:0 !important}/*!@.main-bar > **/.main-bar.sc-nano-global-nav>*.sc-nano-global-nav{flex:0 0 auto}/*!@.main-bar > * ::slotted(nano-nav-item[slot=icon])*/.main-bar .sc-nano-global-nav-s>nano-nav-item[slot=icon]{-webkit-margin-start:11px;margin-inline-start:11px}/*!@.main-bar > * ::slotted(nano-nav-item),\n.main-bar > * nano-nav-item*/.main-bar .sc-nano-global-nav-s>nano-nav-item,.main-bar.sc-nano-global-nav>*.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{--color-hover:var(--bar-color-focus);--secondary-bg-color:var(--bar-dropdown-bg);--secondary-color:var(--bar-dropdown-text);--bg-color-open:var(--bar-background);--padding-top:7px;--padding-bottom:7px;--padding-end:2px;--padding-start:2px;text-decoration:none !important}/*!@.main-bar .icon-btn*/.main-bar.sc-nano-global-nav .icon-btn.sc-nano-global-nav{-webkit-margin-before:0;margin-block-start:0;-webkit-margin-after:0;margin-block-end:0;-webkit-margin-start:6px;margin-inline-start:6px}/*!@:host(.threshold-2) .main-bar .icon-btn*/.threshold-2.sc-nano-global-nav-h .main-bar.sc-nano-global-nav .icon-btn.sc-nano-global-nav{-webkit-margin-before:0;margin-block-start:0;-webkit-margin-after:0;margin-block-end:0;-webkit-margin-start:11px;margin-inline-start:11px}/*!@.main-bar .menu-btn.icon-btn*/.main-bar.sc-nano-global-nav .menu-btn.icon-btn.sc-nano-global-nav{margin:0 !important;-webkit-border-end:1.5px solid var(--bar-color-shade);border-inline-end:1.5px solid var(--bar-color-shade)}/*!@.main-bar .logo*/.main-bar.sc-nano-global-nav .logo.sc-nano-global-nav{height:36px;width:200px;min-width:200px}/*!@:host(:not(.threshold-1)) .main-bar .logo*/.sc-nano-global-nav-h:not(.threshold-1) .main-bar.sc-nano-global-nav .logo.sc-nano-global-nav{height:30px}/*!@.main-bar .logo-link*/.main-bar.sc-nano-global-nav .logo-link.sc-nano-global-nav{-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;padding-inline:var(--bar-item-spacing);display:flex;align-items:center;border:none}/*!@.main-bar .nav-links*/.main-bar.sc-nano-global-nav .nav-links.sc-nano-global-nav{flex:0 0 auto;display:flex;justify-content:space-around}/*!@.main-bar .nav-links ul*/.main-bar.sc-nano-global-nav .nav-links.sc-nano-global-nav ul.sc-nano-global-nav{display:flex;justify-content:space-around}/*!@.main-bar .nav-links ::slotted(nano-nav-item),\n.main-bar .nav-links nano-nav-item*/.main-bar .nav-links .sc-nano-global-nav-s>nano-nav-item,.main-bar.sc-nano-global-nav .nav-links.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{--padding-top:7px;--padding-bottom:7px;--padding-end:2px;--padding-start:2px;--margin:0 var(--bar-item-spacing)}/*!@.main-bar .nav-links--main*/.main-bar.sc-nano-global-nav .nav-links--main.sc-nano-global-nav{justify-content:flex-start;letter-spacing:0.5px;font-weight:500;font-stretch:expanded;text-transform:uppercase;font-size:1.065em;-webkit-margin-end:auto;margin-inline-end:auto}/*!@.main-bar .nav-links--main ::slotted(nano-nav-item)*/.main-bar .nav-links--main .sc-nano-global-nav-s>nano-nav-item{--color:var(--bar-text-color);--padding-end:3px;--padding-start:0}/*!@.main-bar .nav-links--sub*/.main-bar.sc-nano-global-nav .nav-links--sub.sc-nano-global-nav{--color:var(--color, #e2e2e2);-webkit-margin-start:6px;margin-inline-start:6px;justify-content:flex-end}/*!@.main-bar .login-btn*/.main-bar.sc-nano-global-nav .login-btn.sc-nano-global-nav{display:inline-block;border-radius:4px;background-color:var(--login-button-bg);color:var(--login-button-text);padding:3px 10px;position:relative;inset-inline-start:auto;inset-block-end:auto;margin-inline:11px 0}/*!@.main-bar .measure-ele*/.main-bar.sc-nano-global-nav .measure-ele.sc-nano-global-nav{min-width:1px;display:block;margin:0;padding:0}/*!@.sticker-trigger*/.sticker-trigger.sc-nano-global-nav{background:var(--bar-background);width:100%;height:1px;z-index:20;position:relative}/*!@.sticker-trigger + .sticker-trigger*/.sticker-trigger.sc-nano-global-nav+.sticker-trigger.sc-nano-global-nav{display:none}/*!@.gn-menu*/.gn-menu.sc-nano-global-nav{position:fixed;inset-block-start:0;inset-inline-start:0;z-index:-1;display:none;transition:z-index 0.01s ease 0.2s;height:100vh;width:100vw;overflow-y:auto}/*!@:host(.threshold-4) .gn-menu*/.threshold-4.sc-nano-global-nav-h .gn-menu.sc-nano-global-nav{position:absolute;width:calc(100vw - 20px)}/*!@.gn-menu.menu-full-screen*/.gn-menu.menu-full-screen.sc-nano-global-nav{width:100vw !important}/*!@.gn-menu_wrap*/.gn-menu_wrap.sc-nano-global-nav{max-width:92vw;width:335px;background:var(--menu-background);color:var(--menu-text-color);padding:calc(var(--bar-vertical-padding) + 1px) 0 0;box-shadow:0 0 36px 0 rgba(0, 0, 0, 0.8);position:relative;pointer-events:all;-webkit-margin-after:36px;margin-block-end:36px;opacity:0;outline:none;transition:transform 0.2s ease, opacity 0.2s ease}/*!@.gn-menu_wrap.has-promotion*/.gn-menu_wrap.has-promotion.sc-nano-global-nav{padding:var(--menu-padding) 0 0}/*!@.gn-menu.open*/.gn-menu.open.sc-nano-global-nav{z-index:var(--nano-layer-index-dropdown, 300);transition:z-index 0.01s ease}/*!@.gn-menu.open .gn-menu_wrap*/.gn-menu.open.sc-nano-global-nav .gn-menu_wrap.sc-nano-global-nav{opacity:1;transform:translate3d(0, 0, 0) !important;transition:transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s}/*!@.gn-menu_actions*/.gn-menu_actions.sc-nano-global-nav{-webkit-padding-end:calc(var(--menu-padding) / 2);padding-inline-end:calc(var(--menu-padding) / 2);display:flex;justify-content:space-between}/*!@.gn-menu_actions-counter*/.gn-menu_actions-counter.sc-nano-global-nav{background:#d0021b;color:var(--menu-text-color);position:absolute;inset-block-end:4px;inset-inline:auto 0;font-size:9px;height:14px;line-height:14px;width:auto;min-width:14px;border-radius:50%;box-sizing:border-box;text-align:center;text-indent:0}/*!@.gn-menu .content-wrap*/.gn-menu.sc-nano-global-nav .content-wrap.sc-nano-global-nav{position:relative;overflow:hidden;transition:0.2s ease min-height;min-height:190px}/*!@.gn-menu .content--sub*/.gn-menu.sc-nano-global-nav .content--sub.sc-nano-global-nav{padding:var(--menu-padding) 0 var(--menu-padding) 7px}/*!@.gn-menu .menu-btn*/.gn-menu.sc-nano-global-nav .menu-btn.sc-nano-global-nav{-webkit-margin-end:auto;margin-inline-end:auto}/*!@.gn-menu .nav-links*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav{display:flex;flex-wrap:wrap}/*!@.gn-menu .nav-links ::slotted(nano-nav-item),\n.gn-menu .nav-links nano-nav-item*/.gn-menu .nav-links .sc-nano-global-nav-s>nano-nav-item,.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{--icon-size:14px;--display:inline-block;--secondary-bg-color:#001a21;--padding-top:10px;--padding-bottom:10px;--padding-end:calc(var(--menu-padding) * 2);--padding-start:calc(var(--menu-padding) + 3px);--color:var(--menu-text-color);--color-hover:var(--menu-title-text);--bg-color-hover:transparent;--bg-color-focus:#002530;--focus-outline:none;width:100%}/*!@.gn-menu .nav-links .user-nav*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .user-nav.sc-nano-global-nav{--bg-color:var(--menu-user-panel-bg);--padding-top:9px;--padding-bottom:9px;font-weight:bold;margin:5px 0 0}/*!@.gn-menu .nav-links .user-nav ::slotted(nano-nav-item),\n.gn-menu .nav-links .user-nav nano-nav-item*/.gn-menu .nav-links .user-nav .sc-nano-global-nav-s>nano-nav-item,.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .user-nav.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{font-weight:500;--bg-color:transparent}/*!@.gn-menu .nav-links .user-nav .content*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .user-nav.sc-nano-global-nav .content.sc-nano-global-nav{padding:0;background-color:var(--menu-user-panel-bg)}/*!@.gn-menu .nav-links .user-nav .content--sub*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .user-nav.sc-nano-global-nav .content--sub.sc-nano-global-nav{padding-inline:var(--menu-padding)}/*!@.gn-menu .nav-links .user-nav .back-btn*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .user-nav.sc-nano-global-nav .back-btn.sc-nano-global-nav{-webkit-padding-start:var(--menu-padding);padding-inline-start:var(--menu-padding)}/*!@.gn-menu .nav-links_title*/.gn-menu.sc-nano-global-nav .nav-links_title.sc-nano-global-nav{margin:0 var(--menu-padding) 4px;-webkit-border-after:1px solid var(--menu-hint-color);border-block-end:1px solid var(--menu-hint-color);-webkit-padding-after:8px;padding-block-end:8px;text-transform:uppercase;color:var(--menu-title-text);letter-spacing:1px;font-weight:700}/*!@.gn-menu .nav-links_title--sites*/.gn-menu.sc-nano-global-nav .nav-links_title--sites.sc-nano-global-nav{-webkit-border-after:none;border-block-end:none}/*!@.gn-menu .nav-links-wrap*/.gn-menu.sc-nano-global-nav .nav-links-wrap.sc-nano-global-nav{margin:18px 0}/*!@.gn-menu .nav-links-wrap:last-child*/.gn-menu.sc-nano-global-nav .nav-links-wrap.sc-nano-global-nav:last-child{-webkit-margin-after:0;margin-block-end:0}/*!@.gn-menu .nav-links .back-btn*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .back-btn.sc-nano-global-nav{-webkit-border-before:1px solid var(--menu-hint-color);border-block-start:1px solid var(--menu-hint-color);-webkit-border-after:1px solid var(--menu-hint-color);border-block-end:1px solid var(--menu-hint-color);display:flex;align-items:center;padding:10px 11px 10px 0;width:100%;font-size:12px;text-transform:uppercase;color:var(--menu-title-text);letter-spacing:1px;font-weight:700;cursor:pointer;font-stretch:expanded}/*!@.gn-menu .nav-links .back-btn:hover*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .back-btn.sc-nano-global-nav:hover{color:var(--menu-text-color)}/*!@.gn-menu .nav-links .back-btn nano-icon*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .back-btn.sc-nano-global-nav nano-icon.sc-nano-global-nav{-webkit-margin-end:10px;margin-inline-end:10px;font-size:12px;color:var(--menu-icon-color)}/*!@.gn-menu .nav-links--sub*/.gn-menu.sc-nano-global-nav .nav-links--sub.sc-nano-global-nav{display:flex;flex-wrap:wrap}/*!@.gn-menu .nav-links--sub ::slotted(nano-nav-item),\n.gn-menu .nav-links--sub nano-nav-item*/.gn-menu .nav-links--sub .sc-nano-global-nav-s>nano-nav-item,.gn-menu.sc-nano-global-nav .nav-links--sub.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{--border-bottom:none;--padding-end:var(--menu-padding);--padding-start:var(--menu-padding);--padding-top:8px;--padding-bottom:8px;margin:0;width:50%;line-height:1.8}/*!@.gn-menu .nav-links--sites ::slotted(nano-nav-item),\n.gn-menu .nav-links--sites nano-nav-item*/.gn-menu .nav-links--sites .sc-nano-global-nav-s>nano-nav-item,.gn-menu.sc-nano-global-nav .nav-links--sites.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{width:100%}/*!@.gn-menu .nav-links .content*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .content.sc-nano-global-nav{padding:8px var(--menu-padding)}/*!@.gn-menu .login-btn*/.gn-menu.sc-nano-global-nav .login-btn.sc-nano-global-nav{padding-inline:7px var(--menu-padding);padding-block:var(--menu-padding)}/*!@.gn-menu .login-btn nano-icon*/.gn-menu.sc-nano-global-nav .login-btn.sc-nano-global-nav nano-icon.sc-nano-global-nav{-webkit-margin-start:10px;margin-inline-start:10px}/*!@.gn-menu .logout-btn*/.gn-menu.sc-nano-global-nav .logout-btn.sc-nano-global-nav{justify-content:flex-end}/*!@.gn-menu .logout-btn a*/.gn-menu.sc-nano-global-nav .logout-btn.sc-nano-global-nav a.sc-nano-global-nav{padding:0 5px}/*!@.search-btn::before*/.search-btn.sc-nano-global-nav::before{content:\"\";background-color:#0c5a71;height:9px;inset-inline:0 5px;inset-block-end:-20px;position:absolute;transform:translateZ(0) scaleX(0);transform-origin:0;transition:0.2s ease transform}/*!@.search-btn--open::before*/.search-btn--open.sc-nano-global-nav::before{transform:translateZ(0) scaleX(1);opacity:0.7}/*!@.search-bar*/.search-bar.sc-nano-global-nav{height:0;overflow:hidden;transition:0.2s ease height;padding:0 var(--bar-item-spacing);outline:none;max-width:45em;-webkit-margin-start:auto;margin-inline-start:auto}/*!@.search-bar .search-widget*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav{margin:0;overflow:inherit;max-width:none;max-height:none;min-width:auto;-webkit-padding-end:0;padding-inline-end:0}/*!@.search-bar .search-widget .search-icon--search*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav .search-icon--search.sc-nano-global-nav{display:none}/*!@.search-bar .search-widget .search-input*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav .search-input.sc-nano-global-nav{--input-border-width:2px 0 0 0;--input-bg-color:#f3f3f3;--nano-input-border-color:transparent;--nano-input-border-color--focus:var(--bar-color-shade);font-size:1.1875em}/*!@.search-bar .search-widget nano-select.search-input*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav nano-select.search-input.sc-nano-global-nav{--input-border-width:2px 3px 0 0;--input-bg-color:var(--bar-color-shade);--input-bg-color--focus:#f3f3f3;color:#f3f3f3}/*!@.search-bar .search-widget nano-select.search-input.has-focus*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav nano-select.search-input.has-focus.sc-nano-global-nav{color:var(--bar-color-shade)}/*!@.search-bar .search-widget .select-input__arrow*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav .select-input__arrow.sc-nano-global-nav{font-size:0.75em}/*!@.search-bar .search-widget .select__mask.sc-nano-select*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav .select__mask.sc-nano-select.sc-nano-global-nav{line-height:2.35em;min-height:2.35em;-webkit-padding-before:2px;padding-block-start:2px}/*!@.search-bar .search-inputs*/.search-bar.sc-nano-global-nav .search-inputs.sc-nano-global-nav{padding:0;margin:0}/*!@.search-bar .search-autocomplete*/.search-bar.sc-nano-global-nav .search-autocomplete.sc-nano-global-nav{inset-block-start:100%;width:100%}/*!@.search-widget*/.search-widget.sc-nano-global-nav{-webkit-padding-end:var(--bar-item-spacing);padding-inline-end:var(--bar-item-spacing);-webkit-margin-start:var(--bar-item-spacing);margin-inline-start:var(--bar-item-spacing);-webkit-margin-end:auto;margin-inline-end:auto;position:relative;flex:1 1 auto;max-width:500px;min-width:350px;max-height:36px;inset-block-start:-1px}/*!@.search-inputs*/.search-inputs.sc-nano-global-nav{display:flex;margin:0}/*!@.search-inputs input[type=submit]*/.search-inputs.sc-nano-global-nav input[type=submit].sc-nano-global-nav{display:none}/*!@.search-autocomplete*/.search-autocomplete.sc-nano-global-nav{position:absolute;inset-block-start:calc(100% + 15px);width:calc(100% - var(--bar-item-spacing));inset-inline-start:0;background:white;border:2px solid var(--bar-color-tint);border-radius:0 0 5px 5px;color:#4a4a4a;-webkit-padding-before:calc(var(--bar-vertical-padding) / 2);padding-block-start:calc(var(--bar-vertical-padding) / 2);-webkit-padding-end:0;padding-inline-end:0;-webkit-padding-after:1px;padding-block-end:1px;-webkit-padding-start:0;padding-inline-start:0;z-index:1}/*!@.search-autocomplete-hit*/.search-autocomplete-hit.sc-nano-global-nav{padding-block:calc(var(--bar-vertical-padding) / 4);padding-inline:var(--bar-item-spacing);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;text-align:start;line-height:1.5;cursor:pointer}/*!@.search-autocomplete-hit-scope*/.search-autocomplete-hit-scope.sc-nano-global-nav{color:#a7b0b3;font-weight:600}/*!@.search-autocomplete-hit:hover, .search-autocomplete-hit:focus-visible*/.search-autocomplete-hit.sc-nano-global-nav:hover,.search-autocomplete-hit.sc-nano-global-nav:focus-visible{background-color:#e4e6e8}/*!@.search-autocomplete-hit:focus-visible*/.search-autocomplete-hit.sc-nano-global-nav:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}/*!@.search-autocomplete-hit:focus*/.search-autocomplete-hit.sc-nano-global-nav:focus{outline:none}/*!@.search-autocomplete-hit .search__highlight,\n.search-autocomplete-hit em*/.search-autocomplete-hit.sc-nano-global-nav .search__highlight.sc-nano-global-nav,.search-autocomplete-hit.sc-nano-global-nav em.sc-nano-global-nav{font-weight:bold;font-style:normal}/*!@.search-autocomplete-hit--no-result:hover, .search-autocomplete-hit--no-result:focus*/.search-autocomplete-hit--no-result.sc-nano-global-nav:hover,.search-autocomplete-hit--no-result.sc-nano-global-nav:focus{background:none !important}/*!@.search-autocomplete-foot*/.search-autocomplete-foot.sc-nano-global-nav{margin:7px 0 0}/*!@.search-autocomplete-submit*/.search-autocomplete-submit.sc-nano-global-nav{background:none;border:none;align-self:normal;padding:9px var(--bar-item-spacing) !important;cursor:pointer;display:flex;align-items:center;color:#007495;justify-content:flex-end;width:100%;text-decoration:underline;-webkit-border-before:1px solid #e8eaea;border-block-start:1px solid #e8eaea}/*!@.search-autocomplete-submit:hover, .search-autocomplete-submit:focus*/.search-autocomplete-submit.sc-nano-global-nav:hover,.search-autocomplete-submit.sc-nano-global-nav:focus{background-color:#e4e6e8}/*!@nano-select.search-input*/nano-select.search-input.sc-nano-global-nav{--input-border-width:0 0 2px 0;--input-text-color:var(--bar-text-color);--nano-input-border-color:rgb(103 138 154);--padding-end:var(--bar-item-spacing);--nano-input-border-color--focus:black;font-stretch:expanded;font-size:1.2em;flex:0 1 auto;width:auto;display:flex;align-items:center;flex-direction:column;position:relative;inset-inline-start:1px;text-transform:uppercase}/*!@:host(:not(.ready)) nano-select.search-input*/.sc-nano-global-nav-h:not(.ready) nano-select.search-input.sc-nano-global-nav{overflow:hidden;max-height:1em}/*!@nano-select.search-input .down-arrow*/nano-select.search-input.sc-nano-global-nav .down-arrow.sc-nano-global-nav{font-size:0.65em}/*!@nano-input.search-input*/nano-input.search-input.sc-nano-global-nav{--clear-btn-color:var(--bar-text-color);--nano-input-border-color:rgb(103 138 154);--input-border-width:0 0 2px 0;--placeholder-color:var(--bar-text-color);--input-text-color:var(--bar-text-color);--padding-start:21px;--nano-input-border-color--focus:black;font-size:1.2em;width:206px;display:flex;align-items:center;flex-direction:column;flex:1}/*!@:host([dir=rtl]) nano-input.search-input*/[dir=rtl].sc-nano-global-nav-h nano-input.search-input.sc-nano-global-nav{--input-border-radius:5px 0 0 5px}/*!@:host(:not(.ready)) nano-input.search-input*/.sc-nano-global-nav-h:not(.ready) nano-input.search-input.sc-nano-global-nav{overflow:hidden;max-height:1em}/*!@nano-input.search-input .search-icon*/nano-input.search-input.sc-nano-global-nav .search-icon.sc-nano-global-nav{background:none;padding:0 8px;display:none;font-size:0.9em}/*!@nano-input.search-input .search-icon--show*/nano-input.search-input.sc-nano-global-nav .search-icon--show.sc-nano-global-nav{display:flex !important}/*!@nano-input.search-input .search-icon--loader*/nano-input.search-input.sc-nano-global-nav .search-icon--loader.sc-nano-global-nav{animation:spin 1s linear infinite}@keyframes spin{100%{transform:rotate(360deg)}}/*!@nano-input.search-input .search-icon nano-icon*/nano-input.search-input.sc-nano-global-nav .search-icon.sc-nano-global-nav nano-icon.sc-nano-global-nav{height:1.4em}/*!@.user-profile*/.user-profile.sc-nano-global-nav{display:flex;justify-content:space-between;align-items:center;padding:2em;background-color:var(--menu-user-profile-bg)}/*!@.user-profile .left*/.user-profile.sc-nano-global-nav .left.sc-nano-global-nav{display:flex;align-items:center}/*!@.user-profile .avatar-container*/.user-profile.sc-nano-global-nav .avatar-container.sc-nano-global-nav{position:relative}/*!@.user-profile .avatar-container img.avatar*/.user-profile.sc-nano-global-nav .avatar-container.sc-nano-global-nav img.avatar.sc-nano-global-nav{border-radius:50px}/*!@.user-profile .avatar-container img.logo-small*/.user-profile.sc-nano-global-nav .avatar-container.sc-nano-global-nav img.logo-small.sc-nano-global-nav{position:absolute;height:30px;width:30px;inset-block-end:0;inset-inline-end:0;background-color:#27586e;border-radius:10px;padding:5px}/*!@.user-profile .user-details*/.user-profile.sc-nano-global-nav .user-details.sc-nano-global-nav{display:flex;flex-direction:column;margin:0 1.25em;color:white}/*!@.user-profile .user-details .name*/.user-profile.sc-nano-global-nav .user-details.sc-nano-global-nav .name.sc-nano-global-nav{font-size:1.25em}/*!@.user-profile .user-details .bio*/.user-profile.sc-nano-global-nav .user-details.sc-nano-global-nav .bio.sc-nano-global-nav{margin:0.5em 0}/*!@.user-profile .user-details .kudos span*/.user-profile.sc-nano-global-nav .user-details.sc-nano-global-nav .kudos.sc-nano-global-nav span.sc-nano-global-nav{background-color:#81c7eb;color:#415958;padding:0.25em;border-radius:0.5em;font-weight:bold}/*!@.user-profile .chevron-right*/.user-profile.sc-nano-global-nav .chevron-right.sc-nano-global-nav{font-size:1.5em;color:white}/*!@.user-links*/.user-links.sc-nano-global-nav{position:relative}/*!@.user-links .icon-btn*/.user-links.sc-nano-global-nav .icon-btn.sc-nano-global-nav{-webkit-padding-end:0;padding-inline-end:0;font-weight:500}/*!@.user-links .icon-btn nano-icon*/.user-links.sc-nano-global-nav .icon-btn.sc-nano-global-nav nano-icon.sc-nano-global-nav{-webkit-margin-start:5px;margin-inline-start:5px;width:16px;height:16px;transform-origin:center;transition:transform 0.2s ease, color 0.2s ease}/*!@.user-links .icon-btn.open nano-icon*/.user-links.sc-nano-global-nav .icon-btn.open.sc-nano-global-nav nano-icon.sc-nano-global-nav{transform:rotate(180deg);color:#007495}/*!@.user-links-panel*/.user-links-panel.sc-nano-global-nav{display:none;position:absolute;border-radius:4px 0 4px 4px;box-shadow:0 1px 5px 0 rgba(0, 0, 0, 0.4);background-color:#568c9d;opacity:0;transform:translate3d(0, 30px, 0);transition:transform 0.2s ease, opacity 0.2s ease;inset-inline-end:0;min-width:318px;z-index:2}/*!@.user-links-panel:focus*/.user-links-panel.sc-nano-global-nav:focus{outline:none}/*!@.user-links-panel.show*/.user-links-panel.show.sc-nano-global-nav{opacity:1;transform:translate3d(0, calc(var(--padding) + 1px), 0)}/*!@.user-links-panel-content*/.user-links-panel-content.sc-nano-global-nav{padding:0 18px;display:flex;flex-direction:column;color:white}/*!@.user-links-panel-content a*/.user-links-panel-content.sc-nano-global-nav a.sc-nano-global-nav{padding:11px 0;-webkit-border-after:#669dac 1px solid;border-block-end:#669dac 1px solid}/*!@.user-links-panel-content a:hover, .user-links-panel-content a:focus*/.user-links-panel-content.sc-nano-global-nav a.sc-nano-global-nav:hover,.user-links-panel-content.sc-nano-global-nav a.sc-nano-global-nav:focus{color:#455556}/*!@.user-links-panel-content a:last-child*/.user-links-panel-content.sc-nano-global-nav a.sc-nano-global-nav:last-child{-webkit-border-after:none;border-block-end:none}/*!@.user-links-panel-foot*/.user-links-panel-foot.sc-nano-global-nav{background-color:#aac5cd;border-radius:0 0 4px 4px;padding:var(--padding);color:#455556;display:flex;align-items:center;font-weight:500;justify-content:space-between}/*!@.user-links-panel-foot a:hover*/.user-links-panel-foot.sc-nano-global-nav a.sc-nano-global-nav:hover{text-decoration:underline}/*!@.user-links-panel .user-profile*/.user-links-panel.sc-nano-global-nav .user-profile.sc-nano-global-nav{background-color:var(--bar-user-panel-bg)}/*!@:host*/.sc-nano-global-nav-h{--bar-vertical-padding:21px;--bar-item-spacing:13px;--bar-background:white;--bar-text-color:#196c82;--bar-color-shade:rgb(12 90 113);--bar-color-tint:rgb(19 89 111);--bar-color-focus:#99a3a6;--bar-user-panel-bg:#016d86;--bar-dropdown-bg:#196c82;--bar-dropdown-text:white;--menu-background:#001a21;--menu-text-color:white;--menu-user-profile-bg:#001a21;--menu-user-panel-bg:#193037;--menu-padding:12px;--menu-hint-color:#33484d;--menu-title-text:#90c6e7;--menu-icon-color:white;--login-button-bg:#17bb75;--login-button-text:white;--padding:12px;--padding-top:var(--padding);--padding-end:var(--padding);--padding-bottom:var(--padding);--padding-start:var(--padding);display:flex;flex-direction:column;position:relative;line-height:1.5;height:100%;font-size:0.9375em;font-size:clamp(0.77rem, 1vw, 0.9rem)}/*!@:host input,\n:host select,\n:host button*/.sc-nano-global-nav-h input.sc-nano-global-nav,.sc-nano-global-nav-h select.sc-nano-global-nav,.sc-nano-global-nav-h button.sc-nano-global-nav{font-family:inherit;-webkit-appearance:none;appearance:none;font-size:inherit}/*!@:host a:focus,\n:host button:focus*/.sc-nano-global-nav-h a.sc-nano-global-nav:focus,.sc-nano-global-nav-h button.sc-nano-global-nav:focus{outline:none}/*!@:host a:focus-visible,\n:host button:focus-visible*/.sc-nano-global-nav-h a.sc-nano-global-nav:focus-visible,.sc-nano-global-nav-h button.sc-nano-global-nav:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}";
|
17232
|
+
const globalNavCss = "/*!@:host*/.sc-nano-global-nav-h{box-sizing:border-box}/*!@*,\n*::before,\n*::after*/*.sc-nano-global-nav,*.sc-nano-global-nav::before,*.sc-nano-global-nav::after{box-sizing:border-box}/*!@[hidden]*/[hidden].sc-nano-global-nav{display:none !important}/*!@.global-nav*/.global-nav.sc-nano-global-nav{font-family:inherit;font-size:inherit;font-stretch:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;z-index:var(--nano-layer-index-menubar, 10)}/*!@.global-nav button*/.global-nav.sc-nano-global-nav button.sc-nano-global-nav{background:none;color:inherit;border:none}/*!@.global-nav .icon-btn*/.global-nav.sc-nano-global-nav .icon-btn.sc-nano-global-nav{position:relative;background:none;color:inherit;border:none;align-self:normal;padding:9px 7px;cursor:pointer;display:flex;align-items:center}/*!@.global-nav .icon-btn nano-icon*/.global-nav.sc-nano-global-nav .icon-btn.sc-nano-global-nav nano-icon.sc-nano-global-nav{width:18px;height:18px}/*!@.global-nav ::slotted(nano-nav-item[slot=icon])*/.global-nav .sc-nano-global-nav-s>nano-nav-item[slot=icon]{--padding-top:9px;--padding-bottom:9px;--padding-start:7px;--padding-end:7px;--display:flex;font-size:18px}/*!@.global-nav a*/.global-nav.sc-nano-global-nav a.sc-nano-global-nav{color:inherit;text-decoration:none;white-space:nowrap}/*!@.global-nav .nav-links_title*/.global-nav.sc-nano-global-nav .nav-links_title.sc-nano-global-nav{margin:8px 0 3px}/*!@.global-nav .nav-links ul*/.global-nav.sc-nano-global-nav .nav-links.sc-nano-global-nav ul.sc-nano-global-nav{margin:0;padding:0}/*!@.global-nav .nav-links li*/.global-nav.sc-nano-global-nav .nav-links.sc-nano-global-nav li.sc-nano-global-nav{list-style:none}/*!@.global-nav .login-btn*/.global-nav.sc-nano-global-nav .login-btn.sc-nano-global-nav{display:flex;align-items:center}/*!@.global-nav .menu-btn*/.global-nav.sc-nano-global-nav .menu-btn.sc-nano-global-nav{padding:9px var(--bar-item-spacing) 9px var(--bar-item-spacing)}/*!@.site-content*/.site-content.sc-nano-global-nav{display:flex;transition:min-height 0.2s ease;position:relative;z-index:auto;align-items:stretch;flex:1}/*!@.mask*/.mask.sc-nano-global-nav{opacity:0;background:rgba(0, 0, 0, 0.3);position:fixed;inset-inline:0;inset-block-start:0;height:100vh;z-index:-1;transition:transform 0.2s ease, opacity 0.2s ease, visibility 0.01s ease 0.2s, z-index 0.01s ease 0.2s;visibility:hidden}/*!@.mask.open*/.mask.open.sc-nano-global-nav{opacity:1;transition:z-index 0.01s ease, visibility 0.01s ease, transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s;z-index:3;visibility:visible}/*!@.bars*/.bars.sc-nano-global-nav{color:var(--bar-text-color);z-index:var(--nano-layer-index-menubar, 10);position:relative;max-width:100%;min-width:100%;box-shadow:none;transition:0.2s ease box-shadow}/*!@[stuck] .bars*/[stuck].sc-nano-global-nav .bars.sc-nano-global-nav{box-shadow:0 1px 25px 0 rgba(0, 0, 0, 0.15)}/*!@.bars::before*/.bars.sc-nano-global-nav::before{content:\"\";width:100%;height:100%;z-index:-1;background:var(--bar-background);position:absolute}/*!@.main-bar*/.main-bar.sc-nano-global-nav{width:100%;padding-inline:0 var(--bar-item-spacing);padding-block:var(--bar-vertical-padding);display:flex;align-items:center;justify-content:space-between;overflow-x:hidden}/*!@.main-bar:focus*/.main-bar.sc-nano-global-nav:focus{outline:none}/*!@:host(.ready) .main-bar*/.ready.sc-nano-global-nav-h .main-bar.sc-nano-global-nav{overflow-x:visible}/*!@.main-bar > *,\n.main-bar ::slotted(*)*/.main-bar.sc-nano-global-nav>*.sc-nano-global-nav,.main-bar .sc-nano-global-nav-s>*{transition:opacity 0.2s ease}/*!@:host(:not(.ready)) .main-bar > *,\n:host(:not(.ready)) .main-bar ::slotted(*)*/.sc-nano-global-nav-h:not(.ready) .main-bar.sc-nano-global-nav>*.sc-nano-global-nav,.sc-nano-global-nav-h:not(.ready) .main-bar .sc-nano-global-nav-s>*{opacity:0 !important}/*!@:host(.ready) .main-bar > *,\n:host(.ready) .main-bar ::slotted(*)*/.ready.sc-nano-global-nav-h .main-bar.sc-nano-global-nav>*.sc-nano-global-nav,.sc-nano-global-nav-h.ready .main-bar .sc-nano-global-nav-s>*{opacity:1}/*!@:host(.resizing) .main-bar > *,\n:host(.resizing) .main-bar ::slotted(*)*/.resizing.sc-nano-global-nav-h .main-bar.sc-nano-global-nav>*.sc-nano-global-nav,.sc-nano-global-nav-h.resizing .main-bar .sc-nano-global-nav-s>*{opacity:0 !important}/*!@.main-bar > **/.main-bar.sc-nano-global-nav>*.sc-nano-global-nav{flex:0 0 auto}/*!@.main-bar > * ::slotted(nano-nav-item[slot=icon])*/.main-bar .sc-nano-global-nav-s>nano-nav-item[slot=icon]{-webkit-margin-start:11px;margin-inline-start:11px}/*!@.main-bar > * ::slotted(nano-nav-item),\n.main-bar > * nano-nav-item*/.main-bar .sc-nano-global-nav-s>nano-nav-item,.main-bar.sc-nano-global-nav>*.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{--color-hover:var(--bar-color-focus);--secondary-bg-color:var(--bar-dropdown-bg);--secondary-color:var(--bar-dropdown-text);--bg-color-open:var(--bar-background);--padding-top:7px;--padding-bottom:7px;--padding-end:2px;--padding-start:2px;text-decoration:none !important}/*!@.main-bar .icon-btn*/.main-bar.sc-nano-global-nav .icon-btn.sc-nano-global-nav{-webkit-margin-before:0;margin-block-start:0;-webkit-margin-after:0;margin-block-end:0;-webkit-margin-start:6px;margin-inline-start:6px}/*!@:host(.threshold-2) .main-bar .icon-btn*/.threshold-2.sc-nano-global-nav-h .main-bar.sc-nano-global-nav .icon-btn.sc-nano-global-nav{-webkit-margin-before:0;margin-block-start:0;-webkit-margin-after:0;margin-block-end:0;-webkit-margin-start:11px;margin-inline-start:11px}/*!@.main-bar .menu-btn.icon-btn*/.main-bar.sc-nano-global-nav .menu-btn.icon-btn.sc-nano-global-nav{margin:0 !important;-webkit-border-end:1.5px solid var(--bar-color-shade);border-inline-end:1.5px solid var(--bar-color-shade)}/*!@.main-bar .logo*/.main-bar.sc-nano-global-nav .logo.sc-nano-global-nav{height:36px;width:200px;min-width:200px}/*!@:host(:not(.threshold-1)) .main-bar .logo*/.sc-nano-global-nav-h:not(.threshold-1) .main-bar.sc-nano-global-nav .logo.sc-nano-global-nav{height:30px}/*!@.main-bar .logo-link*/.main-bar.sc-nano-global-nav .logo-link.sc-nano-global-nav{-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;padding-inline:var(--bar-item-spacing);display:flex;align-items:center;border:none}/*!@.main-bar .nav-links*/.main-bar.sc-nano-global-nav .nav-links.sc-nano-global-nav{flex:0 0 auto;display:flex;justify-content:space-around}/*!@.main-bar .nav-links ul*/.main-bar.sc-nano-global-nav .nav-links.sc-nano-global-nav ul.sc-nano-global-nav{display:flex;justify-content:space-around}/*!@.main-bar .nav-links ::slotted(nano-nav-item),\n.main-bar .nav-links nano-nav-item*/.main-bar .nav-links .sc-nano-global-nav-s>nano-nav-item,.main-bar.sc-nano-global-nav .nav-links.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{--padding-top:7px;--padding-bottom:7px;--padding-end:2px;--padding-start:2px;--margin:0 var(--bar-item-spacing)}/*!@.main-bar .nav-links--main*/.main-bar.sc-nano-global-nav .nav-links--main.sc-nano-global-nav{justify-content:flex-start;letter-spacing:1.5px;font-weight:600;font-stretch:condensed;text-transform:uppercase;font-size:1.065em;-webkit-margin-end:auto;margin-inline-end:auto}/*!@.main-bar .nav-links--main ::slotted(nano-nav-item)*/.main-bar .nav-links--main .sc-nano-global-nav-s>nano-nav-item{--color:var(--bar-text-color);--padding-end:3px;--padding-start:0}/*!@.main-bar .nav-links--sub*/.main-bar.sc-nano-global-nav .nav-links--sub.sc-nano-global-nav{--color:var(--color, #e2e2e2);-webkit-margin-start:6px;margin-inline-start:6px;justify-content:flex-end}/*!@.main-bar .login-btn*/.main-bar.sc-nano-global-nav .login-btn.sc-nano-global-nav{display:inline-block;border-radius:4px;background-color:var(--login-button-bg);color:var(--login-button-text);padding:3px 10px;position:relative;inset-inline-start:auto;inset-block-end:auto;margin-inline:11px 0}/*!@.main-bar .measure-ele*/.main-bar.sc-nano-global-nav .measure-ele.sc-nano-global-nav{min-width:1px;display:block;margin:0;padding:0}/*!@.sticker-trigger*/.sticker-trigger.sc-nano-global-nav{background:var(--bar-background);width:100%;height:1px;z-index:20;position:relative}/*!@.sticker-trigger + .sticker-trigger*/.sticker-trigger.sc-nano-global-nav+.sticker-trigger.sc-nano-global-nav{display:none}/*!@.gn-menu*/.gn-menu.sc-nano-global-nav{position:fixed;inset-block-start:0;inset-inline-start:0;z-index:-1;display:none;transition:z-index 0.01s ease 0.2s;height:100vh;width:100vw;overflow-y:auto}/*!@:host(.threshold-4) .gn-menu*/.threshold-4.sc-nano-global-nav-h .gn-menu.sc-nano-global-nav{position:absolute;width:calc(100vw - 20px)}/*!@.gn-menu.menu-full-screen*/.gn-menu.menu-full-screen.sc-nano-global-nav{width:100vw !important}/*!@.gn-menu_wrap*/.gn-menu_wrap.sc-nano-global-nav{max-width:92vw;width:335px;background:var(--menu-background);color:var(--menu-text-color);padding:calc(var(--bar-vertical-padding) + 1px) 0 0;box-shadow:0 0 36px 0 rgba(0, 0, 0, 0.8);position:relative;pointer-events:all;-webkit-margin-after:36px;margin-block-end:36px;opacity:0;outline:none;transition:transform 0.2s ease, opacity 0.2s ease}/*!@.gn-menu_wrap.has-promotion*/.gn-menu_wrap.has-promotion.sc-nano-global-nav{padding:var(--menu-padding) 0 0}/*!@.gn-menu.open*/.gn-menu.open.sc-nano-global-nav{z-index:var(--nano-layer-index-dropdown, 300);transition:z-index 0.01s ease}/*!@.gn-menu.open .gn-menu_wrap*/.gn-menu.open.sc-nano-global-nav .gn-menu_wrap.sc-nano-global-nav{opacity:1;transform:translate3d(0, 0, 0) !important;transition:transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s}/*!@.gn-menu_actions*/.gn-menu_actions.sc-nano-global-nav{-webkit-padding-end:calc(var(--menu-padding) / 2);padding-inline-end:calc(var(--menu-padding) / 2);display:flex;justify-content:space-between}/*!@.gn-menu_actions-counter*/.gn-menu_actions-counter.sc-nano-global-nav{background:#d0021b;color:var(--menu-text-color);position:absolute;inset-block-end:4px;inset-inline:auto 0;font-size:9px;height:14px;line-height:14px;width:auto;min-width:14px;border-radius:50%;box-sizing:border-box;text-align:center;text-indent:0}/*!@.gn-menu .content-wrap*/.gn-menu.sc-nano-global-nav .content-wrap.sc-nano-global-nav{position:relative;overflow:hidden;transition:0.2s ease min-height;min-height:190px}/*!@.gn-menu .content--sub*/.gn-menu.sc-nano-global-nav .content--sub.sc-nano-global-nav{padding:var(--menu-padding) 0 var(--menu-padding) 7px}/*!@.gn-menu .menu-btn*/.gn-menu.sc-nano-global-nav .menu-btn.sc-nano-global-nav{-webkit-margin-end:auto;margin-inline-end:auto}/*!@.gn-menu .nav-links*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav{display:flex;flex-wrap:wrap}/*!@.gn-menu .nav-links ::slotted(nano-nav-item),\n.gn-menu .nav-links nano-nav-item*/.gn-menu .nav-links .sc-nano-global-nav-s>nano-nav-item,.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{--icon-size:14px;--display:inline-block;--secondary-bg-color:#001a21;--padding-top:10px;--padding-bottom:10px;--padding-end:calc(var(--menu-padding) * 2);--padding-start:calc(var(--menu-padding) + 3px);--color:var(--menu-text-color);--color-hover:var(--menu-title-text);--bg-color-hover:transparent;--bg-color-focus:#002530;--focus-outline:none;width:100%}/*!@.gn-menu .nav-links .user-nav*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .user-nav.sc-nano-global-nav{--bg-color:var(--menu-user-panel-bg);--padding-top:9px;--padding-bottom:9px;font-weight:bold;margin:5px 0 0}/*!@.gn-menu .nav-links .user-nav ::slotted(nano-nav-item),\n.gn-menu .nav-links .user-nav nano-nav-item*/.gn-menu .nav-links .user-nav .sc-nano-global-nav-s>nano-nav-item,.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .user-nav.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{font-weight:500;--bg-color:transparent}/*!@.gn-menu .nav-links .user-nav .content*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .user-nav.sc-nano-global-nav .content.sc-nano-global-nav{padding:0;background-color:var(--menu-user-panel-bg)}/*!@.gn-menu .nav-links .user-nav .content--sub*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .user-nav.sc-nano-global-nav .content--sub.sc-nano-global-nav{padding-inline:var(--menu-padding)}/*!@.gn-menu .nav-links .user-nav .back-btn*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .user-nav.sc-nano-global-nav .back-btn.sc-nano-global-nav{-webkit-padding-start:var(--menu-padding);padding-inline-start:var(--menu-padding)}/*!@.gn-menu .nav-links_title*/.gn-menu.sc-nano-global-nav .nav-links_title.sc-nano-global-nav{margin:0 var(--menu-padding) 4px;-webkit-border-after:1px solid var(--menu-hint-color);border-block-end:1px solid var(--menu-hint-color);-webkit-padding-after:8px;padding-block-end:8px;text-transform:uppercase;color:var(--menu-title-text);letter-spacing:1px;font-weight:700}/*!@.gn-menu .nav-links_title--sites*/.gn-menu.sc-nano-global-nav .nav-links_title--sites.sc-nano-global-nav{-webkit-border-after:none;border-block-end:none}/*!@.gn-menu .nav-links-wrap*/.gn-menu.sc-nano-global-nav .nav-links-wrap.sc-nano-global-nav{margin:18px 0}/*!@.gn-menu .nav-links-wrap:last-child*/.gn-menu.sc-nano-global-nav .nav-links-wrap.sc-nano-global-nav:last-child{-webkit-margin-after:0;margin-block-end:0}/*!@.gn-menu .nav-links .back-btn*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .back-btn.sc-nano-global-nav{-webkit-border-before:1px solid var(--menu-hint-color);border-block-start:1px solid var(--menu-hint-color);-webkit-border-after:1px solid var(--menu-hint-color);border-block-end:1px solid var(--menu-hint-color);display:flex;align-items:center;padding:10px 11px 10px 0;width:100%;font-size:12px;text-transform:uppercase;color:var(--menu-title-text);letter-spacing:1px;font-weight:700;cursor:pointer;font-stretch:expanded}/*!@.gn-menu .nav-links .back-btn:hover*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .back-btn.sc-nano-global-nav:hover{color:var(--menu-text-color)}/*!@.gn-menu .nav-links .back-btn nano-icon*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .back-btn.sc-nano-global-nav nano-icon.sc-nano-global-nav{-webkit-margin-end:10px;margin-inline-end:10px;font-size:12px;color:var(--menu-icon-color)}/*!@.gn-menu .nav-links--sub*/.gn-menu.sc-nano-global-nav .nav-links--sub.sc-nano-global-nav{display:flex;flex-wrap:wrap}/*!@.gn-menu .nav-links--sub ::slotted(nano-nav-item),\n.gn-menu .nav-links--sub nano-nav-item*/.gn-menu .nav-links--sub .sc-nano-global-nav-s>nano-nav-item,.gn-menu.sc-nano-global-nav .nav-links--sub.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{--border-bottom:none;--padding-end:var(--menu-padding);--padding-start:var(--menu-padding);--padding-top:8px;--padding-bottom:8px;margin:0;width:50%;line-height:1.8}/*!@.gn-menu .nav-links--sites ::slotted(nano-nav-item),\n.gn-menu .nav-links--sites nano-nav-item*/.gn-menu .nav-links--sites .sc-nano-global-nav-s>nano-nav-item,.gn-menu.sc-nano-global-nav .nav-links--sites.sc-nano-global-nav nano-nav-item.sc-nano-global-nav{width:100%}/*!@.gn-menu .nav-links .content*/.gn-menu.sc-nano-global-nav .nav-links.sc-nano-global-nav .content.sc-nano-global-nav{padding:8px var(--menu-padding)}/*!@.gn-menu .login-btn*/.gn-menu.sc-nano-global-nav .login-btn.sc-nano-global-nav{padding-inline:7px var(--menu-padding);padding-block:var(--menu-padding)}/*!@.gn-menu .login-btn nano-icon*/.gn-menu.sc-nano-global-nav .login-btn.sc-nano-global-nav nano-icon.sc-nano-global-nav{-webkit-margin-start:10px;margin-inline-start:10px}/*!@.gn-menu .logout-btn*/.gn-menu.sc-nano-global-nav .logout-btn.sc-nano-global-nav{justify-content:flex-end}/*!@.gn-menu .logout-btn a*/.gn-menu.sc-nano-global-nav .logout-btn.sc-nano-global-nav a.sc-nano-global-nav{padding:0 5px}/*!@.search-btn::before*/.search-btn.sc-nano-global-nav::before{content:\"\";background-color:#0c5a71;height:9px;inset-inline:0 5px;inset-block-end:-20px;position:absolute;transform:translateZ(0) scaleX(0);transform-origin:0;transition:0.2s ease transform}/*!@.search-btn--open::before*/.search-btn--open.sc-nano-global-nav::before{transform:translateZ(0) scaleX(1);opacity:0.7}/*!@.search-bar*/.search-bar.sc-nano-global-nav{height:0;overflow:hidden;transition:0.2s ease height;padding:0 var(--bar-item-spacing);outline:none;max-width:45em;-webkit-margin-start:auto;margin-inline-start:auto}/*!@.search-bar .search-widget*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav{margin:0;overflow:inherit;max-width:none;max-height:none;min-width:auto;-webkit-padding-end:0;padding-inline-end:0}/*!@.search-bar .search-widget .search-icon--search*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav .search-icon--search.sc-nano-global-nav{display:none}/*!@.search-bar .search-widget .search-input*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav .search-input.sc-nano-global-nav{--input-border-width:2px 0 0 0;--input-bg-color:#f3f3f3;--nano-input-border-color:transparent;--nano-input-border-color--focus:var(--bar-color-shade);font-size:1.1875em}/*!@.search-bar .search-widget nano-select.search-input*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav nano-select.search-input.sc-nano-global-nav{--input-border-width:2px 3px 0 0;--input-bg-color:var(--bar-color-shade);--input-bg-color--focus:#f3f3f3;color:#f3f3f3}/*!@.search-bar .search-widget nano-select.search-input.has-focus*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav nano-select.search-input.has-focus.sc-nano-global-nav{color:var(--bar-color-shade)}/*!@.search-bar .search-widget .select-input__arrow*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav .select-input__arrow.sc-nano-global-nav{font-size:0.75em}/*!@.search-bar .search-widget .select__mask.sc-nano-select*/.search-bar.sc-nano-global-nav .search-widget.sc-nano-global-nav .select__mask.sc-nano-select.sc-nano-global-nav{line-height:2.35em;min-height:2.35em;-webkit-padding-before:2px;padding-block-start:2px}/*!@.search-bar .search-inputs*/.search-bar.sc-nano-global-nav .search-inputs.sc-nano-global-nav{padding:0;margin:0}/*!@.search-bar .search-autocomplete*/.search-bar.sc-nano-global-nav .search-autocomplete.sc-nano-global-nav{inset-block-start:100%;width:100%}/*!@.search-widget*/.search-widget.sc-nano-global-nav{-webkit-padding-end:var(--bar-item-spacing);padding-inline-end:var(--bar-item-spacing);-webkit-margin-start:var(--bar-item-spacing);margin-inline-start:var(--bar-item-spacing);-webkit-margin-end:auto;margin-inline-end:auto;position:relative;flex:1 1 auto;max-width:500px;min-width:350px;max-height:36px;inset-block-start:-1px}/*!@.search-inputs*/.search-inputs.sc-nano-global-nav{display:flex;margin:0}/*!@.search-inputs input[type=submit]*/.search-inputs.sc-nano-global-nav input[type=submit].sc-nano-global-nav{display:none}/*!@.search-autocomplete*/.search-autocomplete.sc-nano-global-nav{position:absolute;inset-block-start:calc(100% + 15px);width:calc(100% - var(--bar-item-spacing));inset-inline-start:0;background:white;border:2px solid var(--bar-color-tint);border-radius:0 0 5px 5px;color:#4a4a4a;-webkit-padding-before:calc(var(--bar-vertical-padding) / 2);padding-block-start:calc(var(--bar-vertical-padding) / 2);-webkit-padding-end:0;padding-inline-end:0;-webkit-padding-after:1px;padding-block-end:1px;-webkit-padding-start:0;padding-inline-start:0;z-index:1}/*!@.search-autocomplete-hit*/.search-autocomplete-hit.sc-nano-global-nav{padding-block:calc(var(--bar-vertical-padding) / 4);padding-inline:var(--bar-item-spacing);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;text-align:start;line-height:1.5;cursor:pointer}/*!@.search-autocomplete-hit-scope*/.search-autocomplete-hit-scope.sc-nano-global-nav{color:#a7b0b3;font-weight:600}/*!@.search-autocomplete-hit:hover, .search-autocomplete-hit:focus-visible*/.search-autocomplete-hit.sc-nano-global-nav:hover,.search-autocomplete-hit.sc-nano-global-nav:focus-visible{background-color:#e4e6e8}/*!@.search-autocomplete-hit:focus-visible*/.search-autocomplete-hit.sc-nano-global-nav:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}/*!@.search-autocomplete-hit:focus*/.search-autocomplete-hit.sc-nano-global-nav:focus{outline:none}/*!@.search-autocomplete-hit .search__highlight,\n.search-autocomplete-hit em*/.search-autocomplete-hit.sc-nano-global-nav .search__highlight.sc-nano-global-nav,.search-autocomplete-hit.sc-nano-global-nav em.sc-nano-global-nav{font-weight:bold;font-style:normal}/*!@.search-autocomplete-hit--no-result:hover, .search-autocomplete-hit--no-result:focus*/.search-autocomplete-hit--no-result.sc-nano-global-nav:hover,.search-autocomplete-hit--no-result.sc-nano-global-nav:focus{background:none !important}/*!@.search-autocomplete-foot*/.search-autocomplete-foot.sc-nano-global-nav{margin:7px 0 0}/*!@.search-autocomplete-submit*/.search-autocomplete-submit.sc-nano-global-nav{background:none;border:none;align-self:normal;padding:9px var(--bar-item-spacing) !important;cursor:pointer;display:flex;align-items:center;color:#007495;justify-content:flex-end;width:100%;text-decoration:underline;-webkit-border-before:1px solid #e8eaea;border-block-start:1px solid #e8eaea}/*!@.search-autocomplete-submit:hover, .search-autocomplete-submit:focus*/.search-autocomplete-submit.sc-nano-global-nav:hover,.search-autocomplete-submit.sc-nano-global-nav:focus{background-color:#e4e6e8}/*!@nano-select.search-input*/nano-select.search-input.sc-nano-global-nav{--input-border-width:0 0 2px 0;--input-text-color:var(--bar-text-color);--nano-input-border-color:rgb(103 138 154);--padding-end:var(--bar-item-spacing);--nano-input-border-color--focus:black;font-stretch:condensed;font-weight:600;letter-spacing:1.5px;font-size:1.2em;flex:0 1 auto;width:auto;display:flex;align-items:center;flex-direction:column;position:relative;inset-inline-start:1px;text-transform:uppercase}/*!@:host(:not(.ready)) nano-select.search-input*/.sc-nano-global-nav-h:not(.ready) nano-select.search-input.sc-nano-global-nav{overflow:hidden;max-height:1em}/*!@nano-select.search-input .down-arrow*/nano-select.search-input.sc-nano-global-nav .down-arrow.sc-nano-global-nav{font-size:0.65em}/*!@nano-input.search-input*/nano-input.search-input.sc-nano-global-nav{--clear-btn-color:var(--bar-text-color);--nano-input-border-color:rgb(103 138 154);--input-border-width:0 0 2px 0;--placeholder-color:var(--bar-text-color);--input-text-color:var(--bar-text-color);--padding-start:21px;--nano-input-border-color--focus:black;font-size:1.2em;width:206px;display:flex;align-items:center;flex-direction:column;flex:1}/*!@:host([dir=rtl]) nano-input.search-input*/[dir=rtl].sc-nano-global-nav-h nano-input.search-input.sc-nano-global-nav{--input-border-radius:5px 0 0 5px}/*!@:host(:not(.ready)) nano-input.search-input*/.sc-nano-global-nav-h:not(.ready) nano-input.search-input.sc-nano-global-nav{overflow:hidden;max-height:1em}/*!@nano-input.search-input .search-icon*/nano-input.search-input.sc-nano-global-nav .search-icon.sc-nano-global-nav{background:none;padding:0 8px;display:none;font-size:0.9em}/*!@nano-input.search-input .search-icon--show*/nano-input.search-input.sc-nano-global-nav .search-icon--show.sc-nano-global-nav{display:flex !important}/*!@nano-input.search-input .search-icon--loader*/nano-input.search-input.sc-nano-global-nav .search-icon--loader.sc-nano-global-nav{animation:spin 1s linear infinite}@keyframes spin{100%{transform:rotate(360deg)}}/*!@nano-input.search-input .search-icon nano-icon*/nano-input.search-input.sc-nano-global-nav .search-icon.sc-nano-global-nav nano-icon.sc-nano-global-nav{height:1.4em}/*!@.user-profile*/.user-profile.sc-nano-global-nav{display:flex;justify-content:space-between;align-items:center;padding:2em;background-color:var(--menu-user-profile-bg)}/*!@.user-profile .left*/.user-profile.sc-nano-global-nav .left.sc-nano-global-nav{display:flex;align-items:center}/*!@.user-profile .avatar-container*/.user-profile.sc-nano-global-nav .avatar-container.sc-nano-global-nav{position:relative}/*!@.user-profile .avatar-container img.avatar*/.user-profile.sc-nano-global-nav .avatar-container.sc-nano-global-nav img.avatar.sc-nano-global-nav{border-radius:50px}/*!@.user-profile .avatar-container img.logo-small*/.user-profile.sc-nano-global-nav .avatar-container.sc-nano-global-nav img.logo-small.sc-nano-global-nav{position:absolute;height:30px;width:30px;inset-block-end:0;inset-inline-end:0;background-color:#27586e;border-radius:10px;padding:5px}/*!@.user-profile .user-details*/.user-profile.sc-nano-global-nav .user-details.sc-nano-global-nav{display:flex;flex-direction:column;margin:0 1.25em;color:white}/*!@.user-profile .user-details .name*/.user-profile.sc-nano-global-nav .user-details.sc-nano-global-nav .name.sc-nano-global-nav{font-size:1.25em}/*!@.user-profile .user-details .bio*/.user-profile.sc-nano-global-nav .user-details.sc-nano-global-nav .bio.sc-nano-global-nav{margin:0.5em 0}/*!@.user-profile .user-details .kudos span*/.user-profile.sc-nano-global-nav .user-details.sc-nano-global-nav .kudos.sc-nano-global-nav span.sc-nano-global-nav{background-color:#81c7eb;color:#415958;padding:0.25em;border-radius:0.5em;font-weight:bold}/*!@.user-profile .chevron-right*/.user-profile.sc-nano-global-nav .chevron-right.sc-nano-global-nav{font-size:1.5em;color:white}/*!@.user-links*/.user-links.sc-nano-global-nav{position:relative}/*!@.user-links .icon-btn*/.user-links.sc-nano-global-nav .icon-btn.sc-nano-global-nav{-webkit-padding-end:0;padding-inline-end:0;font-weight:500}/*!@.user-links .icon-btn nano-icon*/.user-links.sc-nano-global-nav .icon-btn.sc-nano-global-nav nano-icon.sc-nano-global-nav{-webkit-margin-start:5px;margin-inline-start:5px;width:16px;height:16px;transform-origin:center;transition:transform 0.2s ease, color 0.2s ease}/*!@.user-links .icon-btn.open nano-icon*/.user-links.sc-nano-global-nav .icon-btn.open.sc-nano-global-nav nano-icon.sc-nano-global-nav{transform:rotate(180deg);color:#007495}/*!@.user-links-panel*/.user-links-panel.sc-nano-global-nav{display:none;position:absolute;border-radius:4px 0 4px 4px;box-shadow:0 1px 5px 0 rgba(0, 0, 0, 0.4);background-color:#568c9d;opacity:0;transform:translate3d(0, 30px, 0);transition:transform 0.2s ease, opacity 0.2s ease;inset-inline-end:0;min-width:318px;z-index:2}/*!@.user-links-panel:focus*/.user-links-panel.sc-nano-global-nav:focus{outline:none}/*!@.user-links-panel.show*/.user-links-panel.show.sc-nano-global-nav{opacity:1;transform:translate3d(0, calc(var(--padding) + 1px), 0)}/*!@.user-links-panel-content*/.user-links-panel-content.sc-nano-global-nav{padding:0 18px;display:flex;flex-direction:column;color:white}/*!@.user-links-panel-content a*/.user-links-panel-content.sc-nano-global-nav a.sc-nano-global-nav{padding:11px 0;-webkit-border-after:#669dac 1px solid;border-block-end:#669dac 1px solid}/*!@.user-links-panel-content a:hover, .user-links-panel-content a:focus*/.user-links-panel-content.sc-nano-global-nav a.sc-nano-global-nav:hover,.user-links-panel-content.sc-nano-global-nav a.sc-nano-global-nav:focus{color:#455556}/*!@.user-links-panel-content a:last-child*/.user-links-panel-content.sc-nano-global-nav a.sc-nano-global-nav:last-child{-webkit-border-after:none;border-block-end:none}/*!@.user-links-panel-foot*/.user-links-panel-foot.sc-nano-global-nav{background-color:#aac5cd;border-radius:0 0 4px 4px;padding:var(--padding);color:#455556;display:flex;align-items:center;font-weight:500;justify-content:space-between}/*!@.user-links-panel-foot a:hover*/.user-links-panel-foot.sc-nano-global-nav a.sc-nano-global-nav:hover{text-decoration:underline}/*!@.user-links-panel .user-profile*/.user-links-panel.sc-nano-global-nav .user-profile.sc-nano-global-nav{background-color:var(--bar-user-panel-bg)}/*!@:host*/.sc-nano-global-nav-h{--bar-vertical-padding:21px;--bar-item-spacing:13px;--bar-background:white;--bar-text-color:#196c82;--bar-color-shade:rgb(12 90 113);--bar-color-tint:rgb(19 89 111);--bar-color-focus:#99a3a6;--bar-user-panel-bg:#016d86;--bar-dropdown-bg:#196c82;--bar-dropdown-text:white;--menu-background:#001a21;--menu-text-color:white;--menu-user-profile-bg:#001a21;--menu-user-panel-bg:#193037;--menu-padding:12px;--menu-hint-color:#33484d;--menu-title-text:#90c6e7;--menu-icon-color:white;--login-button-bg:#17bb75;--login-button-text:white;--padding:12px;--padding-top:var(--padding);--padding-end:var(--padding);--padding-bottom:var(--padding);--padding-start:var(--padding);display:flex;flex-direction:column;position:relative;line-height:1.5;height:100%;font-size:0.9375em;font-size:clamp(0.77rem, 1vw, 0.9rem)}/*!@:host input,\n:host select,\n:host button*/.sc-nano-global-nav-h input.sc-nano-global-nav,.sc-nano-global-nav-h select.sc-nano-global-nav,.sc-nano-global-nav-h button.sc-nano-global-nav{font-family:inherit;-webkit-appearance:none;appearance:none;font-size:inherit}/*!@:host a:focus,\n:host button:focus*/.sc-nano-global-nav-h a.sc-nano-global-nav:focus,.sc-nano-global-nav-h button.sc-nano-global-nav:focus{outline:none}/*!@:host a:focus-visible,\n:host button:focus-visible*/.sc-nano-global-nav-h a.sc-nano-global-nav:focus-visible,.sc-nano-global-nav-h button.sc-nano-global-nav:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}";
|
17233
17233
|
|
17234
17234
|
// the 'breakpoints' where different segments of content go into or out-of the burger / overflow menu
|
17235
17235
|
const THRESHOLDBREAKS = {
|
@@ -18142,7 +18142,7 @@ class GlobalNav {
|
|
18142
18142
|
this.threshold <
|
18143
18143
|
this.THRESHOLDLIMIT - THRESHOLDBREAKS.about) ||
|
18144
18144
|
this.hasSiteSlot ||
|
18145
|
-
!!this.siteNavItms.length) && (hAsync("button", { class: "menu-btn icon-btn", onMouseDown: this.menuOpen, onKeyDown: this.onMenuBtnKeyDown, "aria-expanded": this.modalOpen ? 'true' : 'false', "aria-controls": "global-nav-menu", ref: (btn) => (this.menuBtn = btn) }, hAsync("nano-icon", { name: "light/bars", "aria-label": "open menu" }))), this.showLogo && (hAsync("a", { href: this.logoUrl, class: "logo-link" }, hAsync("img", { src: getAssetPath(
|
18145
|
+
!!this.siteNavItms.length) && (hAsync("button", { class: "menu-btn icon-btn", onMouseDown: this.menuOpen, onKeyDown: this.onMenuBtnKeyDown, "aria-expanded": this.modalOpen ? 'true' : 'false', "aria-controls": "global-nav-menu", ref: (btn) => (this.menuBtn = btn) }, hAsync("nano-icon", { name: "light/bars", "aria-label": "open menu" }))), this.showLogo && (hAsync("a", { href: this.logoUrl, class: "logo-link" }, hAsync("img", { src: getAssetPath(`../nano-assets/ont-logo.svg`), alt: "Oxford Nanopore Technologies Logo", class: "logo" }))), !this.showLogo && (hAsync("div", { class: "logo-link" }, hAsync("slot", { name: "logo", onSlotchange: this.assessSlottedContent }))), hAsync("div", { class: "nav-links nav-links--main" }, hAsync("slot", { name: "main", onSlotchange: this.assessSlottedContent })), this.mainSlotLen === 0 &&
|
18146
18146
|
this.threshold >=
|
18147
18147
|
this.THRESHOLDLIMIT - THRESHOLDBREAKS.search && [
|
18148
18148
|
this.showSearch && !!this.internalSearchIndeces.length && (hAsync("div", { class: "search-widget", role: "combobox", "aria-owns": "autocomplete-results", "aria-expanded": this.showAutocomplete && this.autocompleteResults
|
@@ -18371,7 +18371,7 @@ class GlobalNavUserProfile {
|
|
18371
18371
|
// Render output
|
18372
18372
|
render() {
|
18373
18373
|
var _a;
|
18374
|
-
return (!!this.myAccountUser && (hAsync("a", { href: this.userProfileUrl, class: "user-profile" }, hAsync("div", { class: "left" }, hAsync("div", { class: "avatar-container" }, hAsync("img", { class: "avatar", src: (_a = this.myAccountUser) === null || _a === void 0 ? void 0 : _a.small_avatar_url, alt: "User Avatar", height: 75, width: 75 }), this.myAccountUser.is_nanopore_user && (hAsync("img", { class: "logo-small", src: getAssetPath(
|
18374
|
+
return (!!this.myAccountUser && (hAsync("a", { href: this.userProfileUrl, class: "user-profile" }, hAsync("div", { class: "left" }, hAsync("div", { class: "avatar-container" }, hAsync("img", { class: "avatar", src: (_a = this.myAccountUser) === null || _a === void 0 ? void 0 : _a.small_avatar_url, alt: "User Avatar", height: 75, width: 75 }), this.myAccountUser.is_nanopore_user && (hAsync("img", { class: "logo-small", src: getAssetPath(`../nano-assets/ont-wheel-light.svg`), alt: "Nanopore Logo" }))), hAsync("div", { class: "user-details" }, hAsync("span", { class: "name" }, this.myAccountUser.name), hAsync("span", { class: "bio" }, this.myAccountUser.job_title, " at ", this.myAccountUser.company))), hAsync("div", { class: "right" }, hAsync("div", { class: "chevron-right" }, hAsync("nano-icon", { slot: "icon-end", name: "light/chevron-right", "aria-label": "navigate to ..." }))))));
|
18375
18375
|
}
|
18376
18376
|
static get cmpMeta() { return {
|
18377
18377
|
"$flags$": 0,
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nanoporetech-digital/components",
|
3
|
-
"version": "4.
|
3
|
+
"version": "4.1.0",
|
4
4
|
"repository": {
|
5
5
|
"type": "git",
|
6
6
|
"url": "https://git.oxfordnanolabs.local/Digital/nano-components"
|
@@ -130,7 +130,7 @@
|
|
130
130
|
"nanopore",
|
131
131
|
"digital"
|
132
132
|
],
|
133
|
-
"gitHead": "
|
133
|
+
"gitHead": "d397076f5eafad09f08fb69f606a43a871a470bc",
|
134
134
|
"volta": {
|
135
135
|
"node": "14.18.1",
|
136
136
|
"npm": "8.6.0"
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"table.worker-c3b11144.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"table.worker-d60d6df4.js","mappings":";;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* Web Components for Nanopore digital Web Apps
|
3
|
-
*/
|
4
|
-
import{i as n,r as i,h as o,a as t,g as r}from"./p-f6a8467a.js";import{c as s}from"./p-411bb8f1.js";let e;const a=()=>{if(!e){const n=window;n.Nanoicons=n.Nanoicons||{};e=n.Nanoicons.map=n.Nanoicons.map||new Map}return e};const c=n=>{let i=f(n.src);if(i){return i}i=h(n.name,n.icon);if(i){return l(i)}if(n.icon){i=f(n.icon);if(i){return i}}return null};const l=i=>{const o=a().get(i);if(o){return o}return n(`/nano-assets/fontawesome-pro/svgs/${i}.svg`)};const h=(n,i)=>{if(!n&&i&&!d(i)){n=i}if(u(n)){n=m(n)}if(!u(n)||n.trim()===""){return null}const o=n.replace(/[a-z]|-|\/|\d/gi,"");if(o!==""){console.warn("invalid characters in icon name "+n);return null}return n};const f=n=>{if(u(n)){n=n.trim();if(d(n)){return n}}return null};const d=n=>n.length>0&&/(\/|\.)/.test(n);const u=n=>typeof n==="string";const m=n=>n.toLowerCase();const p=n=>{if(n){const i=document.createElement("div");i.innerHTML=n;for(let n=i.childNodes.length-1;n>=0;n--){if(i.childNodes[n].nodeName.toLowerCase()!=="svg"){i.removeChild(i.childNodes[n])}}const o=i.firstElementChild;if(o&&o.nodeName.toLowerCase()==="svg"){const n=o.getAttribute("class")||"";o.setAttribute("class",(n+" sc-nano-icon s-nano-icon svg").trim());if(g(o)){return i.innerHTML}}}return""};const g=n=>{if(n.nodeType===1){if(n.nodeName.toLowerCase()==="script"){return false}for(let i=0;i<n.attributes.length;i++){const o=n.attributes[i].value;if(u(o)&&o.toLowerCase().indexOf("on")===0){return false}}for(let i=0;i<n.childNodes.length;i++){if(!g(n.childNodes[i])){return false}}}return true};const v=new Map;const b=new Map;const w=n=>{let i=b.get(n);if(!i){i=fetch(n).then((i=>{if(i.ok){return i.text().then((i=>{v.set(n,p(i))}))}v.set(n,"")}));b.set(n,i)}return i};const y=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--color:var(--nano-color-base, currentcolor);--primary-color:var(--nano-color-tint, currentcolor);--secondary-color:var(--nano-color-shade, currentcolor);--stroke-width:32px;--primary-opacity:0.8;--secondary-opacity:1;--icon-size:var(--nano-icon-size, 1em);--icon-margin-top:var(--nano-icon-margin-top, 0);--icon-margin-end:var(--nano-icon-margin-end, 0);--icon-margin-bottom:var(--nano-icon-margin-bottom, 0);--icon-margin-start:var(--nano-icon-margin-start, 0);display:inline-block;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);min-height:var(--icon-size);contain:strict;fill:currentcolor;box-sizing:content-box !important;transition:opacity 0.3s ease;color:var(--color);margin-inline:var(--icon-margin-start) var(--icon-margin-end);margin-block:var(--icon-margin-top) var(--icon-margin-bottom)}:host .nanoicon{stroke:currentcolor}.nanoicon-fill-none{fill:none}.nanoicon-stroke-width{stroke-width:32px;stroke-width:var(--stroke-width)}.icon-inner,.nanoicon,svg,.svg{display:block;height:100%;width:100%;overflow:visible}:host(.loading){opacity:0}.fa-primary{color:var(--primary-color);opacity:var(--primary-opacity, 1)}.fa-secondary{color:var(--secondary-color);opacity:var(--secondary-opacity) !important}:host(.flip-rtl) .icon-inner{transform:scaleX(-1)}:host(.icon-small){font-size:18px !important}:host(.icon-large){font-size:32px !important}";const x=class{constructor(n){i(this,n);this.svgContent=undefined;this.isVisible=false;this.isLoading=true;this.color=undefined;this.ariaLabel=undefined;this.flipRtl=undefined;this.name=undefined;this.src=undefined;this.icon=undefined;this.size=undefined;this.lazy=true}setAriaLabel(){if(!this.ariaLabel){const n=h(this.name,this.icon);if(n){this.ariaLabel=n.split("/").slice(-1)[0].replace(/\-/g," ")}}}connectedCallback(){this.waitUntilVisible(this.el,"50px",(()=>{this.isVisible=true;this.loadIcon()}))}disconnectedCallback(){if(this.io){this.io.disconnect();this.io=undefined}}componentWillLoad(){this.setAriaLabel()}waitUntilVisible(n,i,o){if(this.lazy&&typeof window!=="undefined"&&window.IntersectionObserver){const t=this.io=new window.IntersectionObserver((n=>{if(n[0].isIntersecting||n[1]&&n[1].isIntersecting){t.disconnect();this.io=undefined;o()}}),{rootMargin:i});t.observe(n)}else{o()}}loadIcon(){if(this.isVisible){const n=c(this);if(n){if(v.has(n)){this.svgContent=v.get(n);requestAnimationFrame((()=>this.isLoading=false))}else{w(n).then((()=>{this.svgContent=v.get(n);requestAnimationFrame((()=>this.isLoading=false))}))}}}this.setAriaLabel()}render(){const n=this.flipRtl||this.name&&(this.name.indexOf("arrow")>-1||this.name.indexOf("chevron")>-1)&&this.el.ownerDocument.dir==="rtl"&&this.flipRtl!==false;return o(t,{role:"img",class:Object.assign(Object.assign({},s(this.color)),{loading:this.isLoading,[`icon-${this.size}`]:!!this.size,"flip-rtl":!!n})},this.svgContent?o("div",{class:"icon-inner",innerHTML:this.svgContent}):o("div",{class:"icon-inner"}))}get el(){return r(this)}static get watchers(){return{name:["loadIcon"],src:["loadIcon"],icon:["loadIcon"]}}};x.style=y;export{x as nano_icon};
|
5
|
-
//# sourceMappingURL=p-b2655717.entry.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["CACHED_MAP","getIconMap","win","window","Nanoicons","map","Map","getUrl","i","url","getSrc","src","getName","name","icon","getNamedUrl","iconName","get","getAssetPath","isSrc","isStr","toLower","trim","invalidChars","replace","console","warn","str","length","test","val","toLowerCase","validateContent","svgContent","div","document","createElement","innerHTML","childNodes","nodeName","removeChild","svgElm","firstElementChild","svgClass","getAttribute","setAttribute","isValid","elm","nodeType","attributes","value","indexOf","iconContent","requests","getSvgContent","req","fetch","then","rsp","ok","text","set","iconCss","Icon","setAriaLabel","this","ariaLabel","label","split","slice","connectedCallback","waitUntilVisible","el","isVisible","loadIcon","disconnectedCallback","io","disconnect","undefined","componentWillLoad","rootMargin","cb","lazy","IntersectionObserver","data","isIntersecting","observe","has","requestAnimationFrame","isLoading","render","flipRtl","ownerDocument","dir","h","Host","role","class","Object","assign","createColorClasses","color","loading","size"],"sources":["./src/components/icon/utils.ts","./src/components/icon/validate.ts","./src/components/icon/request.ts","./src/components/icon/icon.scss?tag=nano-icon&encapsulation=shadow","./src/components/icon/icon.tsx"],"sourcesContent":["import { getAssetPath } from '@stencil/core';\nimport { Icon } from './icon';\n\nlet CACHED_MAP: Map<string, string>;\n\nexport const getIconMap = (): Map<string, string> => {\n if (!CACHED_MAP) {\n const win = window as any;\n win.Nanoicons = win.Nanoicons || {};\n CACHED_MAP = win.Nanoicons.map = win.Nanoicons.map || new Map();\n }\n return CACHED_MAP;\n};\n\nexport const addIcons = (icons: { [name: string]: string }) => {\n const map = getIconMap();\n Object.keys(icons).forEach((name) => map.set(name, icons[name]));\n};\n\nexport const getUrl = (i: Icon) => {\n let url = getSrc(i.src);\n if (url) {\n return url;\n }\n\n url = getName(i.name, i.icon);\n if (url) {\n return getNamedUrl(url);\n }\n\n if (i.icon) {\n url = getSrc(i.icon);\n if (url) {\n return url;\n }\n }\n return null;\n};\n\nconst getNamedUrl = (iconName: string) => {\n const url = getIconMap().get(iconName);\n if (url) {\n return url;\n }\n return getAssetPath(`/nano-assets/fontawesome-pro/svgs/${iconName}.svg`);\n};\n\nexport const getName = (\n iconName: string | undefined,\n icon: string | undefined\n) => {\n if (!iconName && icon && !isSrc(icon)) {\n iconName = icon;\n }\n if (isStr(iconName)) {\n iconName = toLower(iconName);\n }\n\n if (!isStr(iconName) || iconName.trim() === '') {\n return null;\n }\n\n // only allow alpha characters and dash\n const invalidChars = iconName.replace(/[a-z]|-|\\/|\\d/gi, '');\n if (invalidChars !== '') {\n console.warn('invalid characters in icon name ' + iconName);\n return null;\n }\n return iconName;\n};\n\nexport const getSrc = (src: string | undefined) => {\n if (isStr(src)) {\n src = src.trim();\n if (isSrc(src)) {\n return src;\n }\n }\n return null;\n};\n\nexport const isSrc = (str: string) => str.length > 0 && /(\\/|\\.)/.test(str);\nexport const isStr = (val: any): val is string => typeof val === 'string';\nexport const toLower = (val: string) => val.toLowerCase();\n","import { isStr } from './utils';\n\nexport const validateContent = (svgContent: string | null) => {\n if (svgContent) {\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n // setup this way to ensure it works on our buddy IE\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === 'svg') {\n const svgClass = svgElm.getAttribute('class') || '';\n svgElm.setAttribute(\n 'class',\n (svgClass + ' sc-nano-icon s-nano-icon svg').trim()\n );\n\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm as any)) {\n return div.innerHTML;\n }\n }\n }\n return '';\n};\n\nexport const isValid = (elm: HTMLElement) => {\n if (elm.nodeType === 1) {\n if (elm.nodeName.toLowerCase() === 'script') {\n return false;\n }\n\n for (let i = 0; i < elm.attributes.length; i++) {\n const val = elm.attributes[i].value;\n if (isStr(val) && val.toLowerCase().indexOf('on') === 0) {\n return false;\n }\n }\n\n for (let i = 0; i < elm.childNodes.length; i++) {\n if (!isValid(elm.childNodes[i] as any)) {\n return false;\n }\n }\n }\n return true;\n};\n","import { validateContent } from './validate';\nexport const iconContent = new Map<string, string>();\nconst requests = new Map<string, Promise<any>>();\n\nexport const getSvgContent = (url: string) => {\n // see if we already have a request for this url\n let req = requests.get(url);\n if (!req) {\n // we don't already have a request\n req = fetch(url).then((rsp) => {\n if (rsp.ok) {\n return rsp.text().then((svgContent) => {\n iconContent.set(url, validateContent(svgContent));\n });\n }\n iconContent.set(url, '');\n });\n\n // cache for the same requests\n requests.set(url, req);\n }\n return req;\n};\n","@import '../../global/style/utilities/globals';\n\n:host {\n /**\n * @prop --color: defaults to current context color\n * @prop --primary-color: used for duotone icons to set the primary color\n * @prop --secondary-color: used for duotone icons to set the secondary color\n * @prop --primary-opacity: used for duotone icons to set the primary opacity\n * @prop --secondary-opacity: used for duotone icons to set the secondary opacity\n * @prop --stroke-width: 32px default stroke width\n */\n\n --color: var(--nano-color-base, currentcolor);\n --primary-color: var(--nano-color-tint, currentcolor);\n --secondary-color: var(--nano-color-shade, currentcolor);\n --stroke-width: 32px;\n --primary-opacity: 0.8;\n --secondary-opacity: 1;\n --icon-size: var(--nano-icon-size, 1em);\n --icon-margin-top: var(--nano-icon-margin-top, 0);\n --icon-margin-end: var(--nano-icon-margin-end, 0);\n --icon-margin-bottom: var(--nano-icon-margin-bottom, 0);\n --icon-margin-start: var(--nano-icon-margin-start, 0);\n\n display: inline-block;\n width: var(--icon-size);\n height: var(--icon-size);\n min-width: var(--icon-size);\n min-height: var(--icon-size);\n contain: strict;\n fill: currentcolor;\n box-sizing: content-box !important;\n transition: opacity 0.3s ease;\n color: var(--color);\n margin-inline: var(--icon-margin-start) var(--icon-margin-end);\n margin-block: var(--icon-margin-top) var(--icon-margin-bottom);\n}\n\n:host .nanoicon {\n stroke: currentcolor;\n}\n\n.nanoicon-fill-none {\n fill: none;\n}\n\n.nanoicon-stroke-width {\n stroke-width: 32px;\n stroke-width: var(--stroke-width);\n}\n\n.icon-inner,\n.nanoicon,\nsvg,\n.svg {\n display: block;\n height: 100%;\n width: 100%;\n overflow: visible;\n}\n\n:host(.loading) {\n opacity: 0;\n}\n\n.fa-primary {\n color: var(--primary-color);\n opacity: var(--primary-opacity, 1);\n}\n\n.fa-secondary {\n color: var(--secondary-color);\n opacity: var(--secondary-opacity) !important;\n}\n\n/* Icon RTL\n * -----------------------------------------------------------\n */\n:host(.flip-rtl) .icon-inner {\n transform: scaleX(-1);\n}\n\n/* Icon Sizes\n * -----------------------------------------------------------\n */\n:host(.icon-small) {\n font-size: 18px !important;\n}\n\n:host(.icon-large) {\n font-size: 32px !important;\n}\n","import {\n Build,\n Component,\n Element,\n Host,\n Prop,\n State,\n Watch,\n h,\n} from '@stencil/core';\nimport { createColorClasses } from '../../utils/theme';\nimport { getSvgContent, iconContent } from './request';\nimport { getName, getUrl } from './utils';\nimport type { Color } from '../../interface';\n\n/**\n * An SVG loader / helper. Comes bundled with all fontawesome pro icons by default but can use any custom SVG (with an correct path). Lazily loads SVG for each icon, so will only request the icons that you're using and that are visible.\n */\n@Component({\n tag: 'nano-icon',\n styleUrl: 'icon.scss',\n shadow: true,\n})\nexport class Icon {\n private io?: IntersectionObserver;\n\n @Element() el!: HTMLNanoIconElement;\n\n @State() svgContent?: string;\n @State() isVisible = false;\n @State() isLoading = true;\n\n /**\n * Color to use from your application's color palette.\n * Default options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\n */\n @Prop() color?: Color;\n\n /**\n * Specifies the label to use for accessibility. Defaults to the icon name.\n */\n @Prop({ mutable: true, reflect: true }) ariaLabel: string;\n\n /**\n * Specifies whether the icon should horizontally flip when `dir` is `\"rtl\"`.\n */\n @Prop() flipRtl?: boolean;\n\n /**\n * Specifies which icon to use from the built-in set of icons.\n */\n @Prop() name?: string;\n\n /**\n * Specifies the exact `src` of an SVG file to use.\n */\n @Prop() src?: string;\n\n /**\n * A combination of both `name` and `src`. If a `src` url is detected\n * it will set the `src` property. Otherwise it assumes it's a built-in named\n * SVG and set the `name` property.\n */\n @Prop() icon?: any;\n\n /**\n * The size of the icon.\n * Available options are: `\"small\"` and `\"large\"`.\n */\n @Prop() size?: 'small' | 'large';\n\n /**\n * If enabled, nano-icon will be loaded lazily when it's visible in the viewport.\n * Default, `true`.\n */\n @Prop() lazy = true;\n\n private setAriaLabel() {\n if (!this.ariaLabel) {\n const label = getName(this.name, this.icon);\n // user did not provide a label\n // come up with the label based on the icon name\n if (label) {\n this.ariaLabel = label.split('/').slice(-1)[0].replace(/\\-/g, ' ');\n }\n }\n }\n\n connectedCallback() {\n // purposely do not return the promise here because loading\n // the svg file should not hold up loading the app\n // only load the svg if it's visible\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadIcon();\n });\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n }\n\n componentWillLoad() {\n this.setAriaLabel();\n }\n\n private waitUntilVisible(\n el: HTMLElement,\n rootMargin: string,\n cb: () => void\n ) {\n if (\n Build.isBrowser &&\n this.lazy &&\n typeof window !== 'undefined' &&\n (window as any).IntersectionObserver\n ) {\n const io = (this.io = new (window as any).IntersectionObserver(\n (data: IntersectionObserverEntry[]) => {\n if (data[0].isIntersecting || (data[1] && data[1].isIntersecting)) {\n io.disconnect();\n this.io = undefined;\n cb();\n }\n },\n { rootMargin }\n ));\n\n io.observe(el);\n } else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n\n @Watch('name')\n @Watch('src')\n @Watch('icon')\n loadIcon() {\n if (Build.isBrowser && this.isVisible) {\n const url = getUrl(this);\n if (url) {\n if (iconContent.has(url)) {\n // sync if it's already loaded\n this.svgContent = iconContent.get(url);\n requestAnimationFrame(() => (this.isLoading = false));\n } else {\n // async if it hasn't been loaded\n getSvgContent(url).then(() => {\n this.svgContent = iconContent.get(url);\n requestAnimationFrame(() => (this.isLoading = false));\n });\n }\n }\n }\n this.setAriaLabel();\n }\n\n render() {\n const flipRtl =\n this.flipRtl ||\n (this.name &&\n (this.name.indexOf('arrow') > -1 ||\n this.name.indexOf('chevron') > -1) &&\n (this.el.ownerDocument as Document).dir === 'rtl' &&\n this.flipRtl !== false);\n\n return (\n <Host\n role=\"img\"\n class={{\n ...createColorClasses(this.color),\n loading: this.isLoading,\n [`icon-${this.size}`]: !!this.size,\n 'flip-rtl': !!flipRtl,\n }}\n >\n {Build.isBrowser && this.svgContent ? (\n <div class=\"icon-inner\" innerHTML={this.svgContent}></div>\n ) : (\n <div class=\"icon-inner\"></div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":";;;oGAGA,IAAIA,EAEG,MAAMC,EAAa,KACxB,IAAKD,EAAY,CACf,MAAME,EAAMC,OACZD,EAAIE,UAAYF,EAAIE,WAAa,GACjCJ,EAAaE,EAAIE,UAAUC,IAAMH,EAAIE,UAAUC,KAAO,IAAIC,G,CAE5D,OAAON,CAAU,EAQZ,MAAMO,EAAUC,IACrB,IAAIC,EAAMC,EAAOF,EAAEG,KACnB,GAAIF,EAAK,CACP,OAAOA,C,CAGTA,EAAMG,EAAQJ,EAAEK,KAAML,EAAEM,MACxB,GAAIL,EAAK,CACP,OAAOM,EAAYN,E,CAGrB,GAAID,EAAEM,KAAM,CACVL,EAAMC,EAAOF,EAAEM,MACf,GAAIL,EAAK,CACP,OAAOA,C,EAGX,OAAO,IAAI,EAGb,MAAMM,EAAeC,IACnB,MAAMP,EAAMR,IAAagB,IAAID,GAC7B,GAAIP,EAAK,CACP,OAAOA,C,CAET,OAAOS,EAAa,qCAAqCF,QAAe,EAGnE,MAAMJ,EAAU,CACrBI,EACAF,KAEA,IAAKE,GAAYF,IAASK,EAAML,GAAO,CACrCE,EAAWF,C,CAEb,GAAIM,EAAMJ,GAAW,CACnBA,EAAWK,EAAQL,E,CAGrB,IAAKI,EAAMJ,IAAaA,EAASM,SAAW,GAAI,CAC9C,OAAO,I,CAIT,MAAMC,EAAeP,EAASQ,QAAQ,kBAAmB,IACzD,GAAID,IAAiB,GAAI,CACvBE,QAAQC,KAAK,mCAAqCV,GAClD,OAAO,I,CAET,OAAOA,CAAQ,EAGV,MAAMN,EAAUC,IACrB,GAAIS,EAAMT,GAAM,CACdA,EAAMA,EAAIW,OACV,GAAIH,EAAMR,GAAM,CACd,OAAOA,C,EAGX,OAAO,IAAI,EAGN,MAAMQ,EAASQ,GAAgBA,EAAIC,OAAS,GAAK,UAAUC,KAAKF,GAChE,MAAMP,EAASU,UAAmCA,IAAQ,SAC1D,MAAMT,EAAWS,GAAgBA,EAAIC,cCjFrC,MAAMC,EAAmBC,IAC9B,GAAIA,EAAY,CACd,MAAMC,EAAMC,SAASC,cAAc,OACnCF,EAAIG,UAAYJ,EAGhB,IAAK,IAAIzB,EAAI0B,EAAII,WAAWV,OAAS,EAAGpB,GAAK,EAAGA,IAAK,CACnD,GAAI0B,EAAII,WAAW9B,GAAG+B,SAASR,gBAAkB,MAAO,CACtDG,EAAIM,YAAYN,EAAII,WAAW9B,G,EAKnC,MAAMiC,EAASP,EAAIQ,kBACnB,GAAID,GAAUA,EAAOF,SAASR,gBAAkB,MAAO,CACrD,MAAMY,EAAWF,EAAOG,aAAa,UAAY,GACjDH,EAAOI,aACL,SACCF,EAAW,iCAAiCrB,QAM/C,GAAIwB,EAAQL,GAAgB,CAC1B,OAAOP,EAAIG,S,GAIjB,MAAO,EAAE,EAGJ,MAAMS,EAAWC,IACtB,GAAIA,EAAIC,WAAa,EAAG,CACtB,GAAID,EAAIR,SAASR,gBAAkB,SAAU,CAC3C,OAAO,K,CAGT,IAAK,IAAIvB,EAAI,EAAGA,EAAIuC,EAAIE,WAAWrB,OAAQpB,IAAK,CAC9C,MAAMsB,EAAMiB,EAAIE,WAAWzC,GAAG0C,MAC9B,GAAI9B,EAAMU,IAAQA,EAAIC,cAAcoB,QAAQ,QAAU,EAAG,CACvD,OAAO,K,EAIX,IAAK,IAAI3C,EAAI,EAAGA,EAAIuC,EAAIT,WAAWV,OAAQpB,IAAK,CAC9C,IAAKsC,EAAQC,EAAIT,WAAW9B,IAAY,CACtC,OAAO,K,GAIb,OAAO,IAAI,ECpDN,MAAM4C,EAAc,IAAI9C,IAC/B,MAAM+C,EAAW,IAAI/C,IAEd,MAAMgD,EAAiB7C,IAE5B,IAAI8C,EAAMF,EAASpC,IAAIR,GACvB,IAAK8C,EAAK,CAERA,EAAMC,MAAM/C,GAAKgD,MAAMC,IACrB,GAAIA,EAAIC,GAAI,CACV,OAAOD,EAAIE,OAAOH,MAAMxB,IACtBmB,EAAYS,IAAIpD,EAAKuB,EAAgBC,GAAY,G,CAGrDmB,EAAYS,IAAIpD,EAAK,GAAG,IAI1B4C,EAASQ,IAAIpD,EAAK8C,E,CAEpB,OAAOA,CAAG,ECrBZ,MAAMO,EAAU,i9C,MCuBHC,EAAI,M,kEAMM,M,eACA,K,8JA6CN,I,CAEPC,eACN,IAAKC,KAAKC,UAAW,CACnB,MAAMC,EAAQvD,EAAQqD,KAAKpD,KAAMoD,KAAKnD,MAGtC,GAAIqD,EAAO,CACTF,KAAKC,UAAYC,EAAMC,MAAM,KAAKC,OAAO,GAAG,GAAG7C,QAAQ,MAAO,I,GAKpE8C,oBAIEL,KAAKM,iBAAiBN,KAAKO,GAAI,QAAQ,KACrCP,KAAKQ,UAAY,KACjBR,KAAKS,UAAU,G,CAInBC,uBACE,GAAIV,KAAKW,GAAI,CACXX,KAAKW,GAAGC,aACRZ,KAAKW,GAAKE,S,EAIdC,oBACEd,KAAKD,c,CAGCO,iBACNC,EACAQ,EACAC,GAEA,GAEEhB,KAAKiB,aACE/E,SAAW,aACjBA,OAAegF,qBAChB,CACA,MAAMP,EAAMX,KAAKW,GAAK,IAAKzE,OAAegF,sBACvCC,IACC,GAAIA,EAAK,GAAGC,gBAAmBD,EAAK,IAAMA,EAAK,GAAGC,eAAiB,CACjET,EAAGC,aACHZ,KAAKW,GAAKE,UACVG,G,IAGJ,CAAED,eAGJJ,EAAGU,QAAQd,E,KACN,CAGLS,G,EAOJP,WACE,GAAuBT,KAAKQ,UAAW,CACrC,MAAMhE,EAAMF,EAAO0D,MACnB,GAAIxD,EAAK,CACP,GAAI2C,EAAYmC,IAAI9E,GAAM,CAExBwD,KAAKhC,WAAamB,EAAYnC,IAAIR,GAClC+E,uBAAsB,IAAOvB,KAAKwB,UAAY,O,KACzC,CAELnC,EAAc7C,GAAKgD,MAAK,KACtBQ,KAAKhC,WAAamB,EAAYnC,IAAIR,GAClC+E,uBAAsB,IAAOvB,KAAKwB,UAAY,OAAO,G,GAK7DxB,KAAKD,c,CAGP0B,SACE,MAAMC,EACJ1B,KAAK0B,SACJ1B,KAAKpD,OACHoD,KAAKpD,KAAKsC,QAAQ,UAAY,GAC7Bc,KAAKpD,KAAKsC,QAAQ,YAAc,IACjCc,KAAKO,GAAGoB,cAA2BC,MAAQ,OAC5C5B,KAAK0B,UAAY,MAErB,OACEG,EAACC,EAAI,CACHC,KAAK,MACLC,MAAKC,OAAAC,OAAAD,OAAAC,OAAA,GACAC,EAAmBnC,KAAKoC,QAAM,CACjCC,QAASrC,KAAKwB,UACd,CAAC,QAAQxB,KAAKsC,UAAWtC,KAAKsC,KAC9B,aAAcZ,KAGI1B,KAAKhC,WACvB6D,EAAA,OAAKG,MAAM,aAAa5D,UAAW4B,KAAKhC,aAExC6D,EAAA,OAAKG,MAAM,e"}
|