@nanoporetech-digital/components 1.15.4 → 1.15.5
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 +11 -0
- package/dist/cjs/{algoliasearch.umd-da1e6f0c.js → algoliasearch.umd-0ccd70ce.js} +3 -3
- package/dist/cjs/{algoliasearch.umd-da1e6f0c.js.map → algoliasearch.umd-0ccd70ce.js.map} +1 -1
- package/dist/cjs/{component-store-1aa64afb.js → component-store-bda9b645.js} +107 -36
- package/dist/cjs/component-store-bda9b645.js.map +1 -0
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +1 -1
- package/dist/cjs/nano-algolia-input.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
- package/dist/cjs/nano-date-picker_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +4 -2
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +3 -2
- package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-nav-item_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-slides.cjs.entry.js +7 -6
- package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +1 -1
- package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/{popover-04a39914.js → popover-d033efa2.js} +29 -10
- package/dist/cjs/popover-d033efa2.js.map +1 -0
- package/dist/collection/components/accordion/accordion.js +1 -1
- package/dist/collection/components/alert/alert.js +1 -1
- package/dist/collection/components/algolia/algolia-filter.js +2 -2
- package/dist/collection/components/algolia/algolia-input.js +5 -5
- package/dist/collection/components/algolia/algolia-results.js +1 -1
- package/dist/collection/components/algolia/algolia.js +6 -6
- package/dist/collection/components/checkbox/checkbox-group.js +2 -2
- package/dist/collection/components/checkbox/checkbox.js +3 -3
- package/dist/collection/components/date-input/date-input.js +7 -7
- package/dist/collection/components/date-picker/date-picker.js +5 -5
- package/dist/collection/components/details/details.js +1 -1
- package/dist/collection/components/dialog/dialog.js +1 -1
- package/dist/collection/components/file-upload/file-upload.js +4 -4
- package/dist/collection/components/global-nav/global-nav.js +6 -4
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-search-results/global-search-results.js +3 -2
- package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
- package/dist/collection/components/grid/grid-item.js +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/input/input.js +5 -5
- package/dist/collection/components/nav-item/nav-item.js +4 -4
- package/dist/collection/components/range/range.js +4 -4
- package/dist/collection/components/resize-observe/resize-observe.js +1 -1
- package/dist/collection/components/select/select.js +5 -5
- package/dist/collection/components/slides/slides.js +7 -7
- package/dist/collection/components/tabs/tab-group.js +2 -2
- package/dist/collection/utils/testing/index.js +3 -2
- package/dist/collection/utils/testing/index.js.map +1 -1
- package/dist/custom-elements/index.js +147 -54
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/{algoliasearch.umd-1bf96913.js → algoliasearch.umd-8e5aff52.js} +3 -3
- package/dist/esm/{algoliasearch.umd-1bf96913.js.map → algoliasearch.umd-8e5aff52.js.map} +1 -1
- package/dist/esm/{component-store-f0e6cb24.js → component-store-08f430dd.js} +107 -36
- package/dist/esm/component-store-08f430dd.js.map +1 -0
- package/dist/esm/nano-algolia-filter.entry.js +1 -1
- package/dist/esm/nano-algolia-input.entry.js +2 -2
- package/dist/esm/nano-algolia.entry.js +2 -2
- package/dist/esm/nano-date-picker_2.entry.js +1 -1
- package/dist/esm/nano-dialog.entry.js +1 -1
- package/dist/esm/nano-global-nav.entry.js +4 -2
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +3 -2
- package/dist/esm/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm/nano-nav-item_2.entry.js +1 -1
- package/dist/esm/nano-slides.entry.js +7 -6
- package/dist/esm/nano-slides.entry.js.map +1 -1
- package/dist/esm/nano-tab-group.entry.js +1 -1
- package/dist/esm/nano-tooltip.entry.js +1 -1
- package/dist/esm/{popover-9169205e.js → popover-2c7b2326.js} +29 -10
- package/dist/esm/popover-2c7b2326.js.map +1 -0
- package/dist/esm-es5/{algoliasearch.umd-1bf96913.js → algoliasearch.umd-8e5aff52.js} +3 -3
- package/dist/esm-es5/{algoliasearch.umd-1bf96913.js.map → algoliasearch.umd-8e5aff52.js.map} +1 -1
- package/dist/esm-es5/component-store-08f430dd.js +5 -0
- package/dist/esm-es5/component-store-08f430dd.js.map +1 -0
- package/dist/esm-es5/nano-algolia-filter.entry.js +1 -1
- package/dist/esm-es5/nano-algolia-input.entry.js +1 -1
- package/dist/esm-es5/nano-algolia.entry.js +1 -1
- package/dist/esm-es5/nano-date-picker_2.entry.js +1 -1
- package/dist/esm-es5/nano-dialog.entry.js +1 -1
- package/dist/esm-es5/nano-global-nav.entry.js +1 -1
- package/dist/esm-es5/nano-global-nav.entry.js.map +1 -1
- package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
- package/dist/esm-es5/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
- package/dist/esm-es5/nano-slides.entry.js +3 -3
- package/dist/esm-es5/nano-slides.entry.js.map +1 -1
- package/dist/esm-es5/nano-tab-group.entry.js +1 -1
- package/dist/esm-es5/nano-tooltip.entry.js +1 -1
- package/dist/esm-es5/popover-2c7b2326.js +5 -0
- package/dist/esm-es5/popover-2c7b2326.js.map +1 -0
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/{p-89dc184e.system.entry.js → p-014f62dc.system.entry.js} +2 -2
- package/dist/nano-components/{p-89dc184e.system.entry.js.map → p-014f62dc.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-beee3c85.system.entry.js → p-03104b3a.system.entry.js} +2 -2
- package/dist/nano-components/{p-beee3c85.system.entry.js.map → p-03104b3a.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-26dcb670.system.entry.js → p-12ad4144.system.entry.js} +2 -2
- package/dist/nano-components/{p-26dcb670.system.entry.js.map → p-12ad4144.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-7b0c0c51.entry.js → p-2bf707e3.entry.js} +4 -4
- package/dist/nano-components/{p-7b0c0c51.entry.js.map → p-2bf707e3.entry.js.map} +1 -1
- package/dist/nano-components/{p-22a51b34.system.entry.js → p-2c34907c.system.entry.js} +2 -2
- package/dist/nano-components/{p-22a51b34.system.entry.js.map → p-2c34907c.system.entry.js.map} +0 -0
- package/dist/nano-components/p-2df9e977.system.entry.js +5 -0
- package/dist/nano-components/p-2df9e977.system.entry.js.map +1 -0
- package/dist/nano-components/{p-dbbf7b9d.system.entry.js → p-31ade697.system.entry.js} +2 -2
- package/dist/nano-components/{p-dbbf7b9d.system.entry.js.map → p-31ade697.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-81248be1.entry.js → p-3d1328a2.entry.js} +2 -2
- package/dist/nano-components/{p-81248be1.entry.js.map → p-3d1328a2.entry.js.map} +0 -0
- package/dist/nano-components/p-3f00179c.js +5 -0
- package/dist/nano-components/p-3f00179c.js.map +1 -0
- package/dist/nano-components/{p-78c2b685.entry.js → p-457864f2.entry.js} +2 -2
- package/dist/nano-components/{p-78c2b685.entry.js.map → p-457864f2.entry.js.map} +0 -0
- package/dist/nano-components/{p-b499e206.system.entry.js → p-568b607c.system.entry.js} +2 -2
- package/dist/nano-components/{p-b499e206.system.entry.js.map → p-568b607c.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-7dc55b56.system.entry.js → p-5dbb9fb7.system.entry.js} +4 -4
- package/dist/nano-components/{p-7dc55b56.system.entry.js.map → p-5dbb9fb7.system.entry.js.map} +1 -1
- package/dist/nano-components/p-7154bfd9.system.js +1 -1
- package/dist/nano-components/p-71b5ba7f.system.js +5 -0
- package/dist/nano-components/p-71b5ba7f.system.js.map +1 -0
- package/dist/nano-components/{p-6e2cc669.entry.js → p-75f1499e.entry.js} +2 -2
- package/dist/nano-components/{p-6e2cc669.entry.js.map → p-75f1499e.entry.js.map} +0 -0
- package/dist/nano-components/p-7dd28543.js +5 -0
- package/dist/nano-components/p-7dd28543.js.map +1 -0
- package/dist/nano-components/{p-d79e5a9b.entry.js → p-8387377a.entry.js} +2 -2
- package/dist/nano-components/{p-d79e5a9b.entry.js.map → p-8387377a.entry.js.map} +0 -0
- package/dist/nano-components/{p-3bbdfb96.js → p-8757b4eb.js} +3 -3
- package/dist/nano-components/{p-3bbdfb96.js.map → p-8757b4eb.js.map} +1 -1
- package/dist/nano-components/{p-a32b6a4a.entry.js → p-95c8e898.entry.js} +2 -2
- package/dist/nano-components/{p-a32b6a4a.entry.js.map → p-95c8e898.entry.js.map} +0 -0
- package/dist/nano-components/{p-5e8e5fc0.system.entry.js → p-9d38cc3e.system.entry.js} +2 -2
- package/dist/nano-components/{p-5e8e5fc0.system.entry.js.map → p-9d38cc3e.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-25c9fb70.system.js → p-a16651a6.system.js} +3 -3
- package/dist/nano-components/{p-25c9fb70.system.js.map → p-a16651a6.system.js.map} +1 -1
- package/dist/nano-components/{p-d82e941d.system.entry.js → p-b15362c6.system.entry.js} +2 -2
- package/dist/nano-components/p-b15362c6.system.entry.js.map +1 -0
- package/dist/nano-components/{p-80573547.entry.js → p-b198296f.entry.js} +2 -2
- package/dist/nano-components/{p-80573547.entry.js.map → p-b198296f.entry.js.map} +0 -0
- package/dist/nano-components/p-d31761c8.system.js +5 -0
- package/dist/nano-components/p-d31761c8.system.js.map +1 -0
- package/dist/nano-components/{p-4948b950.entry.js → p-d6d1a8c2.entry.js} +2 -2
- package/dist/nano-components/{p-4948b950.entry.js.map → p-d6d1a8c2.entry.js.map} +0 -0
- package/dist/nano-components/{p-fb75dd54.entry.js → p-d99e661e.entry.js} +2 -2
- package/dist/nano-components/p-d99e661e.entry.js.map +1 -0
- package/dist/nano-components/{p-43d1b037.entry.js → p-e53a485b.entry.js} +2 -2
- package/dist/nano-components/{p-43d1b037.entry.js.map → p-e53a485b.entry.js.map} +0 -0
- package/dist/nano-components/p-e669e7d5.entry.js +5 -0
- package/dist/nano-components/p-e669e7d5.entry.js.map +1 -0
- package/dist/nano-components/{p-980231d8.system.entry.js → p-f4b06615.system.entry.js} +2 -2
- package/dist/nano-components/{p-980231d8.system.entry.js.map → p-f4b06615.system.entry.js.map} +0 -0
- package/dist/types/utils/testing/index.d.ts +3 -1
- package/docs-json.json +1 -1
- package/package.json +4 -4
- package/dist/cjs/component-store-1aa64afb.js.map +0 -1
- package/dist/cjs/popover-04a39914.js.map +0 -1
- package/dist/esm/component-store-f0e6cb24.js.map +0 -1
- package/dist/esm/popover-9169205e.js.map +0 -1
- package/dist/esm-es5/component-store-f0e6cb24.js +0 -5
- package/dist/esm-es5/component-store-f0e6cb24.js.map +0 -1
- package/dist/esm-es5/popover-9169205e.js +0 -5
- package/dist/esm-es5/popover-9169205e.js.map +0 -1
- package/dist/nano-components/p-0c6ab963.system.js +0 -5
- package/dist/nano-components/p-0c6ab963.system.js.map +0 -1
- package/dist/nano-components/p-42498146.js +0 -5
- package/dist/nano-components/p-42498146.js.map +0 -1
- package/dist/nano-components/p-4ee6f8e7.entry.js +0 -5
- package/dist/nano-components/p-4ee6f8e7.entry.js.map +0 -1
- package/dist/nano-components/p-8766e262.js +0 -5
- package/dist/nano-components/p-8766e262.js.map +0 -1
- package/dist/nano-components/p-d82e941d.system.entry.js.map +0 -1
- package/dist/nano-components/p-f1f2a010.system.entry.js +0 -5
- package/dist/nano-components/p-f1f2a010.system.entry.js.map +0 -1
- package/dist/nano-components/p-f65a1ff4.system.js +0 -5
- package/dist/nano-components/p-f65a1ff4.system.js.map +0 -1
- package/dist/nano-components/p-fb75dd54.entry.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["src/utils/fetch.ts","src/components/global-nav/global-nav.scss?tag=nano-global-nav&encapsulation=shadow","src/components/global-nav/global-nav.tsx"],"names":["async","clientFetch","url","_a","body","customConfig","__rest","headers","Accept","Access-Control-Allow-Origin","Content-Type","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","THRESHOLDLIMIT","GlobalNav","[object Object]","hostRef","this","currSize","thresholdsGoingUp","autocompleteEles","currAIndex","isLoggedIn","myAccData","aboutNavItms","siteNavItms","loggedInNavItms","hasLoggedinSlot","hasSiteSlot","hasPromotionSlot","aboutSlotLen","iconSlotLen","mainSlotLen","overflowSlotLen","searchSlotLen","internalSearchIndeces","thresholdReady","remoteDataReady","ready","isResizing","threshold","modalOpen","modalIsOpen","searchBarShown","scrollingUp","searchLoading","showAutocomplete","secondaryMenuOpen","userMenuOpen","menuFullScreen","searchValInternal","env","ssoRedirect","encodeURIComponent","location","href","getMyAccountData","activeMyAccountSections","showSearch","showLogo","logoUrl","protocol","host","searchIndeces","myAccountUser","searchValue","searchIndex","cartCount","msgCount","cartUrl","msgUrl","setResizingState","state","debounceSetResizingState","debounce","onMenuBtnKeyDown","ev","key","menuClose","menuOpen","onMenuBtnClick","e","preventDefault","menuDiv","style","display","menuWrapDiv","addEventListener","focus","preventScroll","scrollHeight","innerHeight","document","overflow","overflowX","onMenuHidden","removeEventListener","activeElement","menuBtn","mainBarDiv","force","relatedTarget","closestElement","closest","subMenuClose","target","open","onUserBtnClick","onUserBtnKeyDown","onUserMenuBlur","onSearchBtnClick","searchbarShow","searchbarHide","onSearchBtnKeyDown","onSearchBarShown","searchBarEl","searchInput","setFocus","length","onSearchBarHidden","height","onSearchInput","value","isSearchValSet","detail","onSearchSubmit","onSearchChange","autocompleteResults","nanoSearchReset","emit","currentIndex","currentSelectedIndex","processSearchResults","alogliaIndex","search","attributesToSnippet","hitsPerPage","filters","Math","floor","Date","now","console","error","scopeSearch","showAutocompleteResults","algoliaSearchResults","queries","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","switchIndexSubmit","onAutocompleteBlur","hits","onAutocompleteInteract","testIndex","el","shadowRoot","found","ele","setActiveElement","click","foundIndex","algoliasearch","addAlgoliaIndeces","forEach","initIndex","newThreshold","oldThreshold","intersectRatio","ratioChange","siteContent","minHeight","barsDiv","clientHeight","menuItems","barItems","readTask","Array","from","querySelectorAll","push","writeTask","item","classList","add","remove","attachIO","nanoIsReady","classes","innerWidth","secondaryMenu","stopPropagation","menuContentDiv","displayTransition","userLinkPanel","querySelector","hit","lookFor","_snippetResult","prop","matchLevel","title","substring","autocompleteEle","setAttribute","io","root","IntersectionObserver","data","slice","intersectionRatio","observe","debounceResize","onWindowResize","bind","initAlgoliaClient","ComponentStore","init","MutationObserver","mo","assessSlottedContent","childList","subtree","disconnect","undefined","getMyAccData","content","currentScopeHits","scopeChangeSuggestions","scopeSuggestReducer","total","currentSuggestReducer","reduce","scopeSuggestions","h","class","role","ref","a","tabindex","innerHTML","autocompleteSnippet","button","onClick","onMouseDown","aria-expanded","hidden","onSubmit","label","hideLabel","showInlineError","onNanoChange","mask","slot","aria-label","clear-input","placeholder","type","input","onNanoInput","aria-autocomplete","aria-activedescendant","aria-controls","onNanoFocus","search-icon","search-icon--search","search-icon--show","search-icon--loader","isRtl","ownerDocument","dir","searchWidget","autocompleteList","Host","thresholdClasses","join","search-bar-shown","search-auto-complete-shown","modal-open","resizing","global-nav","scrolling-down","menu","has-promotion","menu-full-screen","secondary-open","div","onKeyDown","includes","urls","login","link","address","forgot_password","logout","auto-resize","break-point-max","quietMode","w","btn","src","getAssetPath","alt","aria-owns","icon-btn","user-links-btn","search-bar","show","onTouchEnd","origin","dm","multiResults","singleResult","match","domainFor","__sc_import_nano_components","user","processMyAccLinks","processMyAccData","indeces","api_key","app_id","cart","count","notifications","messages","links","area"],"mappings":";;;+oBAMOA,eAAeC,EACpBC,EACAC,EAA8C,QAA9CC,KAAEA,GAAID,EAAKE,EAAYC,EAAAH,EAAvB,CAAA,SAEA,MAAMI,EAAsC,CAC1CC,OAAQ,oCACRC,8BAA+B,IAC/BC,eAAgB,mBAChBC,MAAO,YAET,MAAMC,EAAMC,OAAAC,OAAAD,OAAAC,OAAA,CACVC,OAAQX,EAAO,OAAS,MACxBY,YAAa,UACbC,UAAW,KACXC,KAAM,QACHb,GAAY,CACfE,QAAOM,OAAAC,OAAAD,OAAAC,OAAA,GACFP,GACAF,EAAaE,WAGpB,GAAIH,EAAM,CACRQ,EAAOR,KAAOe,KAAKC,UAAUhB,GAG/B,IAAIiB,EAAKC,YAAW,QAAU,GAC9B,GAAIC,OAAOC,gBAAiB,CAC1B,MAAMC,EAAa,IAAID,gBACvB,MAAME,QAAEA,EAAU,KAAQrB,EAC1BgB,EAAKC,YAAW,IAAMG,EAAWE,SAASD,GAC1Cd,EAAOgB,OAASH,EAAWG,OAG7B,MAAMC,QAAiBC,MAAM5B,EAAKU,GAClCmB,aAAaV,GAEb,GAAIQ,EAASG,GAAI,CACf,aAAaH,EAASI,WACjB,CACL,MAAMC,QAAqBL,EAASM,OACpC,OAAO,IAAIC,MAAMF,IC9CrB,MAAMG,EAAe,ohqBC4ErB,MAAMC,EAAiB,MAwBVC,EAAS,MANtBC,YAAAC,2MAWUC,KAAAC,SAAmB,EACnBD,KAAAE,kBAA6B,MAc7BF,KAAAG,iBAAiE,GACjEH,KAAAI,YAAsB,EAStBJ,KAAAK,WAAsB,MAEtBL,KAAAM,UAA2B,KAG3BN,KAAAO,aAAgC,GAChCP,KAAAQ,YAA+B,GAC/BR,KAAAS,gBAAmC,GAIlCT,KAAAU,gBAA2B,MAC3BV,KAAAW,YAAuB,MACvBX,KAAAY,iBAA4B,MAG5BZ,KAAAa,aAAuB,EACvBb,KAAAc,YAAsB,EACtBd,KAAAe,YAAsB,EACtBf,KAAAgB,gBAA0B,EAC1BhB,KAAAiB,cAAwB,EAExBjB,KAAAkB,sBAA4C,GAC5ClB,KAAAmB,eAA0B,MAC1BnB,KAAAoB,gBAA2B,MAC3BpB,KAAAqB,MAAiB,MACjBrB,KAAAsB,WAAsB,MAEtBtB,KAAAuB,UAAoB3B,EACpBI,KAAAwB,UAAqB,MACrBxB,KAAAyB,YAAuB,MACvBzB,KAAA0B,eAA0B,MAC1B1B,KAAA2B,YAAuB,KACvB3B,KAAA4B,cAAyB,MACzB5B,KAAA6B,iBAA4B,MAC5B7B,KAAA8B,kBAA6B,MAC7B9B,KAAA+B,aAAwB,MACxB/B,KAAAgC,eAA0B,MAC1BhC,KAAAiC,kBAA4B,GAQ7BjC,KAAAkC,IAAyC,OAKzClC,KAAAmC,YAAsBC,mBAAmBvD,OAAOwD,SAASC,MAKzDtC,KAAAuC,iBAA4B,KAK5BvC,KAAAwC,wBAKF,KAKExC,KAAAyC,WAAsB,KAKtBzC,KAAA0C,SAAoB,KAKpB1C,KAAA2C,QAAkBN,SAASO,SAAW,KAAOP,SAASQ,KAKtD7C,KAAA8C,cAAoC,GAKnB9C,KAAA+C,cASrB,KAeqB/C,KAAAgD,YAAsB,GAKtBhD,KAAAiD,YAAsB,cAKtBjD,KAAAkD,UAAoB,EAKpBlD,KAAAmD,SAAmB,EAKnBnD,KAAAoD,QAAkB,KAKlBpD,KAAAqD,OAAiB,KAiQlCrD,KAAAsD,iBAAmB,CAACC,EAAiB,SAC3C,UAAWvD,KAAKwD,2BAA6B,YAAa,CACxDxD,KAAKwD,yBAA2BC,EAASzD,KAAKsD,iBAAkB,KAElE,GAAIC,EAAO,CACTvD,KAAKsB,WAAa,KAClBtB,KAAKwD,+BACA,CACLxD,KAAKsB,WAAa,MAClBtB,KAAKE,kBAAoB,QAkCrBF,KAAA0D,iBAAoBC,IAC1B,OAAQA,EAAGC,KACT,IAAK,QACL,IAAK,IACH5D,KAAKwB,UAAYxB,KAAK6D,UAAUF,EAAI,MAAQ3D,KAAK8D,WACjD,QAIE9D,KAAA+D,eAAkBJ,IACxB3D,KAAK6D,UAAUF,EAAI,OAGb3D,KAAA8D,SAAYE,IAClB,GAAIA,EAAGA,EAAEC,iBAETjE,KAAKkE,QAAQC,MAAMC,QAAU,QAO7BpE,KAAKwB,UAAY,KACjBxB,KAAKyB,YAAc,KACnBzB,KAAKqE,YAAYC,iBAAiB,WAAYtE,KAAK6D,WAInD7D,KAAKqE,YAAYE,MAAM,CAAEC,cAAe,OACxC,GACExE,KAAKuB,UAAY,GACjBvB,KAAKqE,YAAYI,aAAe5F,OAAO6F,YACvC,CACAC,SAASjH,KAAKyG,MAAMS,SAAW,SAC/B5E,KAAKgC,eAAiB,UACjB2C,SAASjH,KAAKyG,MAAMU,UAAY,UAGjC7E,KAAA8E,aAAe,KACrB9E,KAAKkE,QAAQa,oBAAoB,gBAAiB/E,KAAK8E,cACvD9E,KAAKqE,YAAYU,oBAAoB,WAAY/E,KAAK6D,WAEtDc,SAASjH,KAAKyG,MAAMS,SAAW,GAC/B5E,KAAKkE,QAAQC,MAAMC,QAAU,OAC7BpE,KAAKyB,YAAc,MACnBzB,KAAKgC,eAAiB,MAEtBpD,YAAW,KACT,GAAI+F,SAASK,gBAAkBL,SAASjH,MAAQsC,KAAKiF,QACnDjF,KAAKkF,WAAWX,MAAM,CAAEC,cAAe,SACxC,KAGGxE,KAAA6D,UAAY,CAClBF,EACAwB,EAAiB,SAEjB,IAAKA,EAAO,CACV,IAAInB,EAAIL,EACR,GACEK,GACAA,EAAEoB,eACFC,EAAe,mBAAoBrB,EAAEoB,eAErC,OACF,GACEpB,GACAA,EAAEoB,eACDpB,EAAEoB,cAA8BE,QAAQ,oBAEzC,OACF,GACEtB,GACAA,EAAEoB,eACDpB,EAAEoB,cAA8BE,QAAQ,sBAEzC,OACF,GAAItF,KAAK8B,kBAAmB,OAG9B9B,KAAKwB,UAAY,MACjBxB,KAAKkE,QAAQI,iBAAiB,gBAAiBtE,KAAK8E,eAG9C9E,KAAAuF,aAAgB5B,IACtBA,EAAGM,iBACFN,EAAG6B,OAAkCF,QAAQ,iBAAiBG,KAAO,OAKhEzF,KAAA0F,eAAkB/B,IACxBA,EAAGM,iBACHjE,KAAK+B,cAAgB/B,KAAK+B,cAGpB/B,KAAA2F,iBAAoBhC,IAC1B,OAAQA,EAAGC,KACT,IAAK,QACL,IAAK,IACH5D,KAAK+B,cAAgB/B,KAAK+B,aAC1B,QAIE/B,KAAA4F,eAAkBjC,IACxB,IAAKA,EAAGyB,cAAe,CACrBpF,KAAK+B,aAAe,MACpB,OAEF,KAAO4B,EAAGyB,cAA8BE,QAAQ,qBAC9C,OAAO,MACTtF,KAAK+B,aAAe,OAiBd/B,KAAA6F,iBAAoBlC,IAC1BA,EAAGM,iBACH,IAAKjE,KAAK0B,eAAgB1B,KAAK8F,qBAC1B9F,KAAK+F,iBAGJ/F,KAAAgG,mBAAsBrC,IAC5B,OAAQA,EAAGC,KACT,IAAK,QACL,IAAK,IACH5D,KAAK0B,eAAiB1B,KAAK+F,gBAAkB/F,KAAK8F,gBAClD,QAeE9F,KAAAiG,iBAAmB,KACzBjG,KAAKkG,YAAYnB,oBACf,gBACA/E,KAAKiG,kBAEP,GAAIjG,KAAKmG,YAAanG,KAAKmG,YAAYC,WACvCpG,KAAKkG,YAAY/B,MAAMS,SAAW,WAG5B5E,KAAA+F,cAAiBpC,IACvB,GACEA,GACAA,EAAGyB,eACFzB,EAAGyB,cAA8BE,QAAQ,0BAE1C,OACFtF,KAAK6B,iBAAmB,MACxB,GAAI7B,KAAKiC,kBAAkBoE,QAAU1C,EAAI,OAEzC3D,KAAKkG,YAAY5B,iBAAiB,gBAAiBtE,KAAKsG,mBACxDtG,KAAKkG,YAAY/B,MAAMS,SAAW,SAClC5E,KAAKkG,YAAY/B,MAAMoC,OAAS,OAG1BvG,KAAAsG,kBAAoB,KAC1BtG,KAAKkG,YAAYnB,oBACf,gBACA/E,KAAKsG,mBAEPtG,KAAKkG,YAAY/B,MAAMC,QAAU,OACjCpE,KAAK0B,eAAiB,OA6BhB1B,KAAAwG,cAAiB7C,IACvB3D,KAAK6B,iBAAmB,MACxB7B,KAAKiC,kBAAoBjC,KAAKmG,YAAYM,MAE1C,IAAKzG,KAAK0G,iBAAkB,CAC1B1G,KAAK4B,cAAgB,MACrB,OAEF5B,KAAK4B,cAAgB,KAErB,OAAQ+B,EAAGgD,OAAO/C,KAChB,IAAK,QACH5D,KAAK4G,iBACL,QAIE5G,KAAA6G,eAAiBvJ,MAAOqG,IAC9B3D,KAAKiC,kBAAoBjC,KAAKgD,YAAcW,EACxCA,EAAGgD,OAAOF,MACVzG,KAAKiC,kBACTjC,KAAK6B,iBAAmB,MACxB7B,KAAK8G,oBAAsB,KAE3B,IAAK9G,KAAK0G,iBAAkB,CAC1B,IAAK1G,KAAKiC,kBAAkBoE,OAAQ,CAClCrG,KAAK+G,gBAAgBC,OAEvBhH,KAAK4B,cAAgB,MACrB,OAEF,IAAK5B,KAAKiH,aAAcjH,KAAKkH,uBAE7B,IACElH,KAAK8G,oBAAsB9G,KAAKmH,2BACvBnH,KAAKiH,aAAaG,aAAaC,OAAOrH,KAAKiC,kBAAmB,CACnEqF,oBAAqB,CAAC,SAAU,WAChCC,YAAa,EACbC,QAAS,aAAeC,KAAKC,OAAOC,KAAKC,MAAQ,UAAe,QAGpE,MAAO5D,GACP6D,QAAQC,MAAM9D,GAGhBhE,KAAK+H,YAAc,KACnB/H,KAAK+H,kBAAoB/H,KAAK4G,eAAe,KAAM,OAEnD5G,KAAK4B,cAAgB,MACrB5B,KAAKgI,2BAGChI,KAAA4G,eAAiBtJ,MAAOqG,EAAKqD,EAAgB,QACnD,GAAIrD,EAAIA,EAAGM,iBACX,IAAKjE,KAAK0G,iBAAkB,OAC5B1G,KAAK4B,cAAgB,KACrB5B,KAAKiI,qBAAuB,KAE5B,IAAKjI,KAAKiH,aAAcjH,KAAKkH,uBAE7B,IAAIgB,EAAUlI,KAAKkB,sBAAsBiH,KAAKC,IACrC,CACLC,UAAWD,EAAMA,MACjBE,MAAOtI,KAAKiC,kBACZsG,OAAQH,EAAMZ,QACdD,YAAa,GACbC,QAAS,aAAeC,KAAKC,OAAOC,KAAKC,MAAQ,UAAe,SAIpE,IACE5H,KAAKiI,qBAAuBjI,KAAKmH,2BACxBnH,KAAKwI,cAAcC,gBAAgBP,IAE5C,MAAOlE,GACPhE,KAAK0I,gBAAgB1B,KAAKhD,GAE5BhE,KAAK4B,cAAgB,MACrB,IAAK5B,KAAKiI,qBAAsB,OAEhCjI,KAAKiI,qBAAqBU,QAAQR,KAAI,CAACS,EAAQC,KAC7CD,EAAOP,UAAYrI,KAAKkB,sBAAsB2H,GAAGC,KACjDF,EAAOG,SACL/I,KAAKiH,aAAa6B,OAAS9I,KAAKkB,sBAAsB2H,GAAGC,KAC3DF,EAAOI,OAAShJ,KAAKiH,aAAa+B,QAAU,KAC5CJ,EAAOK,QAAUjJ,KAAKM,UAAU2I,SAAW,KAC3CL,EAAOM,WAAalJ,KAAKkB,sBAAsB2H,GAAGK,SAClDN,EAAOpB,QAAUxH,KAAKkB,sBAAsB2H,GAAGrB,WAGjD,GAAIR,EAAM,CACRhH,KAAKmJ,iBAAiBnC,KAAK,CACzB2B,QAAS3I,KAAKiI,qBAAqBU,QACnCS,OAAQ,CAAEC,OAAQrJ,KAAKsJ,aAAcC,MAAOvJ,KAAKwJ,eAEnDxJ,KAAK6B,iBAAmB,MAE1B,OAAO7B,KAAKiI,sBAGNjI,KAAAyJ,oBAAsBnM,MAC5B8K,IAEA,IAAIzE,EAAKyE,EACT,IAAIsB,EAAWtB,EAEf,IAAKpI,KAAKiH,aAAcjH,KAAKkH,uBAE7B,GAAIvD,EAAGgD,QAAUhD,EAAGgD,OAAOF,MAAMJ,OAC/BqD,EAAW/F,EAAGgD,OAAOF,MACvB,IAAKiD,IAAaA,EAASrD,OAAQ,OACnC,GAAIrG,KAAKiH,aAAamB,QAAUsB,EAAU,OAE1C,IAAIC,EAAgB3J,KAAKkB,sBAAsB0I,MAC5CxB,GAAUA,EAAMA,QAAUsB,IAE7B,IAAKC,IAAkBA,EAAcvC,aAAc,OAEnDpH,KAAKiD,YAAc0G,EAAcvB,MACjC,GAAIpI,KAAK0G,uBAAwB1G,KAAK6G,kBAQhC7G,KAAA6J,kBAAoBvM,MAAO8K,IACjC,GAAIpI,KAAK0G,iBAAkB,OACnB1G,KAAKyJ,oBAAoBrB,GAC/BpI,KAAK4G,sBACA5G,KAAKyJ,oBAAoBrB,IAU1BpI,KAAA8J,mBAAsBnG,IAC5B,IAAK3D,KAAK6B,mBAAqB7B,KAAK8G,oBAAqB,OACzD,GAAInD,GAAMA,EAAG6B,QAAW7B,EAAG6B,OAAuBF,QAAQ,kBACxD,OACFtF,KAAK6B,iBAAmB,OAGlB7B,KAAAgI,wBAA0B,KAChC,IAAKhI,KAAK8G,sBAAwB9G,KAAK8G,oBAAoBiD,KAAM,OACjE/J,KAAK6B,iBAAmB,MAalB7B,KAAAgK,uBAA0BrG,IAEhC,IAAK3D,KAAK6B,mBAAqB7B,KAAK8G,oBAAqB,OACzD,IAAImD,EAAYjK,KAAKI,WAErB,OAAQuD,EAAGC,KACT,IAAK,MACHhF,YAAW,KACT,IACGoB,KAAKkK,GAAGC,WAAWnF,gBACnBhF,KAAKkK,GAAGC,WAAWnF,cAAcM,QAAQ,kBAC1C,CACAtF,KAAK6B,iBAAmB,MACxB,WACK,CACL,IAAIuI,EAAQpK,KAAKG,iBAAiByJ,MAAK,CAACS,EAAKxB,KAC3C,GAAIwB,IAAQrK,KAAKkK,GAAGC,WAAWnF,cAAe,CAC5ChF,KAAKI,WAAayI,EAClB,OAAO,SAGX,GAAIuB,EAAOpK,KAAKsK,iBAAiBF,QAC5BpK,KAAKI,YAAc,MAG5B,MACF,IAAK,YACL,IAAK,UACH,GAAIuD,EAAGC,MAAQ,YAAaqG,SACvB,GAAItG,EAAGC,MAAQ,UAAWqG,IAE/B,IAAIG,EAAQpK,KAAKG,iBAAiB8J,GAClC,GACEG,GACAH,EAAY,GACZA,EAAYjK,KAAKG,iBAAiBkG,OAAS,EAE3C1C,EAAGM,iBAGL,GAAImG,EAAO,CACTpK,KAAKsK,iBAAiBF,GACtBpK,KAAKI,WAAa6J,OACb,GAAIA,EAAY,EAAG,CACxBjK,KAAKmG,YAAYC,WACjBpG,KAAKI,YAAc,EAErB,MACF,IAAK,QACL,IAAK,IACH,GAAIJ,KAAKG,iBAAiBH,KAAKI,YAAa,CAC1CJ,KAAKG,iBAAiBH,KAAKI,YAAYmK,QAEzC,QAjsBNzK,qBACEE,KAAK4G,iBACL5G,KAAK6B,iBAAmB,MACxB,OAIF/B,uBACE,IAAKE,KAAKkB,sBAAsBmF,OAAQ,CACtC,OAGF,IAAImE,EAAaxK,KAAKkB,sBAAsB0I,MACzCxB,GAAUA,EAAMA,QAAUpI,KAAKiD,cAGlC,IAAKuH,EAAY,CACfxK,KAAKiH,aAAejH,KAAKkB,sBAAsB,GAC/C2G,QAAQC,MAAM,mBACd,OAGF9H,KAAKiH,aAAeuD,EACpB,OAAOA,EAIT1K,0BACE,GAAIE,KAAKiC,oBAAsBjC,KAAKgD,YAClChD,KAAKgD,YAAchD,KAAKiC,kBAK5BnC,oBACE,IAAKE,KAAKwJ,cAAgBxJ,KAAKsJ,aAAc,OAE7CtJ,KAAKwI,cAAgBiC,EAAczK,KAAKwJ,YAAaxJ,KAAKsJ,cAC1DtJ,KAAK0K,oBAIP5K,aACEE,KAAKkB,sBAAwB,IACxBlB,KAAKkB,yBACLlB,KAAK8C,eAKZhD,oBACE,IAAKE,KAAKwI,gBAAkBxI,KAAKkB,sBAAsBmF,OAAQ,OAE/DrG,KAAKkB,sBAAsByJ,SAAS1H,IAClCA,EAAYmE,aAAepH,KAAKwI,cAAcoC,UAC5C3H,EAAYmF,UAGhB,IAAKpI,KAAKiD,YACRjD,KAAKiD,YAAcjD,KAAKkB,sBAAsB,GAAGkH,MAIrDtI,gBAAgB+K,EAAcC,GAC5B,GAAID,EAAeC,EAAc,CAE/B9K,KAAKE,kBAAoB,KACzBF,KAAKsD,iBAAiB,OAS1BxD,cACE,GAAIE,KAAK+K,eAAiB,GAAK/K,KAAKuB,UAAY,EAAG,CAEjD,GAAIvB,KAAKE,kBAAmBF,KAAKsD,iBAAiB,MAClDtD,KAAKuB,YACL3C,YAAW,IAAMoB,KAAKgL,eAAe,SAChC,CACLhL,KAAKmB,eAAiB,KAGtBnB,KAAKiL,YAAY9G,MAAM+G,UAAY,eACjClL,KAAKmL,QAAQC,aAAe,OAG9B,IAAIC,EAA2BC,EAC/BC,GAAS,KACPF,EAAY,IACPG,MAAMC,KAAKzL,KAAKkK,GAAGwB,iBAAiB,kCACpCF,MAAMC,KACPzL,KAAKkK,GAAGwB,iBAAiB,oCAG7BJ,EAAW,GAEX,GAAItL,KAAKuB,UAAY3B,EAAiB,EACpCyL,EAAUM,QACLH,MAAMC,KACPzL,KAAKkK,GAAGwB,iBAAiB,qCAI7BJ,EAASK,QACJH,MAAMC,KACPzL,KAAKkK,GAAGwB,iBAAiB,gCAI/B,GAAI1L,KAAKuB,UAAY3B,EAAiB,EACpCyL,EAAUM,QACLH,MAAMC,KACPzL,KAAKkK,GAAGwB,iBAAiB,yCAI7BJ,EAASK,QACJH,MAAMC,KACPzL,KAAKkK,GAAGwB,iBAAiB,oCAI/B,GAAI1L,KAAKuB,UAAY3B,EAAiB,EACpCyL,EAAUM,QACLH,MAAMC,KACPzL,KAAKkK,GAAGwB,iBAAiB,qCAI7BJ,EAASK,QACJH,MAAMC,KACPzL,KAAKkK,GAAGwB,iBAAiB,gCAI/B,GAAI1L,KAAKuB,UAAY3B,EAAiB,EACpCyL,EAAUM,QACLH,MAAMC,KACPzL,KAAKkK,GAAGwB,iBAAiB,sCAI7BJ,EAASK,QACJH,MAAMC,KACPzL,KAAKkK,GAAGwB,iBAAiB,oCAKjCE,GAAU,KACRP,EAAUV,SAASkB,IACjBA,EAAKC,UAAUC,IAAI,wBACnBF,EAAKC,UAAUE,OAAO,0BAExBV,EAASX,SAASkB,IAChBA,EAAKC,UAAUE,OAAO,wBACtBH,EAAKC,UAAUC,IAAI,8BAQ3BjM,cACE,GAAIE,KAAKmB,gBAAkBnB,KAAKoB,gBAAiB,CAC/CpB,KAAKqB,MAAQ,MAKjBvB,cACEE,KAAKiM,WAIPnM,UACEE,KAAKkM,YAAYlF,OAOnBlH,wBAEE,GAAIE,KAAK6B,iBAAkB,CACzB7B,KAAKkK,GAAGC,WAAW7F,iBAAiB,QAAStE,KAAK8J,oBAClD9J,KAAKkK,GAAGC,WAAW7F,iBACjB,UACAtE,KAAKgK,4BAEF,CACLhK,KAAKkK,GAAGC,WAAWpF,oBAAoB,QAAS/E,KAAK8J,oBACrD9J,KAAKkK,GAAGC,WAAWpF,oBACjB,UACA/E,KAAKgK,yBAaXlK,aACEE,KAAKuB,UAAY3B,EAKXE,mBACN,IAAIqM,EAAU,GACd,IAAItD,EAAI,EACR,IAAKA,EAAGA,EAAI7I,KAAKuB,UAAWsH,IAAKsD,EAAQR,KAAK,cAAgB9C,EAAI,IAClE,OAAOsD,EAuBDrM,iBACN,GAAIE,KAAKuB,UAAY3B,GAAkBf,OAAOuN,WAAapM,KAAKC,SAAU,CACxED,KAAKuB,UAAY3B,EAEnBI,KAAKC,SAAWpB,OAAOuN,WACvBpM,KAAK0B,eAAiB,MAOxB5B,cAAc6D,GACZ,IAAMA,EAAGgD,OAA8B0F,cAAe,OACtD1I,EAAG2I,kBACHtM,KAAK8B,kBAAoB,KACzB9B,KAAKuM,eAAepI,MAAM+G,UACvBvH,EAAGgD,OAA8B0F,cAAc5H,aAAe,KAInE3E,eAAe6D,GACb,IAAMA,EAAGgD,OAA8B0F,cAAe,OACtD1I,EAAG2I,kBACHtM,KAAK8B,kBAAoB,MACzB9B,KAAKuM,eAAepI,MAAM+G,UAAY,GAwHxCpL,6BACQ0M,EAAkBxM,KAAKyM,cAAe,OAAQzM,KAAK+B,cACzD,GAAI/B,KAAK+B,aAAc,CACrB/B,KAAKyM,cAAclI,QACnBvE,KAAKyM,cAAcnI,iBAAiB,WAAYtE,KAAK4F,oBAChD,CACL5F,KAAKyM,cAAc1H,oBAAoB,WAAY/E,KAAK4F,gBACxD5F,KAAKkK,GAAG3F,SAqBJzE,gBACNE,KAAK0B,eAAiB,KACtB1B,KAAKkG,YAAY5B,iBAAiB,gBAAiBtE,KAAKiG,kBACxDjG,KAAKkG,YAAY/B,MAAMC,QAAU,QAEjCxF,YAAW,KACToB,KAAKkG,YAAY/B,MAAMoC,OACrBvG,KAAKkG,YAAYwG,cAAc,kBAAkBjI,aAAe,OACjE,IAsCG3E,oBAAoB6M,GAC1B,IAAIC,EAAU,CAAC,SACf,GAAID,EAAIE,eAAgB,CACtB,IAAIzC,EAAQwC,EAAQhD,MACjBkD,GACCH,EAAIE,eAAeC,IACnBH,EAAIE,eAAeC,GAAMC,aAAe,SAG5C,GAAI3C,EAAO,CACT,GAAIA,IAAU,QACZ,OACGuC,EAAIK,MAAM3G,OAAS,GAChBsG,EAAIK,MAAMC,UAAU,EAAG,IAAM,OAC7BN,EAAIK,OACR,IACAL,EAAIE,eAAezC,GAAO3D,WAEzB,OAAOkG,EAAIE,eAAe,SAASpG,OAG5C,OAAOkG,EAAIK,MA6HLlN,iBACN,GAAIE,KAAKiC,kBAAkBoE,OAAS,EAAG,OAAO,MAC9C,OAAO,KAaTvG,gBACEE,KAAKI,YAAc,EAebN,iBACNoN,GAEAlN,KAAKG,iBAAiBgI,KAAKkC,GACzBA,EAAI8C,aAAa,gBAAiB,WAEpCD,EAAgB3I,MAAM,CAAEC,cAAe,OACvC0I,EAAgBC,aAAa,gBAAiB,QAiExCrN,uBACNyL,GAAS,KACPvL,KAAKW,cAAgBX,KAAKkK,GAAGwB,iBAAiB,iBAAiBrF,OAC/DrG,KAAKU,kBACDV,KAAKkK,GAAGwB,iBAAiB,qBAAqBrF,OAClDrG,KAAKY,mBACDZ,KAAKkK,GAAGwB,iBAAiB,sBAAsBrF,OAEnDrG,KAAKa,aAAeb,KAAKkK,GAAGwB,iBAAiB,kBAAkBrF,OAC/DrG,KAAKc,YAAcd,KAAKkK,GAAGwB,iBAAiB,iBAAiBrF,OAC7DrG,KAAKe,YAAcf,KAAKkK,GAAGwB,iBAAiB,iBAAiBrF,OAC7DrG,KAAKgB,gBACHhB,KAAKkK,GAAGwB,iBAAiB,qBAAqBrF,OAChDrG,KAAKiB,cAAgBjB,KAAKkK,GAAGwB,iBAAiB,mBAAmBrF,UAO7DvG,WACN,GAAIE,KAAKoN,GAAI,OACb,IAAIC,EAAOrN,KAAKkK,GAAGC,WAAWuC,cAAc,yBAC5C,UAES7N,SAAW,aACjBA,OAAeyO,wBACdD,EACF,CACA,MAAMD,EAAMpN,KAAKoN,GAAK,IAAKvO,OAAeyO,sBACvCC,IACCvN,KAAK+K,eAAiBwC,EAAKC,OAAO,GAAG,GAAGC,oBAE1C,CAAEJ,KAAAA,EAAM9L,UAAW,IAErB6L,EAAGM,QAAQL,EAAKX,cAAc,kBAMlC5M,mBACuB,CACnBE,KAAK2N,eAAiBlK,EAASzD,KAAK4N,eAAeC,KAAK7N,MAAO,KAE/DnB,OAAOyF,iBAAiB,SAAUtE,KAAK2N,gBACvC3N,KAAKC,SAAWpB,OAAOuN,WAGzBpM,KAAK8N,oBACL9N,KAAK0K,oBACL,GAAI1K,KAAKoB,gBAAiBpB,KAAKiM,WAGjCnM,oBACEiO,EAAeC,KACbhO,KACA,CAAC,cAAe,eAChB,WACA,OAGF,UAESnB,SAAW,aACjBA,OAAeoP,iBAChB,CACA,MAAMC,EAAMlO,KAAKkO,GAAK,IAAID,kBAAiB,KACzCjO,KAAKmO,0BAEPD,EAAGR,QAAQ1N,KAAKkK,GAAI,CAAEkE,UAAW,KAAMC,QAAS,QAElDrO,KAAKmO,uBAGPrO,uBACE,GAAIE,KAAKoN,GAAI,CACXpN,KAAKoN,GAAGkB,aACRtO,KAAKoN,GAAKmB,UAEZ,GAAIvO,KAAKkO,GAAI,CACXlO,KAAKkO,GAAGI,aACRtO,KAAKkO,GAAKK,UAGV1P,OAAOkG,oBAAoB,SAAU/E,KAAK2N,gBAG9C7N,0BACEE,KAAKwO,eAKC1O,mBACN,IAAI2O,EACJ,GAAIzO,KAAK6B,kBAAoB7B,KAAK2B,YAAa,CAC7C,IAAI+M,EAAmB,EACvB,IAAIC,EAAyB,EAE7B,IAAIC,EAAsB,CAACC,EAAejG,IACjCA,EAAOR,QAAUpI,KAAKiH,aAAamB,MACtCyG,EAAQjG,EAAOmB,KAAK1D,OACpBwI,EAEN,IAAIC,EAAwB,CAC1BD,EACAjG,IAEOA,EAAOR,QAAUpI,KAAKiH,aAAamB,MACtCyG,EAAQjG,EAAOmB,KAAK1D,OACpBwI,EAGN,GAAI7O,KAAK+H,YAAa,CACpB4G,EAAyB3O,KAAK+H,YAAYY,QAAQoG,OAChDH,EACA,GAEFF,EAAmB1O,KAAK+H,YAAYY,QAAQoG,OAC1CD,EACA,GAIJ,GACG9O,KAAK8G,qBAAuB9G,KAAK8G,oBAAoBiD,KAAK1D,QAC1DsI,IAA2BD,EAC5B,CACA,IAAIM,EAAmB,EAEvBP,EACEQ,EAAA,MAAA,MACIP,GACAO,EAAA,MAAA,CAAKC,MAAM,8DAA4D,wBAC/ClP,KAAKiC,kBAAiB,kBAAiB,IAC7DgN,EAAA,SAAA,KAASjP,KAAKiH,aAAa6B,MAAc,yBAG5C9I,KAAK8G,qBAAuB,CAC3B9G,KAAK8G,oBAAoBiD,KAAK5B,KAAI,CAACwE,EAAK9D,IAEpCoG,EAAA,IAAA,CACEE,KAAK,SACLC,IAAMC,GAAMrP,KAAKG,iBAAiBwL,KAAK0D,GACvCC,SAAS,KACT3Q,GAAI,oBAAsBkK,EAC1BvG,KAAMqK,EAAInP,IACV0R,MAAM,0BACNK,UAAWvP,KAAKwP,oBAAoB7C,UAKzC+B,GAAoB1O,KAAKiH,aAAaiC,WACvClJ,KAAK+H,aACL/H,KAAK+H,YAAYY,SAAW,CAC1B3I,KAAK+H,YAAYY,QAAQR,KAAI,CAACS,EAAQC,KACpC,IACGD,EAAOmB,KAAK1D,QACbuC,EAAOR,QAAUpI,KAAKiH,aAAamB,OACnC4G,EAAmB,EAEnB,OACFA,IACA,OACEC,EAAA,SAAA,CACEE,KAAK,SACLC,IAAMK,GAAWzP,KAAKG,iBAAiBwL,KAAK8D,GAC5CH,SAAS,KACT3Q,GAAI,sBAAwBkK,EAC5BqG,MAAM,0BACNQ,QAAS,IAAM1P,KAAK6J,kBAAkBjB,EAAOR,OAC7CuH,YAAa,IAAM3P,KAAK6J,kBAAkBjB,EAAOR,QAAM,IAErDpI,KAAKiC,kBAAiB,IAAG,IAC3BgN,EAAA,MAAA,CAAKC,MAAM,iCAA+B,MACpCtG,EAAOP,kBAMpBqG,GACDO,EAAA,MAAA,CAAKC,MAAM,4BACTD,EAAA,SAAA,CACEE,KAAK,SACLD,MAAM,6BACNE,IAAMK,GAAWzP,KAAKG,iBAAiBwL,KAAK8D,GAC5C9Q,GAAI,oBACJ+Q,QAAS1P,KAAK4G,eACd+I,YAAa3P,KAAK4G,gBAAc,2BAQrC,IAAK8H,EAAkB,CAC5BD,EACEQ,EAAA,MAAA,CAAKC,MAAM,8DAA4D,wBAC/ClP,KAAKiC,kBAAiB,sCAOpD,OACEgN,EAAA,MAAA,CACEC,MAAM,sBACNC,KAAK,UACLxQ,GAAG,uBAAsBiR,gBACV5P,KAAK6B,iBAAmB,OAAS,QAChDgO,QAAS7P,KAAK6B,kBAEb4M,GAKC3O,eACN,MAAO,CACLmP,EAAA,OAAA,CACEC,MAAM,gBACNY,SAAU9P,KAAK4G,eACfjI,GAAG,qBAEHsQ,EAAA,cAAA,CACEC,MAAM,eACNa,MAAM,kDACNC,UAAW,KACXC,gBAAiB,MACjBxJ,MAAOzG,KAAKiD,YACZiN,aAAclQ,KAAKyJ,oBACnB0G,KAAM,MAELnQ,KAAKkB,sBAAsBiH,KAAKC,GAE7B6G,EAAA,SAAA,CACElG,SAAUX,EAAMA,QAAUpI,KAAKiD,YAC/BwD,MAAO2B,EAAMA,OAEZA,EAAMU,MAAQV,EAAMA,SAI3B6G,EAAA,YAAA,CAAWnG,KAAK,mBAAmBsH,KAAK,UAE1CnB,EAAA,aAAA,CACEC,MAAM,eACNa,MAAM,qCAAoCM,aAC/B,qCACXL,UAAW,KACXC,gBAAiB,MAAKK,cAAA,KAEtBC,YAAY,YACZC,KAAK,OACLpB,IAAMqB,GAAWzQ,KAAKmG,YAAcsK,EACpCP,aAAclQ,KAAK6G,eACnB6J,YAAa1Q,KAAKwG,cAClB/C,SAAU,IAAGkN,oBACK,OAAMC,wBAEtB5Q,KAAKG,iBAAiBH,KAAKI,YACvBJ,KAAKG,iBAAiBH,KAAKI,YAAYzB,GACvC,MAAKkS,gBAEG,uBACdC,YAAa9Q,KAAKgI,wBAClBvB,MAAOzG,KAAKgD,YACZmM,KAAK,WAELF,EAAA,SAAA,CACEC,MAAO,CACL6B,cAAe,KACfC,sBAAuB,KACvBC,qBAAsBjR,KAAKiC,kBAAkBoE,QAE/C+J,KAAK,gBACLT,YAAc3L,IACZhE,KAAKiC,kBAAoBjC,KAAKmG,YAAYM,MAC1CzG,KAAK4G,eAAe5C,EAAG,QAGzBiL,EAAA,YAAA,CAAWnG,KAAK,kBAElBmG,EAAA,OAAA,CACEC,MAAO,CACL6B,cAAe,KACfG,sBAAuB,KACvBD,oBAAqBjR,KAAK4B,eAE5BwO,KAAK,iBAELnB,EAAA,YAAA,CAAWnG,KAAK,0BAGpBmG,EAAA,QAAA,CAAOuB,KAAK,aAKlB1Q,SACEE,KAAKG,iBAAmB,GACxB,IAAIgR,EAASnR,KAAKkK,GAAGkH,cAA2BC,MAAQ,MAExD,IAAIC,EAAetR,KAAKsR,eACxBA,EAAa3F,KAAK3L,KAAKuR,oBAEvB,OACEtC,EAACuC,EAAI,CACHtC,MAAO,CACLpP,CAACE,KAAKyR,mBAAmBC,KAAK,MAAO,KACrCrQ,MAAOrB,KAAKqB,MACZsQ,mBAAoB3R,KAAK0B,gBAAkB1B,KAAK2B,YAChDiQ,6BACE5R,KAAK6B,kBAAoB7B,KAAK2B,YAChCkQ,aAAc7R,KAAKyB,YACnBqQ,SAAU9R,KAAKsB,YAEjB+P,IAAKF,EAAQ,MAAQ,MAErBlC,EAAA,MAAA,CACEC,MAAO,CACL6C,aAAc,KACdC,kBAAmBhS,KAAK2B,cAG1BsN,EAAA,MAAA,CACEtQ,GAAG,kBACHuQ,MAAO,CACL+C,KAAM,KACNxM,KAAMzF,KAAKwB,UACX0Q,gBAAiBlS,KAAKY,iBACtBuR,mBAAoBnS,KAAKgC,eACzBoQ,iBAAkBpS,KAAK8B,mBACxB8N,gBACc5P,KAAKwB,UAAY,OAAS,QACzC4N,IAAMiD,GAASrS,KAAKkE,QAAUmO,GAE9BpD,EAAA,MAAA,CACEC,MAAM,YACNE,IAAMiD,GAASrS,KAAKqE,YAAcgO,EAClC/C,SAAS,MAETL,EAAA,MAAA,CAAKC,MAAM,gBACTD,EAAA,SAAA,CACEC,MAAM,6BACNS,YAAa3P,KAAK+D,eAClBuO,UAAWtS,KAAK0D,kBAEf1D,KAAKuB,UAAY3B,EAAiB,GACjCqP,EAAA,YAAA,CACEnG,KAAK,cAAauH,aACP,eAGdrQ,KAAKuB,WAAa3B,EAAiB,GAClCqP,EAAA,YAAA,CACEnG,KAAK,aAAYuH,aACN,gBAKhBrQ,KAAKuB,UAAY3B,EAAiB,GAAK,GACpCI,KAAKc,aAAemO,EAAA,OAAA,CAAMnG,KAAK,SACjC9I,KAAKM,aACDN,KAAKwC,yBACLxC,KAAKwC,wBAAwB+P,SAAS,WAAa,CACnDvS,KAAKqD,QACH4L,EAAA,IAAA,CAAG3M,KAAMtC,KAAKqD,OAAQ6L,MAAM,YAC1BD,EAAA,YAAA,CAAWnG,KAAK,eACf9I,KAAKmD,SAAW,GACf8L,EAAA,OAAA,CAAMC,MAAM,wBACTlP,KAAKmD,WAKdnD,KAAKoD,SACH6L,EAAA,IAAA,CAAG3M,KAAMtC,KAAKoD,QAAS8L,MAAM,YAC3BD,EAAA,YAAA,CAAWnG,KAAK,wBACf9I,KAAKkD,UAAY,GAChB+L,EAAA,OAAA,CAAMC,MAAM,wBACTlP,KAAKkD,cAQnBlD,KAAKM,WAAaN,KAAKM,UAAUkS,KAAKC,OACrCxD,EAAA,IAAA,CACE3M,KAAMtC,KAAKM,UAAUkS,KAAKC,MAAQzS,KAAKmC,YACvC+M,MAAM,aAAW,mBAEA,IACjBD,EAAA,YAAA,CAAWnG,KAAK,0BAKtBmG,EAAA,MAAA,CACEC,MAAM,eACNE,IAAMiD,GAASrS,KAAKuM,eAAiB8F,GAErCpD,EAAA,MAAA,CAAKC,MAAM,WACTD,EAAA,MAAA,CAAKC,MAAM,6BACTD,EAAA,OAAA,CAAMnG,KAAK,aACV9I,KAAKuB,UAAY3B,EAAiB,KAC/BI,KAAKe,aAAekO,EAAA,OAAA,CAAMnG,KAAK,cAG/B9I,KAAKa,gBAAkBb,KAAKO,aAAa8F,SAC7CrG,KAAKuB,UAAY3B,GACjBI,KAAKW,eACHX,KAAKQ,YAAY6F,SACnB4I,EAAA,MAAA,QACMjP,KAAKa,gBAAkBb,KAAKO,aAAa8F,SAC3CrG,KAAKuB,UAAY3B,GAAkB,EAChCI,KAAKuB,WAAa3B,EAAiB,GAClCI,KAAKe,YAAc,IACnBf,KAAKgB,gBAAkB,GACrBiO,EAAA,MAAA,CAAKC,MAAM,oBACNlP,KAAKO,aAAa8F,QACnB4I,EAAA,KAAA,CAAIC,MAAM,mBAAiB,SAE7BD,EAAA,MAAA,CACEC,MAAM,2BAA0BmB,aACrB,2BAEXpB,EAAA,OAAA,CAAMnG,KAAK,UAEV9I,KAAKO,aAAa4H,KAAKuK,GAEpBzD,EAAA,gBAAA,CAAeC,MAAM,wCACnBD,EAAA,IAAA,CACE3M,KAAMoQ,EAAKC,QACXnN,OAAQkN,EAAKlN,QAEZkN,EAAK1F,aAQpBhN,KAAKuB,UAAY3B,EAAiB,GAClCI,KAAKe,aAAe,GACpBf,KAAKgB,iBAAmB,IACxBiO,EAAA,MAAA,CACEC,MAAM,YAAWmB,aACN,4BAETrQ,KAAKO,aAAa8F,QAClB4I,EAAA,OAAA,CAAMnG,KAAK,YAEV9I,KAAKO,aAAa8F,QACnB4I,EAAA,gBAAA,CAAeC,MAAM,wCAAsC,UAEzDD,EAAA,YAAA,CACEmB,KAAK,WACLtH,KAAK,wBAEPmG,EAAA,MAAA,CAAKmB,KAAK,aACRnB,EAAA,MAAA,CAAKC,MAAM,WACTD,EAAA,SAAA,CACEC,MAAM,WACNQ,QAAS1P,KAAKuF,cAEd0J,EAAA,YAAA,CACEmB,KAAK,WACLtH,KAAK,qBAAoBuH,aACd,YACA,WAGfpB,EAAA,OAAA,CAAMnG,KAAK,UACXmG,EAAA,MAAA,CAAKC,MAAM,gBACRlP,KAAKO,aAAa4H,KAAKuK,GAEpBzD,EAAA,gBAAA,CAAeC,MAAM,wCACnBD,EAAA,IAAA,CACE3M,KAAMoQ,EAAKC,QACXnN,OAAQkN,EAAKlN,QAEZkN,EAAK1F,iBAc9BhN,KAAKW,eAAiBX,KAAKQ,YAAY6F,SAAW,EACjDrG,KAAKuB,WAAa3B,EAAiB,GAClCI,KAAKe,YAAc,IACnBf,KAAKgB,gBAAkB,GACrBiO,EAAA,MAAA,CAAKC,MAAM,kBACTD,EAAA,KAAA,CAAIC,MAAM,mBAAiB,SAC3BD,EAAA,MAAA,CACEC,MAAM,2BAA0BmB,aACrB,gCAEXpB,EAAA,OAAA,CAAMnG,KAAK,SACV9I,KAAKQ,YAAY2H,KAAKuK,GAEnBzD,EAAA,gBAAA,CAAeC,MAAM,wCACnBD,EAAA,IAAA,CACE3M,KAAMoQ,EAAKC,QACXnN,OAAQkN,EAAKlN,QAEZkN,EAAK1F,aAQpBhN,KAAKuB,UAAY3B,EAAiB,GAClCI,KAAKe,aAAe,GACpBf,KAAKgB,iBAAmB,IACxBiO,EAAA,MAAA,CACEC,MAAM,YAAWmB,aACN,gCAEXpB,EAAA,gBAAA,CAAeC,MAAM,wCAAsC,QAEzDD,EAAA,YAAA,CACEmB,KAAK,WACLtH,KAAK,wBAEPmG,EAAA,MAAA,CAAKmB,KAAK,aACRnB,EAAA,MAAA,CAAKC,MAAM,WACTD,EAAA,SAAA,CACEC,MAAM,WACNQ,QAAS1P,KAAKuF,cAEd0J,EAAA,YAAA,CACEmB,KAAK,WACLtH,KAAK,qBAAoBuH,aACd,YACA,SAGfpB,EAAA,MAAA,CAAKC,MAAM,gBACTD,EAAA,OAAA,CAAMnG,KAAK,SACV9I,KAAKQ,YAAY2H,KAAKuK,GAEnBzD,EAAA,gBAAA,CAAeC,MAAM,wCACnBD,EAAA,IAAA,CACE3M,KAAMoQ,EAAKC,QACXnN,OAAQkN,EAAKlN,QAEZkN,EAAK1F,kBAgBjChN,KAAKK,YACJL,KAAKuB,UAAY3B,EAAiB,IACjCI,KAAKS,gBAAgB4F,QAAUrG,KAAKU,kBACnCuO,EAAA,MAAA,CAAKC,MAAM,YAAWmB,aAAY,2BAChCpB,EAAA,gBAAA,CAAeC,MAAM,iDAClBlP,KAAK+C,cAAc+F,KACpBmG,EAAA,YAAA,CACEmB,KAAK,WACLtH,KAAK,wBAEPmG,EAAA,MAAA,CAAKmB,KAAK,aACRnB,EAAA,MAAA,CAAKC,MAAM,WACTD,EAAA,SAAA,CACEC,MAAM,WACNQ,QAAS1P,KAAKuF,cAEd0J,EAAA,YAAA,CACEmB,KAAK,WACLtH,KAAK,qBAAoBuH,aACd,YAEZrQ,KAAK+C,cAAc+F,MAEtBmG,EAAA,MAAA,CAAKC,MAAM,gBACTD,EAAA,OAAA,CAAMnG,KAAK,aACV9I,KAAKS,gBAAgB0H,KAAKuK,GAEvBzD,EAAA,gBAAA,CAAeC,MAAM,wCACnBD,EAAA,IAAA,CAAG3M,KAAMoQ,EAAKC,QAASnN,OAAQkN,EAAKlN,QACjCkN,EAAK1F,UAKdiC,EAAA,gBAAA,CAAeC,MAAM,wCACnBD,EAAA,IAAA,CACE3M,KACEtC,KAAKM,UAAUkS,KAAKI,gBACpB5S,KAAKmC,aAAW,yBAapC8M,EAAA,OAAA,CAAMnG,KAAK,cAEV9I,KAAKM,WAAaN,KAAKM,UAAUkS,KAAKK,QACrC5D,EAAA,MAAA,CAAKC,MAAM,wBACTD,EAAA,IAAA,CAAG3M,KAAMtC,KAAKM,UAAUkS,KAAKK,OAAS7S,KAAKmC,aAAW,cAQhE8M,EAAA,eAAA,CAAA6D,cACc,QAAOC,kBACH,MAChBC,UAAW,CAAE/D,EAAG,IAAKgE,EAAG,MAExBhE,EAAA,MAAA,CAAKC,MAAM,OAAOE,IAAMiD,GAASrS,KAAKmL,QAAUkH,GAC9CpD,EAAA,MAAA,CACEC,MAAM,WAAUmB,aACL,uBACXf,SAAS,KACTF,IAAMiD,GAASrS,KAAKkF,WAAamN,IAE/BrS,KAAKY,oBACHZ,KAAKgB,kBACLhB,KAAKM,aAAeN,KAAKc,cACzBd,KAAKuB,UAAY3B,EAAiB,GACnCI,KAAKK,eACDL,KAAKS,gBAAgB4F,QAAUrG,KAAKU,kBACvCV,KAAKuB,UAAY3B,EAAiB,KACjCI,KAAKe,aAAef,KAAKuB,UAAY3B,EAAiB,MACrDI,KAAKa,gBAAkBb,KAAKO,aAAa8F,SAC3CrG,KAAKuB,UAAY3B,GACnBI,KAAKW,eACHX,KAAKQ,YAAY6F,SACnB4I,EAAA,SAAA,CACEC,MAAM,oBACNS,YAAa3P,KAAK8D,SAClBwO,UAAWtS,KAAK0D,iBAAgBkM,gBACjB5P,KAAKwB,UAAY,OAAS,QAAOqP,gBAClC,kBACdzB,IAAM8D,GAASlT,KAAKiF,QAAUiO,GAE9BjE,EAAA,YAAA,CACEnG,KAAK,aAAYuH,aACN,eAKhBrQ,KAAK0C,UACJuM,EAAA,IAAA,CAAG3M,KAAMtC,KAAK2C,QAASuM,MAAM,aAC3BD,EAAA,MAAA,CACEkE,IAAKC,EAAa,yBAClBC,IAAI,oCACJnE,MAAM,WAIVlP,KAAK0C,UACLuM,EAAA,MAAA,CAAKC,MAAM,aACTD,EAAA,OAAA,CAAMnG,KAAK,UAIfmG,EAAA,MAAA,CACEC,MAAM,4BACNW,SAEI7P,KAAKuB,WAAa3B,EAAiB,KAAOI,KAAKe,cAInDkO,EAAA,OAAA,CAAMnG,KAAK,UAGZ9I,KAAKuB,WAAa3B,EAAiB,GAAK,CACvCI,KAAKyC,cAAgBzC,KAAKkB,sBAAsBmF,QAC9C4I,EAAA,MAAA,CACEC,MAAM,gBACNC,KAAK,WAAUmE,YACL,uBAAsB1D,gBAE9B5P,KAAK6B,kBAAoB7B,KAAK8G,oBAC1B,OACA,SAGLwK,KAGHtR,KAAKyC,aAAezC,KAAKM,cACvBN,KAAKiB,eAAiBgO,EAAA,OAAA,CAAMnG,KAAK,aAGrC9I,KAAKuB,WAAa3B,EAAiB,IAClCI,KAAKyC,aACLzC,KAAKkB,sBAAsBmF,SAC5B4I,EAAA,MAAA,CACEC,MAAM,2BAA0BmB,aACrB,8BAEPrQ,KAAKa,gBAAkBb,KAAKO,aAAa8F,SAC3CrG,KAAKuB,YAAc3B,GAAkB,CACnCqP,EAAA,OAAA,CAAMnG,KAAK,UACX9I,KAAKO,aAAa4H,KAAKuK,GAEnBzD,EAAA,gBAAA,CAAeC,MAAM,uCACnBD,EAAA,IAAA,CAAG3M,KAAMoQ,EAAKC,QAASnN,OAAQkN,EAAKlN,QACjCkN,EAAK1F,YASrBhN,KAAKuB,UAAY3B,EAAiB,IAC/BI,KAAKyC,cAAgBzC,KAAKkB,sBAAsBmF,UAC9CrG,KAAKiB,gBACPgO,EAAA,SAAA,CACEC,MAAM,WAAU2B,gBACF,wBAAuBjB,gBACtB5P,KAAK0B,eAAiB,OAAS,QAC9CiO,YAAa3P,KAAK6F,iBAClByM,UAAWtS,KAAKgG,oBAEhBiJ,EAAA,YAAA,CAAWnG,KAAK,kBAIrB9I,KAAKuB,WAAa3B,EAAiB,GAAK,GACrCI,KAAKc,aAAemO,EAAA,OAAA,CAAMnG,KAAK,SACjC9I,KAAKM,aACDN,KAAKwC,yBACLxC,KAAKwC,wBAAwB+P,SAAS,WAAa,CACnDvS,KAAKqD,QACH4L,EAAA,IAAA,CAAG3M,KAAMtC,KAAKqD,OAAQ6L,MAAM,YAC1BD,EAAA,YAAA,CAAWnG,KAAK,eACf9I,KAAKmD,SAAW,GACf8L,EAAA,OAAA,CAAMC,MAAM,wBACTlP,KAAKmD,WAKdnD,KAAKoD,SACH6L,EAAA,IAAA,CAAG3M,KAAMtC,KAAKoD,QAAS8L,MAAM,YAC3BD,EAAA,YAAA,CAAWnG,KAAK,wBACf9I,KAAKkD,UAAY,GAChB+L,EAAA,OAAA,CAAMC,MAAM,wBACTlP,KAAKkD,cAQnBlD,KAAKM,WACJN,KAAKuB,WAAa3B,EAAiB,GAAK,CACtCI,KAAKM,UAAUkS,KAAKC,OAClBxD,EAAA,IAAA,CACE3M,KAAMtC,KAAKM,UAAUkS,KAAKC,MAAQzS,KAAKmC,YACvC+M,MAAM,aAAW,oBAKrBlP,KAAK+C,eACHkM,EAAA,MAAA,CAAKC,MAAM,cACTD,EAAA,SAAA,CACEC,MAAO,CACLqE,WAAY,KACZC,iBAAkB,KAClB/N,KAAMzF,KAAK+B,cAEb4N,YAAa3P,KAAK0F,eAClB4M,UAAWtS,KAAK2F,kBAEf,IACA3F,KAAK+C,cAAc+F,KACpBmG,EAAA,YAAA,CAAWnG,KAAK,sBAElBmG,EAAA,MAAA,CACEC,MAAM,mBACNI,SAAS,KACTF,IAAMiD,GAASrS,KAAKyM,cAAgB4F,GAEpCpD,EAAA,MAAA,CAAKC,MAAM,4BACRlP,KAAKS,gBAAgB0H,KAAKuK,GAEvBzD,EAAA,IAAA,CAAG3M,KAAMoQ,EAAKC,QAASnN,OAAQkN,EAAKlN,QACjCkN,EAAK1F,UAKdiC,EAAA,MAAA,CAAKC,MAAM,yBACTD,EAAA,IAAA,CACE3M,KACEtC,KAAKM,UAAUkS,KAAKI,gBACpB5S,KAAKmC,aAAW,mBAKpB8M,EAAA,IAAA,CACE3M,KACEtC,KAAKM,UAAUkS,KAAKK,OAAS7S,KAAKmC,aAAW,cAU7D8M,EAAA,OAAA,CAAMC,MAAM,iBAGblP,KAAKuB,UAAY3B,EAAiB,GACjCqP,EAAA,MAAA,CACEtQ,GAAG,wBACHuQ,MAAO,CACLuE,aAAc,KACdC,KAAM1T,KAAK0B,gBACZkO,gBACc5P,KAAK0B,eAAiB,OAAS,QAC9CyN,KAAK,SACLG,SAAS,KACTF,IAAMiD,GAASrS,KAAKkG,YAAcmM,GAElCpD,EAAA,MAAA,CAAKC,MAAM,iBACRlP,KAAKyC,cAAgBzC,KAAKkB,sBAAsBmF,QAC/C4I,EAAA,MAAA,KAAMqC,KAELtR,KAAKyC,aAAezC,KAAKM,cACxBN,KAAKiB,eAAiBgO,EAAA,OAAA,CAAMnG,KAAK,gBAO7C9I,KAAKuB,UAAY3B,EAAiB,GAAKI,KAAKgC,iBAC5CiN,EAAA,MAAA,CACEC,MAAO,CACLiB,KAAM,KACN1K,KAAMzF,KAAKwB,WAEbkO,QAAS1P,KAAK6D,UACd8P,WAAY3T,KAAK6D,aAIvBoL,EAAA,MAAA,CAAKC,MAAM,eAAeE,IAAMiD,GAASrS,KAAKiL,YAAcoH,GAC1DpD,EAAA,OAAA,QAQAnP,UAAU8T,GAChB,IAAK5T,KAAKM,UAAW,MAAO,GAC5B,IAAI0I,EAAShJ,KAAKM,UAAU2I,QAAQW,MAAMiK,GAAOA,EAAGD,SAAWA,IAC/D,OAAO5K,EAASA,EAAOA,OAAS,GAG1BlJ,qBAAqB6I,GAC3B,IAAImL,EAAenL,EACnB,IAAIoL,EAAepL,EAEnB,GAAImL,EAAanL,QAAS,CACxBmL,EAAanL,QAAQgC,SAAQ,CAAC/B,EAAQC,KACpCiL,EAAanL,QAAQE,GAAK7I,KAAKmH,qBAC7ByB,MAGJ,OAAOkL,MACF,CACLC,EAAahK,KAAK5B,KAAKwE,IACrB,GAAIA,EAAInP,MAAQmP,EAAInP,IAAIwW,MAAM,SAC5BrH,EAAInP,IACF6E,SAASO,SAAW,KAAO5C,KAAKiU,UAAUtH,EAAIiH,QAAUjH,EAAInP,OAElE,OAAOuW,GAIHjU,qBACN,IAAKE,KAAKuC,kBAAoBvC,KAAKM,UAAW,CAC5CN,KAAKoB,gBAAkB,KACvB,OAGF,IAAI5D,EACJ,OAAQwC,KAAKkC,KACX,IAAK,MACH1E,EAAM,0CACN,MACF,IAAK,OACHA,EAAM,2CACN,MACF,QACEA,EAAM,sCACN,MAGJ,IAAIU,EAAS,CAAEc,QAAS,KAExB,IACE,GAAIgB,KAAKkC,MAAQ,QAAS,CACxBlC,KAAKM,gBAAmB4T,4BACtB,uBAEG,CACLlU,KAAKM,gBAAkB/C,EAAYC,EAAM,oBAAqBU,GAEhE,GAAI8B,KAAKM,UAAU6T,KAAKxV,GAAI,CAC1BqB,KAAKK,WAAa,KAClBL,KAAK+C,cAAgB/C,KAAKM,UAAU6T,KAEtCnU,KAAKoU,oBACLpU,KAAKqU,mBACLzV,YAAW,IAAOoB,KAAKoB,gBAAkB,MAAO,KAChD,MAAO4C,GACP6D,QAAQC,MAAM9D,GACdhE,KAAKoB,gBAAkB,MAInBtB,mBACN,IAAKE,KAAKM,YAAcN,KAAKM,UAAU+G,OAAOiN,QAAQjO,OAAQ,OAE9D,GAAIrG,KAAKM,UAAU+G,OAAOkN,QACxBvU,KAAKsJ,aAAetJ,KAAKM,UAAU+G,OAAOkN,QAC5C,GAAIvU,KAAKM,UAAU+G,OAAOmN,OACxBxU,KAAKwJ,YAAcxJ,KAAKM,UAAU+G,OAAOmN,OAE3C,GAAIxU,KAAKM,UAAUmU,KAAKC,MAAO1U,KAAKkD,UAAYlD,KAAKM,UAAUmU,KAAKC,MACpE,GAAI1U,KAAKM,UAAUqU,cAAcD,MAC/B1U,KAAKmD,SAAWnD,KAAKM,UAAUqU,cAAcD,MAE/C,IAAK1U,KAAKwJ,cAAgBxJ,KAAKsJ,aAAc,OAC7CtJ,KAAKkB,sBAAwB,IACxBlB,KAAKM,UAAU+G,OAAOiN,WACtBtU,KAAK8C,eAGV,GAAI9C,KAAKM,UAAUkS,KAAKiC,OAASzU,KAAKoD,QACpCpD,KAAKoD,QAAUpD,KAAKM,UAAUkS,KAAKiC,KACrC,GAAIzU,KAAKM,UAAUkS,KAAKoC,WAAa5U,KAAKqD,OACxCrD,KAAKqD,OAASrD,KAAKM,UAAUkS,KAAKoC,SAG9B9U,oBACN,IAAKE,KAAKM,UAAUuU,QAAU7U,KAAKM,UAAUuU,MAAMxO,OAAQ,OAE3DrG,KAAKM,UAAUuU,MAAMlK,SAAS+H,IAC5B,OAAQA,EAAKoC,MACX,IAAK,sBACL,IAAK,uBACH,GACE9U,KAAKwC,0BACJxC,KAAKwC,wBAAwB+P,SAAS,SAEvC,MACF,GAAIvS,KAAKK,YAAcqS,EAAKoC,OAAS,sBACnC9U,KAAKQ,YAAYmL,KAAK+G,QACnB,IAAK1S,KAAKK,YAAcqS,EAAKoC,OAAS,uBACzC9U,KAAKQ,YAAYmL,KAAK+G,GACxB,MACF,IAAK,uBACL,IAAK,wBACH,GACE1S,KAAKwC,0BACJxC,KAAKwC,wBAAwB+P,SAAS,SAEvC,MACF,GAAIvS,KAAKK,YAAcqS,EAAKoC,OAAS,uBACnC9U,KAAKO,aAAaoL,KAAK+G,QACpB,IAAK1S,KAAKK,YAAcqS,EAAKoC,OAAS,wBACzC9U,KAAKO,aAAaoL,KAAK+G,GACzB,MACF,IAAK,qBACH,GACE1S,KAAKwC,0BACJxC,KAAKwC,wBAAwB+P,SAAS,YAEvC,MACFvS,KAAKS,gBAAgBkL,KAAK+G,GAC1B","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","@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:host {\n /**\n * @prop --padding: padding used for many elements. Defaults to '12px 0'.\n * @prop --padding-top: top padding used for many elements. Defaults to --padding.\n * @prop --padding-bottom: bottom padding used for many elements. Defaults to --padding.\n * @prop --padding-end: end (left on l2r / right on r2l) padding used for many elements. Defaulst to --padding.\n * @prop --padding-start: start (right on l2r / left on r2l) padding used for many elements. Defaults to --padding.\n * @prop --bar-background: Background of the bar element. Defaults to rgb(17, 85, 113).\n * @prop --bar-text-color: Text color within the bar element. Defaults to white.\n * @prop --bar-color-shade: Color variant used within the bar element. Defaults to rgb(40, 110, 133).\n * @prop --bar-color-tint: Color variant used within the bar element. Defaults to rgb(88, 140, 161).\n * @prop --bar-color-focus: Focus color of the form element within search. Defaults to #90c6e7;\n * @prop --bar-color-focus: Focus color of the form element within search. Defaults to #90c6e7;\n * @prop --menu-background: Background 'burger', menu element. Defaults to #001a21;\n * @prop --menu-text-color: Text color 'burger', menu element. Defaults to white;\n */\n --padding: 12px;\n --padding-top: var(--padding);\n --padding-end: var(--padding);\n --padding-bottom: var(--padding);\n --padding-start: var(--padding);\n --bar-background: #005c75;\n --bar-text-color: white;\n --bar-color-shade: rgb(19, 89, 111);\n --bar-color-tint: rgb(19, 89, 111);\n --bar-color-focus: #90c6e7;\n --menu-background: #001a21;\n --menu-text-color: white;\n --menu-dropdown-bg: #196c82;\n --menu-dropdown-color: white;\n\n display: block;\n position: relative;\n line-height: 1.5;\n height: 100%;\n\n * {\n box-sizing: inherit;\n }\n}\n\n// Common\n.global-nav {\n @include text-inherit();\n\n font-size: 0.88em;\n position: relative;\n z-index: #{$layer-index-menubar};\n\n button {\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n }\n\n .icon-btn {\n position: relative;\n background: none;\n color: inherit;\n border: none;\n align-self: normal;\n padding: 9px 7px;\n cursor: pointer;\n display: flex;\n align-items: center;\n\n nano-icon {\n width: 18px;\n height: 18px;\n }\n }\n\n ::slotted(nano-nav-item[slot='icon']) {\n --padding-top: 9px;\n --padding-bottom: 9px;\n --padding-start: 7px;\n --padding-end: 7px;\n --display: flex;\n\n font-size: 18px;\n }\n\n a {\n color: inherit;\n text-decoration: none;\n white-space: nowrap;\n }\n\n .nav-links {\n &_title {\n margin: 8px 0 3px;\n }\n\n ul {\n margin: 0;\n padding: 0;\n }\n\n li {\n list-style: none;\n }\n }\n\n .login-btn {\n display: flex;\n align-items: center;\n font-size: 0.94em;\n }\n\n .menu-btn {\n padding: 9px var(--padding) 9px var(--padding);\n }\n}\n\n// Popup / Slideout Menu\n.menu {\n position: fixed;\n top: 0;\n left: 0;\n z-index: -1;\n display: none;\n transition: z-index 0.01s ease 0.2s;\n height: 100vh;\n width: 100vw;\n overflow-y: auto;\n\n @include rtl-host() {\n left: auto;\n right: 0;\n }\n\n :host(.threshold-2) & {\n position: absolute;\n width: calc(100vw - 20px);\n }\n\n &.menu-full-screen {\n width: 100vw !important;\n }\n\n // &.secondary-open {\n // overflow-y: hidden;\n // }\n\n &_wrap {\n max-width: 92vw;\n width: 335px;\n background: var(--menu-background);\n color: var(--menu-text-color);\n padding: var(--padding) 0;\n box-shadow: 0 0 36px 0 rgba(0, 0, 0, 0.8);\n position: relative;\n pointer-events: all;\n margin-bottom: 36px;\n opacity: 0;\n outline: none;\n transition: transform 0.2s ease, opacity 0.2s ease;\n\n &.has-promotion {\n padding: var(--padding) 0 0;\n }\n }\n\n &.open {\n z-index: #{$layer-index-dropdown};\n transition: z-index 0.01s ease;\n\n .menu_wrap {\n opacity: 1;\n transform: translate3d(0, 0, 0) !important;\n transition: transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s;\n }\n }\n\n &_actions {\n @include padding(null, calc(var(--padding) / 2), null, null);\n\n display: flex;\n justify-content: space-between;\n\n &-counter {\n background: #d0021b;\n color: #fff;\n position: absolute;\n bottom: 4px;\n right: 0;\n left: auto;\n font-size: 9px;\n height: 14px;\n line-height: 14px;\n width: auto;\n min-width: 14px;\n border-radius: 50%;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n text-align: center;\n text-indent: 0;\n }\n }\n\n .content {\n &-wrap {\n position: relative;\n overflow: hidden;\n transition: 0.2s ease min-height;\n min-height: 190px;\n }\n\n &--sub {\n padding: var(--padding) 0 var(--padding) 7px;\n }\n }\n\n .menu-btn {\n @include margin(null, auto, null, null);\n }\n\n .nav-links {\n display: flex;\n flex-wrap: wrap;\n\n ::slotted(nano-nav-item),\n nano-nav-item {\n --icon-size: 14px;\n --display: inline-block;\n --secondary-bg-color: #001a21;\n --padding-top: 10px;\n --padding-bottom: 10px;\n --padding-end: calc(var(--padding) * 2);\n --padding-start: calc(var(--padding) + 3px);\n --color: white;\n --color-hover: #{$color-lightblue};\n --bg-color-hover: transparent;\n --bg-color-focus: #002530;\n --focus-outline: none;\n\n font-size: 0.99em;\n width: 100%;\n // margin: 0 0;\n }\n\n .user-nav {\n --bg-color: #193037;\n --padding-top: 9px;\n --padding-bottom: 9px;\n\n font-weight: bold;\n margin: 5px 0 0;\n\n ::slotted(nano-nav-item),\n nano-nav-item {\n font-weight: 500;\n\n --bg-color: transparent;\n }\n }\n\n &_title {\n margin: 0 var(--padding) 4px;\n border-bottom: 1px solid #33484d;\n padding-bottom: 8px;\n font-size: 0.86em;\n text-transform: uppercase;\n color: $color-lightblue;\n letter-spacing: 1px;\n font-weight: 700;\n }\n\n &-wrap {\n margin: 18px 0;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .back-btn {\n border-top: 1px solid #33484d;\n border-bottom: 1px solid #33484d;\n display: flex;\n align-items: center;\n padding: 10px 11px 10px 0;\n width: 100%;\n font-size: 12px;\n text-transform: uppercase;\n color: $color-lightblue;\n letter-spacing: 1px;\n font-weight: 700;\n\n nano-icon {\n @include margin(null, 10px, null, null);\n\n font-size: 12px;\n color: white;\n }\n }\n\n &--sub {\n display: flex;\n flex-wrap: wrap;\n\n ::slotted(nano-nav-item),\n nano-nav-item {\n --border-bottom: none;\n --padding-end: var(--padding);\n --padding-start: var(--padding);\n --padding-top: 8px;\n --padding-bottom: 8px;\n\n margin: 0;\n width: 50%;\n line-height: 1.8;\n }\n }\n\n .content {\n padding: 8px var(--padding);\n }\n }\n\n .login-btn {\n @include padding(9px, var(--padding), 9px, 7px);\n\n nano-icon {\n @include margin(null, null, null, 10px);\n }\n }\n\n .logout-btn {\n justify-content: flex-end;\n\n a {\n padding: 0 5px;\n }\n }\n}\n\n// Main Bar\n.sticker-trigger {\n background: var(--bar-background);\n width: 100%;\n z-index: calc(#{$layer-index-menubar} + 1);\n}\n\n.bars {\n color: var(--bar-text-color);\n z-index: #{$layer-index-menubar};\n position: relative;\n max-width: 100%;\n min-width: 100%;\n box-shadow: none;\n transition: 0.2s ease box-shadow;\n\n [stuck] & {\n box-shadow: 0 1px 25px 0 rgba(0, 0, 0, 0.15);\n }\n\n &::before {\n content: '';\n width: 100%;\n height: 100%;\n z-index: -1;\n background: var(--bar-background);\n position: absolute;\n }\n\n .search {\n &-widget {\n @include margin(null, auto, null, 11px);\n\n position: relative;\n flex: 1 1 auto;\n max-width: 45vw;\n min-width: 269px;\n max-height: 36px;\n }\n\n &-inputs {\n display: flex;\n margin: 0;\n\n input[type='submit'] {\n display: none;\n }\n }\n\n &-autocomplete {\n position: absolute;\n top: calc(100% - 2px);\n width: 100%;\n left: 0;\n background: white;\n border: 2px solid var(--bar-color-tint);\n border-radius: 0 0 5px 5px;\n color: $color-black;\n font-size: 0.85em;\n padding: calc(var(--padding) / 2) 0 1px 0;\n z-index: 1;\n\n @include rtl-host() {\n left: auto;\n right: 0;\n }\n\n &-hit {\n padding:\n calc(var(--padding) / 4) var(--padding)\n calc(var(--padding) / 4) var(--padding);\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n text-align: left;\n line-height: 1.5;\n cursor: pointer;\n\n @include rtl-host() {\n text-align: right;\n }\n\n &-scope {\n font-size: 0.76em;\n // text-indent: 10px;\n color: rgb(167, 176, 179);\n font-weight: 600;\n }\n\n &:hover,\n &:focus {\n background-color: $color-lightgrey;\n }\n\n .search__highlight,\n em {\n font-weight: bold;\n font-style: normal;\n }\n\n &--no-result {\n &:hover,\n &:focus {\n background: none !important;\n }\n }\n }\n\n &-foot {\n margin: 7px 0 0;\n }\n\n &-submit {\n background: none;\n border: none;\n align-self: normal;\n padding: 9px var(--padding);\n cursor: pointer;\n display: flex;\n align-items: center;\n color: $color-blue;\n justify-content: flex-end;\n width: 100%;\n text-decoration: underline;\n border-top: 1px solid rgb(232, 234, 234);\n\n &:hover,\n &:focus {\n background-color: $color-lightgrey;\n }\n }\n }\n }\n\n .search-input {\n --input-border-style: solid 1px rgb(85, 140, 157);\n --input-border-style--focus: solid 1px var(--bar-color-focus, #90c6e7);\n --input-border-width: 1px;\n\n font-size: 0.9em;\n }\n\n nano-select.search-input {\n --input-bg-color: var(--bar-color-tint, rgb(88, 140, 161));\n --input-text-color: inherit;\n --input-border-radius: 5px 0 0 5px;\n\n flex: 0 1 auto;\n width: auto;\n display: flex;\n align-items: center;\n flex-direction: column;\n position: relative;\n left: 1px;\n\n @include rtl-host() {\n --input-border-radius: 0 5px 5px 0;\n }\n\n :host(:not(.ready)) & {\n overflow: hidden;\n max-height: 1em;\n }\n }\n\n nano-input.search-input {\n --input-text-color: inherit;\n --input-bg-color: var(--bar-color-shade, rgb(40, 110, 133));\n --clear-btn-color: #{$color-black};\n --input-border-radius: 0 5px 5px 0;\n --placeholder-color: white;\n\n width: 206px;\n display: flex;\n align-items: center;\n flex-direction: column;\n flex: 1;\n\n @include rtl-host() {\n --input-border-radius: 5px 0 0 5px;\n }\n\n :host(:not(.ready)) & {\n overflow: hidden;\n max-height: 1em;\n }\n\n &.has-value {\n --input-bg-color: #{$color-white};\n --input-text-color: #{$color-black};\n\n .search-icon {\n color: #{$color-black};\n }\n }\n\n .search-icon {\n background: none;\n color: white;\n padding: 0 8px;\n display: none;\n\n &--show {\n display: flex;\n }\n\n &--loader {\n animation: spin 1s linear infinite;\n\n @keyframes spin {\n 100% {\n transform: rotate(360deg);\n }\n }\n }\n\n nano-icon {\n height: 1.4em;\n }\n }\n }\n}\n\n.main-bar {\n width: 100%;\n\n @include padding(var(--padding), var(--padding), var(--padding), 0);\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n overflow-x: hidden;\n\n &:focus {\n outline: none;\n }\n\n :host(.ready) & {\n overflow-x: visible;\n }\n\n > *,\n ::slotted(*) {\n transition: opacity 0.2s ease;\n\n :host(:not(.ready)) & {\n opacity: 0 !important;\n }\n\n :host(.ready) & {\n opacity: 1;\n }\n\n :host(.resizing) & {\n opacity: 0 !important;\n }\n }\n\n > * {\n flex: 0 0 auto;\n\n ::slotted(nano-nav-item[slot='icon']) {\n @include margin(null, null, null, 11px);\n }\n\n ::slotted(nano-nav-item),\n nano-nav-item {\n --color-hover: #{$color-lightgrey};\n --secondary-bg-color: var(--menu-dropdown-bg);\n --secondary-color: var(--menu-dropdown-color);\n --bg-color-open: var(--bar-background);\n\n text-decoration: none !important;\n }\n }\n\n .icon-btn {\n @include margin(0, null, 0, 6px);\n\n :host(.threshold-2) & {\n @include margin(0, null, 0, 11px);\n }\n }\n\n .menu-btn.icon-btn {\n margin: 0 !important;\n\n @include ltr-host() {\n border-right: 1.5px solid var(--bar-color-shade);\n }\n\n @include rtl-host() {\n border-left: 1.5px solid var(--bar-color-shade);\n }\n }\n\n .user-links {\n position: relative;\n\n .icon-btn {\n @include padding(null, 0, null, null);\n\n font-size: 0.93em;\n font-weight: 500;\n\n nano-icon {\n @include margin(null, null, null, 5px);\n\n width: 16px;\n height: 16px;\n transform-origin: center;\n transition: transform 0.2s ease, color 0.2s ease;\n }\n\n &.open {\n nano-icon {\n transform: rotate(180deg);\n color: $color-blue;\n }\n }\n }\n\n &-panel {\n display: none;\n position: absolute;\n border-radius: 4px 0 4px 4px;\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.4);\n background-color: #568c9d;\n opacity: 0;\n transform: translate3d(0, 24px, 0);\n transition: transform 0.2s ease, opacity 0.2s ease;\n right: 0;\n font-size: 0.85em;\n min-width: 250px;\n z-index: 1;\n\n @include rtl-host() {\n right: auto;\n left: 0;\n }\n\n &:focus {\n outline: none;\n }\n\n &.show {\n opacity: 1;\n transform: translate3d(0, 4px, 0);\n }\n\n &-content {\n padding: 0 18px;\n display: flex;\n flex-direction: column;\n\n a {\n padding: 11px 0;\n border-bottom: #669dac 1px solid;\n\n &:hover,\n &:focus {\n color: $color-darkgrey;\n }\n\n &:last-child {\n border-bottom: none;\n }\n }\n }\n\n &-foot {\n background-color: #aac5cd;\n border-radius: 0 0 4px 4px;\n padding: var(--padding);\n color: #455556;\n display: flex;\n align-items: center;\n font-weight: 500;\n justify-content: space-between;\n\n a:hover {\n text-decoration: underline;\n }\n }\n }\n }\n\n .logo {\n height: 34px;\n width: auto;\n min-width: 196px;\n\n :host(:not(.threshold-1)) & {\n height: 30px;\n }\n }\n\n .logo-link {\n @include margin(null, auto, null, 0);\n @include padding(null, 11px, null, 11px);\n\n display: flex;\n align-items: center;\n border: none;\n }\n\n .nav-links {\n font-size: 0.86em;\n flex: 1 0 auto;\n display: flex;\n justify-content: space-around;\n\n ul {\n display: flex;\n justify-content: space-around;\n }\n\n ::slotted(nano-nav-item),\n nano-nav-item {\n --padding-top: 7px;\n --padding-bottom: 7px;\n --padding-end: 2px;\n --padding-start: 2px;\n --margin: 0 11px;\n }\n\n &--main {\n font-weight: bold;\n justify-content: flex-start;\n\n ::slotted(nano-nav-item) {\n --color: white;\n --padding-end: 6px;\n --padding-start: 6px;\n }\n }\n\n &--sub {\n @include margin(null, null, null, 6px);\n\n --color: #e2e2e2;\n\n justify-content: flex-end;\n }\n }\n\n .login-btn {\n display: inline-block;\n border-radius: 4px;\n background-color: #17bb75;\n color: #fff;\n padding: 3px 10px;\n position: relative;\n left: auto;\n bottom: auto;\n\n @include margin(null, 0, null, 11px);\n }\n\n .measure-ele {\n min-width: 1px;\n display: block;\n margin: 0;\n padding: 0;\n }\n}\n\n.search-bar {\n height: 0;\n overflow: hidden;\n transition: 0.2s ease height;\n padding: 0 var(--padding);\n outline: none;\n\n .search-widget {\n @include margin(0, 0, 0, 0);\n\n overflow: inherit;\n max-width: none;\n max-height: none;\n padding: 0 0 var(--padding);\n }\n\n .search-inputs {\n padding: 0 0;\n margin: 0 0;\n }\n\n .search-autocomplete {\n top: calc(100% - (var(--padding) + 1px));\n }\n}\n\n.site-content {\n display: flex;\n transition: min-height 0.2s ease;\n min-height: calc(100% - 61px);\n position: relative;\n z-index: auto;\n align-items: stretch;\n}\n\n.mask {\n opacity: 0;\n background: rgba(0, 0, 0, 0.3);\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n height: 100vh;\n z-index: -1;\n transition:\n transform 0.2s ease,\n opacity 0.2s ease,\n visibility 0.01s ease 0.2s,\n z-index 0.01s ease 0.2s;\n visibility: hidden;\n\n &.open {\n opacity: 1;\n transition:\n z-index 0.01s ease,\n visibility 0.01s ease,\n transform 0.2s ease 0.01s,\n opacity 0.2s ease 0.01s;\n z-index: 3;\n visibility: visible;\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 { debounce, closestElement, displayTransition } from '../../utils';\nimport { clientFetch } from '../../utils/fetch';\nimport {\n InputChangeEventDetail,\n SelectChangeEventDetail,\n AlgoliaResults,\n SearchIndex,\n MyAccountLink,\n AloliaSearchResultDetail,\n AlgoliaMultiResult,\n MyAccountUser,\n NavItemEventDetail,\n AlgoliaResultHit,\n AlgoliaNetworkError,\n AlgoliaMultiResults,\n} from '../../interface';\nimport { ComponentStore } from '../../utils/store/component-store';\n\ninterface MyAccountData {\n user: MyAccountUser;\n cart: {\n count: number;\n url: string;\n };\n notifications: { count: number };\n hs: { lists?: Array<number> };\n registration: { next_url: string | null };\n links: null | MyAccountLink[];\n urls: {\n forgot_password: string | null;\n logout: string | null;\n login: string | null;\n messages: string | null;\n cart: string | null;\n };\n domains: [\n {\n origin: string;\n domain: string;\n }\n ];\n search: {\n app_id: string;\n api_key: string;\n indeces: [\n {\n index: string;\n name: string;\n domain: string;\n all_group?: boolean;\n filters?: [string];\n }\n ];\n };\n}\n\nconst THRESHOLDLIMIT = 5;\n/**\n * Nanopore digital global navigation and search bar.\n * Incorporates MyAccount / SSO states (messages / cart / user name etc).\n * Incorporates Algolia search.\n * GlobalNav is designed to be at the root of the `<body>`.\n * There should only be one <nano-global-nav> in the DOM.\n * The following demo uses static data.\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 */\n@Component({\n tag: 'nano-global-nav',\n styleUrl: 'global-nav.scss',\n shadow: true,\n assetsDirs: ['assets'],\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\n // menu\n private menuDiv: HTMLElement;\n private menuBtn: HTMLButtonElement;\n private menuWrapDiv: HTMLDivElement;\n private menuContentDiv: HTMLDivElement;\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 // 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 = 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: boolean = false;\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 */\n @Prop() env: 'local' | 'dev' | 'test' | 'prod' = 'prod';\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: {\n id: string | null;\n name: string | null;\n first_name: string | null;\n last_name: string | null;\n email: string | null;\n company: string | null;\n lifecycle_stage: string | null;\n indirect_customer: boolean;\n } = 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 programatically get or to preload search results\n */\n @Prop({ mutable: true }) searchValue: string = '';\n\n /**\n * Algolia search index to programatically 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 undread 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('searchIndex')\n currentSelectedIndex() {\n if (!this.internalSearchIndeces.length) {\n return;\n }\n\n let 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 // content now fits so add / remove context classes\n // on nav-items depending on whether they're added to bar or burger.\n this.siteContent.style.minHeight = `calc(100% - ${\n this.barsDiv.clientHeight + 1\n }px)`;\n\n let menuItems: Array<Element>, barItems: Array<Element>;\n readTask(() => {\n menuItems = [\n ...Array.from(this.el.querySelectorAll('nano-nav-item[slot=\"site\"]')),\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"overflow\"]')\n ),\n ];\n barItems = [];\n\n if (this.threshold < THRESHOLDLIMIT - 4)\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 < THRESHOLDLIMIT - 3)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"loggedin\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"loggedin\"]')\n )\n );\n\n if (this.threshold < THRESHOLDLIMIT - 2)\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 < THRESHOLDLIMIT - 1)\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 this.el.shadowRoot.addEventListener(\n 'keydown',\n this.onAutocompleteInteract\n );\n } else {\n this.el.shadowRoot.removeEventListener('click', this.onAutocompleteBlur);\n this.el.shadowRoot.removeEventListener(\n 'keydown',\n this.onAutocompleteInteract\n );\n }\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 = THRESHOLDLIMIT;\n }\n\n // General classes for visuals\n\n private thresholdClasses() {\n let 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 (this.threshold < THRESHOLDLIMIT && window.innerWidth > this.currSize) {\n this.threshold = THRESHOLDLIMIT;\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) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n this.secondaryMenuOpen = true;\n this.menuContentDiv.style.minHeight =\n (ev.detail as NavItemEventDetail).secondaryMenu.scrollHeight + 'px';\n }\n\n @Listen('nanoClose')\n secondaryClose(ev: CustomEvent) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n this.secondaryMenuOpen = false;\n this.menuContentDiv.style.minHeight = '';\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.menuDiv.clientWidth; // force reflow\n\n this.modalOpen = true;\n this.modalIsOpen = true;\n this.menuWrapDiv.addEventListener('focusout', this.menuClose);\n\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\n private onMenuHidden = () => {\n this.menuDiv.removeEventListener('transitionend', this.onMenuHidden);\n this.menuWrapDiv.removeEventListener('focusout', this.menuClose);\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 private menuClose = (\n ev?: FocusEvent | MouseEvent | KeyboardEvent | TouchEvent,\n force: boolean = false\n ) => {\n if (!force) {\n let e = ev as FocusEvent;\n if (\n e &&\n e.relatedTarget &&\n closestElement('#global-nav-menu', e.relatedTarget as HTMLElement)\n )\n return;\n if (\n e &&\n e.relatedTarget &&\n (e.relatedTarget as HTMLElement).closest('#global-nav-menu')\n )\n return;\n if (\n e &&\n e.relatedTarget &&\n (e.relatedTarget as HTMLElement).closest('[slot=\"promotion\"]')\n )\n return;\n if (this.secondaryMenuOpen) return;\n }\n\n this.modalOpen = false;\n this.menuDiv.addEventListener('transitionend', this.onMenuHidden);\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 this.searchBarEl.style.height =\n this.searchBarEl.querySelector('.search-widget').scrollHeight + '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 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 let lookFor = ['title']; // , 'body'\n if (hit._snippetResult) {\n let 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<KeyboardEvent>) => {\n this.showAutocomplete = false;\n this.searchValInternal = this.searchInput.value;\n\n if (!this.isSearchValSet()) {\n this.searchLoading = false;\n return;\n }\n this.searchLoading = true;\n\n switch (ev.detail.key) {\n case 'Enter':\n this.onSearchSubmit();\n break;\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 let 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 let 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 let 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 let 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 let 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 let 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 if (\n Build.isBrowser &&\n typeof window !== 'undefined' &&\n (window as any).MutationObserver\n ) {\n const mo = (this.mo = new MutationObserver(() => {\n this.assessSlottedContent();\n }));\n mo.observe(this.el, { childList: true, subtree: false });\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 async connectedCallback() {\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 let scopeSuggestReducer = (total: number, result: AlgoliaMultiResult) => {\n return result.index !== this.currentIndex.index\n ? total + result.hits.length\n : total;\n };\n let 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 >\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 <option\n selected={index.index === this.searchIndex}\n value={index.index}\n >\n {index.name || index.index}\n </option>\n );\n })}\n <nano-icon name=\"solid/caret-down\" slot=\"icon\"></nano-icon>\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...\"\n type=\"text\"\n ref={(input) => (this.searchInput = input)}\n onNanoChange={this.onSearchChange}\n onNanoInput={this.onSearchInput}\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.searchValInternal.length,\n }}\n slot=\"inline-button\"\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=\"inline-button\"\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 let isRtl = (this.el.ownerDocument as Document).dir === 'rtl';\n\n let searchWidget = this.searchWidget();\n searchWidget.push(this.autocompleteList());\n\n return (\n <Host\n class={{\n [this.thresholdClasses().join(' ')]: true,\n ready: this.ready,\n 'search-bar-shown': this.searchBarShown && this.scrollingUp,\n 'search-auto-complete-shown':\n this.showAutocomplete && this.scrollingUp,\n 'modal-open': this.modalIsOpen,\n resizing: this.isResizing,\n }}\n dir={isRtl ? 'rtl' : null}\n >\n <div\n class={{\n 'global-nav': true,\n 'scrolling-down': !this.scrollingUp,\n }}\n >\n <nav\n id=\"global-nav-menu\"\n class={{\n 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=\"menu_wrap\"\n ref={(div) => (this.menuWrapDiv = div)}\n tabindex=\"-1\"\n >\n <div class=\"menu_actions\">\n <button\n class=\"menu-btn icon-btn icon-btn\"\n onMouseDown={this.onMenuBtnClick}\n onKeyDown={this.onMenuBtnKeyDown}\n >\n {this.threshold < THRESHOLDLIMIT - 3 && (\n <nano-icon\n name=\"light/times\"\n aria-label=\"close menu\"\n ></nano-icon>\n )}\n {this.threshold >= THRESHOLDLIMIT - 3 && (\n <nano-icon\n name=\"light/bars\"\n aria-label=\"close menu\"\n ></nano-icon>\n )}\n </button>\n\n {this.threshold < THRESHOLDLIMIT - 4 && [\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=\"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=\"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\">\n <slot name=\"overflow\" />\n {this.threshold < THRESHOLDLIMIT - 2 &&\n !!this.mainSlotLen && <slot name=\"main\" />}\n </nav>\n\n {(((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold < THRESHOLDLIMIT) ||\n this.hasSiteSlot ||\n !!this.siteNavItms.length) && (\n <div>\n {(!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold < THRESHOLDLIMIT && [\n (this.threshold >= THRESHOLDLIMIT - 2 ||\n this.mainSlotLen < 2) &&\n this.overflowSlotLen < 2 && (\n <div class=\"nav-links-wrap\">\n {!!this.aboutNavItms.length && (\n <h4 class=\"nav-links_title\">About</h4>\n )}\n <nav\n class=\"nav-links nav-links--sub\"\n aria-label=\"About the company links\"\n >\n <slot name=\"about\" />\n\n {this.aboutNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={link.address}\n target={link.target}\n >\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </nav>\n </div>\n ),\n ((this.threshold < THRESHOLDLIMIT - 2 &&\n this.mainSlotLen >= 2) ||\n this.overflowSlotLen >= 2) && (\n <nav\n class=\"nav-links\"\n aria-label=\"About the company links\"\n >\n {!this.aboutNavItms.length && (\n <slot name=\"about\" />\n )}\n {!!this.aboutNavItms.length && (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n Company\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 Company\n </button>\n <slot name=\"about\" />\n <div class=\"content--sub\">\n {this.aboutNavItms.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 )}\n </nav>\n ),\n ]}\n\n {(this.hasSiteSlot || !!this.siteNavItms.length) && [\n (this.threshold >= THRESHOLDLIMIT - 2 ||\n this.mainSlotLen < 2) &&\n this.overflowSlotLen < 2 && (\n <div class=\"nav-links-wrap\">\n <h4 class=\"nav-links_title\">Sites</h4>\n <nav\n class=\"nav-links nav-links--sub\"\n aria-label=\"Different company site links\"\n >\n <slot name=\"site\" />\n {this.siteNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={link.address}\n target={link.target}\n >\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </nav>\n </div>\n ),\n ((this.threshold < THRESHOLDLIMIT - 2 &&\n this.mainSlotLen >= 2) ||\n this.overflowSlotLen >= 2) && (\n <nav\n class=\"nav-links\"\n aria-label=\"Different company site links\"\n >\n <nano-nav-item 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 name=\"site\" />\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 < THRESHOLDLIMIT - 3 &&\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 <div class=\"content--sub\">\n <slot name=\"loggedin\" />\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 name=\"promotion\" />\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 <nano-sticker\n auto-resize=\"false\"\n break-point-max=\"800\"\n quietMode={{ h: 600, w: 800 }}\n >\n <div class=\"bars\" ref={(div) => (this.barsDiv = div)}>\n <nav\n class=\"main-bar\"\n aria-label=\"Main site navigation\"\n tabindex=\"-1\"\n ref={(div) => (this.mainBarDiv = div)}\n >\n {(this.hasPromotionSlot ||\n !!this.overflowSlotLen ||\n ((this.myAccData || !!this.iconSlotLen) &&\n this.threshold < THRESHOLDLIMIT - 4) ||\n (this.isLoggedIn &&\n (!!this.loggedInNavItms.length || this.hasLoggedinSlot) &&\n this.threshold < THRESHOLDLIMIT - 3) ||\n (!!this.mainSlotLen && this.threshold < THRESHOLDLIMIT - 2) ||\n ((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold < THRESHOLDLIMIT) ||\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(`./assets/ont-logo.svg`)}\n alt=\"Oxford Nanopore Technologies Logo\"\n class=\"logo\"\n />\n </a>\n )}\n {!this.showLogo && (\n <div class=\"logo-link\">\n <slot name=\"logo\" />\n </div>\n )}\n\n <div\n class=\"nav-links nav-links--main\"\n hidden={\n !(\n this.threshold >= THRESHOLDLIMIT - 2 && !!this.mainSlotLen\n )\n }\n >\n <slot name=\"main\" />\n </div>\n\n {this.threshold >= THRESHOLDLIMIT - 1 && [\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 && <slot name=\"search\" />,\n ]}\n\n {(this.threshold >= THRESHOLDLIMIT - 1 ||\n !this.showSearch ||\n !this.internalSearchIndeces.length) && (\n <nav\n class=\"nav-links nav-links--sub\"\n aria-label=\"About the company links\"\n >\n {(!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold === THRESHOLDLIMIT && [\n <slot name=\"about\" />,\n this.aboutNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-bar\">\n <a href={link.address} target={link.target}>\n {link.title}\n </a>\n </nano-nav-item>\n );\n }),\n ]}\n </nav>\n )}\n\n {this.threshold < THRESHOLDLIMIT - 1 &&\n ((this.showSearch && !!this.internalSearchIndeces.length) ||\n !!this.searchSlotLen) && (\n <button\n class=\"icon-btn\"\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 {this.threshold >= THRESHOLDLIMIT - 4 && [\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=\"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=\"menu_actions-counter\">\n {this.cartCount}\n </span>\n )}\n </a>\n ),\n ],\n ]}\n\n {this.myAccData &&\n this.threshold >= THRESHOLDLIMIT - 3 && [\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 <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 {this.threshold < THRESHOLDLIMIT - 1 && (\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 && <slot name=\"search\" />}\n </div>\n </div>\n )}\n </div>\n </nano-sticker>\n\n {(this.threshold < THRESHOLDLIMIT - 3 || 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\" ref={(div) => (this.siteContent = div)}>\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 let domain = this.myAccData.domains.find((dm) => dm.origin === origin);\n return domain ? domain.domain : '';\n }\n\n private processSearchResults(results: AlgoliaMultiResults | AlgoliaResults) {\n let multiResults = results as AlgoliaMultiResults;\n let 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 async getMyAccData() {\n if (!this.getMyAccountData || this.myAccData) {\n this.remoteDataReady = true;\n return;\n }\n\n let 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 var config = { timeout: 5000 };\n\n try {\n if (this.env === 'local') {\n this.myAccData = (await import(\n `./assets/local-my-account.json`\n )) as unknown as MyAccountData;\n } else {\n this.myAccData = await clientFetch(url + 'nav_bar_data.json', config);\n }\n if (this.myAccData.user.id) {\n this.isLoggedIn = true;\n this.myAccountUser = this.myAccData.user;\n }\n this.processMyAccLinks();\n this.processMyAccData();\n setTimeout(() => (this.remoteDataReady = true), 300);\n } catch (e) {\n console.error(e);\n this.remoteDataReady = true;\n }\n }\n\n 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"]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import{h as t,r as e,c as i,e as a,g as s}from"./p-8085e88f.js";import{b as o,D as n,i as r,p as d,d as h,s as l,e as c,f as u,g as p,h as b,j as f,k as w,a as g}from"./p-f66958c1.js";import{c as x}from"./p-d99437a6.js";import{f as _}from"./p-f8f89998.js";import{P as v}from"./p-8766e262.js";import{t as m}from"./p-621750cc.js";import{a as y}from"./p-56113dd3.js";var k;(function(t){t[t["Sunday"]=0]="Sunday";t[t["Monday"]=1]="Monday";t[t["Tuesday"]=2]="Tuesday";t[t["Wednesday"]=3]="Wednesday";t[t["Thursday"]=4]="Thursday";t[t["Friday"]=5]="Friday";t[t["Saturday"]=6]="Saturday"})(k||(k={}));function D(t,e){if(t==null||e==null){return false}return t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate()}function z(t,e){var i=new Date(t);i.setDate(i.getDate()+e);return i}function C(t,e=k.Monday){var i=new Date(t);var a=i.getDay();var s=(a<e?7:0)+a-e;i.setDate(i.getDate()-s);return i}function S(t,e=k.Monday){var i=new Date(t);var a=i.getDay();var s=(a<e?-7:0)+6-(a-e);i.setDate(i.getDate()+s);return i}function M(t){return new Date(t.getFullYear(),t.getMonth(),1)}function T(t){return new Date(t.getFullYear(),t.getMonth()+1,0)}function A(t,e,i){return O(t,e,i)===t}function O(t,e,i){const a=t.getTime();if(e&&e instanceof Date&&a<e.getTime()){return e}if(i&&i instanceof Date&&a>i.getTime()){return i}return t}function Y(t,e){const i=[];let a=t;while(!D(a,e)){i.push(a);a=z(a,1)}i.push(a);return i}function j(t,e=k.Monday){const i=C(M(t),e);const a=S(T(t),e);return Y(i,a)}const N=({focusedDay:e,today:i,day:a,onDaySelect:s,onKeyboardNavigation:o,focusedDayRef:n,inRange:r,disabled:d,isSelected:h})=>{const l=D(a,i);const c=D(a,e);const u=a.getMonth()!==e.getMonth()||d;const p=!r;function b(t){s(t,a)}return t("button",{class:{"duet-date__day":true,"is-outside":p,"is-disabled":u,"is-today":l},tabIndex:c?0:-1,onClick:b,onKeyDown:o,disabled:p,type:"button","aria-pressed":h?"true":"false",ref:t=>{if(c&&t&&n){n(t)}}},t("span",{"aria-hidden":"true"},a.getDate()),t("span",{class:"duet-date__vhidden"},a.toLocaleDateString(undefined,{day:"numeric",month:"long"})))};function F(t,e){const i=[];for(let a=0;a<t.length;a+=e){i.push(t.slice(a,a+e))}return i}function P(t,e,i){return t.map(((a,s)=>{const o=(s+e)%t.length;return i(t[o])}))}const L=({selectedDate:e,focusedDate:i,labelledById:a,localization:s,firstDayOfWeek:o,min:n,max:r,onDateSelect:d,onKeyboardNavigation:h,focusedDayRef:l,onMouseDown:c,onFocusIn:u,isDateDisabled:p})=>{const b=new Date;const f=j(i,o);return t("table",{class:"duet-date__table",role:"grid","aria-labelledby":a,onFocusin:u,onMouseDown:c},t("thead",null,t("tr",null,P(s.dayNames,o,(e=>t("th",{class:"duet-date__table-header",scope:"col"},t("span",{"aria-hidden":"true"},e.substr(0,2)),t("span",{class:"duet-date__vhidden"},e)))))),t("tbody",null,F(f,7).map((a=>t("tr",{class:"duet-date__row"},a.map((a=>t("td",{class:"duet-date__cell",role:"gridcell","aria-selected":D(a,e)?"true":undefined},t(N,{day:a,today:b,focusedDay:i,inRange:A(a,n,r),onDaySelect:d,onKeyboardNavigation:h,focusedDayRef:l,disabled:p(a),isSelected:D(a,e)})))))))))};const K={buttonLabel:"Choose date",placeholder:"YYYY-MM-DD",selectedDateMessage:"Selected date is",prevMonthLabel:"Previous month",nextMonthLabel:"Next month",monthSelectLabel:"Month",yearSelectLabel:"Year",closeLabel:"Close window",keyboardInstruction:"You can use arrow keys to navigate dates",calendarHeading:"Choose a date",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]};const I=':host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{--background:var(--nano-layer-bg, #fff);--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--inactive-color:var(--nano-button-color, #f0efed);display:block;font-size:16px}:host(.nano-color){--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(--nano-color-contrast);--focus-shadow:0 0 0 0.1875rem rgba(var(--nano-color-tint-rgb), 0.56)}.duet-date *,.duet-date *::before,.duet-date *::after{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.duet-date{-webkit-box-sizing:border-box;box-sizing:border-box;color:currentColor;display:block;margin:0;position:relative;text-align:left;width:100%}.duet-date__dialog{display:-webkit-box;display:-ms-flexbox;display:flex;top:100%;max-width:100%;width:100%}.duet-date__dialog.is-left{left:auto;right:0;width:auto}.duet-date__dialog-content{background:var(--background);min-width:290px;padding:16px 16px 20px;position:relative;-webkit-transform:none;transform:none;max-width:100%;width:100%}.duet-date__table{border-collapse:collapse;border-spacing:0;font-size:1em;line-height:1.25;text-align:center;width:100%}.duet-date__table-header{font-size:0.75em;font-weight:600;letter-spacing:1px;line-height:1.25;padding-bottom:8px;text-decoration:none;text-transform:uppercase}.duet-date__cell{text-align:center}.duet-date__day{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:transparent;border:0;border-radius:50%;cursor:pointer;display:inline-block;font-size:0.875em;font-variant-numeric:tabular-nums;line-height:1.25;position:relative;text-align:center;vertical-align:middle;z-index:1;-webkit-transition:0.15s ease all;transition:0.15s ease all;height:2.5em;width:2.5em}.duet-date__day.is-today{-webkit-box-shadow:0 0 0 1px var(--active-color);box-shadow:0 0 0 1px var(--active-color);position:relative}.duet-date__day:hover::before,.duet-date__day.is-today::before{content:"";background:var(--active-color);border-radius:50%;bottom:0;left:0;opacity:0.16;position:absolute;right:0;top:0}[aria-selected=true] .duet-date__day{background:var(--active-color);color:var(--active-text-color);-webkit-box-shadow:none;box-shadow:none;outline:0}.duet-date__day:active{background:var(--active-color);-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);color:var(--active-text-color)}.duet-date__day:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__day.is-disabled{background:transparent;-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.5}.duet-date__day.is-disabled::before{display:none}.duet-date__day.is-outside{background:var(--inactive-color);-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.6;pointer-events:none}.duet-date__day.is-outside::before{display:none}.duet-date__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:16px;width:100%}.duet-date__nav{white-space:nowrap}.duet-date__prev,.duet-date__next{background:var(--inactive-color);-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;appearance:none;border:0;border-radius:50%;cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:distribute;justify-content:space-around;margin-left:8px;padding:0;-webkit-transition:background-color 300ms ease;transition:background-color 300ms ease;font-size:0.9em;height:2.2em;width:2.2em}.duet-date__prev:focus,.duet-date__next:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__prev:active:focus,.duet-date__next:active:focus{-webkit-box-shadow:none;box-shadow:none}.duet-date__prev:disabled,.duet-date__next:disabled{cursor:default;opacity:0.5}.duet-date__prev nano-icon,.duet-date__next nano-icon{margin:0 auto}.duet-date__select{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-top:4px;position:relative}.duet-date__select span{margin-right:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.duet-date__select span{margin-right:unset;-webkit-margin-end:4px;margin-inline-end:4px}}.duet-date__select select{cursor:pointer;font-size:1em;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:2}.duet-date__select select.focus-visible:focus+.duet-date__select-label{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow)}.duet-date__select-label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.25em;font-weight:600;line-height:1.25;padding:0 4px 0 8px;pointer-events:none;position:relative;width:100%;z-index:1}.duet-date__select-label nano-icon{font-size:0.55em}.duet-date__vhidden{border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;padding:0;position:absolute;top:0;width:1px}';function R(t,e){var i=[];for(var a=t;a<=e;a++){i.push(a)}return i}let W=class{constructor(t){e(this,t);this.nanoDatePicked=i(this,"nanoDatePicked",7);this.monthSelectId=o("NanoDateMonth");this.yearSelectId=o("NanoDateYear");this.dialogLabelId=o("NanoDateLabel");this.initialTouchX=null;this.initialTouchY=null;this.activeFocus=false;this.focusedDay=new Date;this.selectedDate="";this.min="";this.max="";this.firstDayOfWeek=n.Monday;this.localization=K;this.isDateDisabled=()=>false;this.isModal=false;this.enableActiveFocus=()=>{this.activeFocus=true};this.disableActiveFocus=()=>{this.activeFocus=false};this.handleTouchStart=t=>{const e=t.changedTouches[0];this.initialTouchX=e.pageX;this.initialTouchY=e.pageY};this.handleTouchMove=t=>{t.preventDefault()};this.handleTouchEnd=t=>{const e=t.changedTouches[0];const i=e.pageX-this.initialTouchX;const a=e.pageY-this.initialTouchY;const s=70;const o=Math.abs(i)>=s&&Math.abs(a)<=s;if(o){this.addMonths(i<0?1:-1)}this.initialTouchY=null;this.initialTouchX=null};this.handleNextMonthClick=t=>{t.preventDefault();this.addMonths(1)};this.handlePreviousMonthClick=t=>{t.preventDefault();this.addMonths(-1)};this.handleKeyboardNavigation=t=>{if(t.key==="Tab"&&!t.shiftKey&&this.isModal){t.preventDefault();let e=this.firstFocusEle||this.firstFocusableElement;e.focus();return}var e=true;switch(t.key){case"ArrowRight":this.addDays(1);break;case"ArrowLeft":this.addDays(-1);break;case"ArrowDown":this.addDays(7);break;case"ArrowUp":this.addDays(-7);break;case"PageUp":if(t.shiftKey){this.addYears(-1)}else{this.addMonths(-1)}break;case"PageDown":if(t.shiftKey){this.addYears(1)}else{this.addMonths(1)}break;case"Home":this.startOfWeek();break;case"End":this.endOfWeek();break;default:e=false}if(e){t.preventDefault();this.enableActiveFocus()}};this.handleDaySelect=(t,e)=>{const i=!this.isDateDisabled(e);const a=r(e,d(this.min),d(this.max));if(!a||!i){return}if(e.getMonth()===this.focusedDay.getMonth()){this.setValue(e)}else{this.setFocusedDay(e)}};this.handleMonthSelect=t=>{this.setMonth(parseInt(t.target.value,10))};this.handleYearSelect=t=>{this.setYear(parseInt(t.target.value,10))};this.processFocusedDayNode=t=>{this.focusedDayNode=t;if(this.activeFocus){setTimeout((()=>t.focus()),0)}}}async setFocus(t=false,e=false){this.setFocusedDay(d(this.selectedDate)||new Date);if(t){setTimeout((t=>this.focusedDayNode.focus()),20);return}clearTimeout(this.focusTimeoutId);this.focusTimeoutId=setTimeout((()=>{if(e)_.force(this.monthSelectNode);this.monthSelectNode.focus()}),20)}handleSelectedDateChange(){this.setFocus(true)}addDays(t){this.setFocusedDay(h(this.focusedDay,t))}addMonths(t){this.setMonth(this.focusedDay.getMonth()+t)}addYears(t){this.setYear(this.focusedDay.getFullYear()+t)}startOfWeek(){this.setFocusedDay(l(this.focusedDay,this.firstDayOfWeek))}endOfWeek(){this.setFocusedDay(c(this.focusedDay,this.firstDayOfWeek))}setMonth(t){const e=u(p(this.focusedDay),t);const i=b(e);const a=u(this.focusedDay,t);this.setFocusedDay(f(a,e,i))}setYear(t){const e=w(p(this.focusedDay),t);const i=b(e);const a=w(this.focusedDay,t);this.setFocusedDay(f(a,e,i))}setFocusedDay(t){this.focusedDay=f(t,d(this.min),d(this.max))}setValue(t){this.selectedDate=g(t);this.nanoDatePicked.emit({value:this.selectedDate,valueAsDate:t})}connectedCallback(){if(this.yearSelectNode)_.observe(this.yearSelectNode);if(this.monthSelectNode)_.observe(this.monthSelectNode)}componentWillLoad(){this.handleSelectedDateChange()}componentDidLoad(){this.connectedCallback()}disconnectedCallback(){_.unobserve(this.yearSelectNode);_.unobserve(this.monthSelectNode)}render(){const e=d(this.selectedDate);const i=(e||this.focusedDay).getFullYear();const s=this.focusedDay.getMonth();const o=this.focusedDay.getFullYear();const n=d(this.min);const h=d(this.max);const l=n!=null&&n.getMonth()===s&&n.getFullYear()===o;const c=h!=null&&h.getMonth()===s&&h.getFullYear()===o;let u=i-10;let f=i+10;if(n)u=n.getFullYear();if(h)f=h.getFullYear();return t(a,{class:Object.assign({},x(this.color))},t("div",{class:"duet-date"},t("div",{class:{"duet-date__dialog":true,"is-active":true},onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd},t("div",{class:"duet-date__dialog-content"},t("div",{class:"duet-date__vhidden duet-date__instructions","aria-live":"polite"},this.localization.keyboardInstruction),t("div",{class:"duet-date__header",onFocusin:this.disableActiveFocus},t("div",null,t("h2",{id:this.dialogLabelId,class:"duet-date__vhidden","aria-live":"polite"},this.localization.monthNames[s]," ",this.focusedDay.getFullYear()),t("label",{htmlFor:this.monthSelectId,class:"duet-date__vhidden"},this.localization.monthSelectLabel),t("div",{class:"duet-date__select"},t("select",{id:this.monthSelectId,class:"duet-date__select--month",ref:t=>this.firstFocusableElement=this.monthSelectNode=t,onChange:this.handleMonthSelect},this.localization.monthNames.map(((e,i)=>t("option",{key:e,value:i,selected:i===s,disabled:!r(new Date(o,i,1),n?p(n):null,h?b(h):null)},e)))),t("div",{class:"duet-date__select-label","aria-hidden":"true"},t("span",null,this.localization.monthNamesShort[s]),t("nano-icon",{name:"light/chevron-down"}))),t("label",{htmlFor:this.yearSelectId,class:"duet-date__vhidden"},this.localization.yearSelectLabel),t("div",{class:"duet-date__select"},t("select",{id:this.yearSelectId,class:"duet-date__select--year",onChange:this.handleYearSelect,ref:t=>this.yearSelectNode=t},R(u,f).map((e=>t("option",{key:e,selected:e===o},e)))),t("div",{class:"duet-date__select-label","aria-hidden":"true"},t("span",null,this.focusedDay.getFullYear()),t("nano-icon",{name:"light/chevron-down"})))),t("div",{class:"duet-date__nav"},t("button",{class:"duet-date__prev",onClick:this.handlePreviousMonthClick,disabled:l,type:"button"},t("nano-icon",{name:"light/chevron-left"}),t("span",{class:"duet-date__vhidden"},this.localization.prevMonthLabel)),t("button",{class:"duet-date__next",onClick:this.handleNextMonthClick,disabled:c,type:"button"},t("nano-icon",{name:"light/chevron-right"}),t("span",{class:"duet-date__vhidden"},this.localization.nextMonthLabel)))),t("div",null,t(L,{selectedDate:e,focusedDate:this.focusedDay,onDateSelect:this.handleDaySelect,onKeyboardNavigation:this.handleKeyboardNavigation,labelledById:this.dialogLabelId,localization:this.localization,firstDayOfWeek:this.firstDayOfWeek,focusedDayRef:this.processFocusedDayNode,min:n,max:h,isDateDisabled:this.isDateDisabled}))))))}get host(){return s(this)}static get watchers(){return{selectedDate:["handleSelectedDateChange"]}}};W.style=I;const E=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{--width:auto;--border:var(--nano-layer-border-style, 1px solid var(--nano-layer-border-color, rgba(0, 0, 0, 0.1)));--border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));--background:var(--nano-layer-bg, #fff);--padding:10px 0;--overflow:hidden;--dropdown-z-index:var(--nano-layer-index-dropdown, 300)}.dropdown{position:relative}.dropdown__trigger{display:block}.dropdown__positioner{position:absolute;z-index:var(--dropdown-z-index)}@media (max-width: 35.9375em){.dropdown__positioner{z-index:100}}.dropdown__panel{padding:var(--padding);background:var(--background);width:var(--width);border:var(--border);border-radius:var(--border-radius);color:currentColor;-webkit-box-shadow:0 2px 8px rgba(0, 0, 0, 0.1);box-shadow:0 2px 8px rgba(0, 0, 0, 0.1);opacity:0;-webkit-transition:0.2s ease opacity, 0.2s ease transform, 0.2s ease min-height;transition:0.2s ease opacity, 0.2s ease transform, 0.2s ease min-height;min-height:20px;overflow:var(--overflow);-webkit-box-sizing:content-box !important;box-sizing:content-box !important}.dropdown__panel.top{-webkit-transform:translateY(-20px) translateZ(0);transform:translateY(-20px) translateZ(0)}.dropdown__panel.bottom{-webkit-transform:translateY(20px) translateZ(0);transform:translateY(20px) translateZ(0)}.dropdown__positioner.popover-visible .dropdown__panel{opacity:1;-webkit-transform:translateY(0) translateZ(0);transform:translateY(0) translateZ(0)}.dropdown__panel ::slotted(nano-menu){max-height:50vh}.dropdown__accessible-title{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}";let J=class{constructor(t){e(this,t);this.nanoShow=i(this,"nanoShow",7);this.nanoAfterShow=i(this,"nanoAfterShow",7);this.nanoHide=i(this,"nanoHide",7);this.nanoAfterHide=i(this,"nanoAfterHide",7);this.dropdownId=`dropdown-${Z++}`;this.labelId=this.dropdownId+"-title";this.ignoreOpenWatcher=false;this.menuFocused=false;this.autoOpen=true;this.open=false;this.closeOnSelect=true;this.tetherTo=null;this.placement="bottom-start";this.distance=2;this.skidding=0;this.hoist=false;this.togglePanel=()=>{if(!this.autoOpen)return;this.open?this.hide():this.show()};this.handleTriggerKeyDown=t=>{if(!this.open&&["ArrowDown","ArrowUp"," "].includes(t.key)){this.show();t.preventDefault();t.stopPropagation()}};this.handleTriggerSlotChange=()=>{this.updateAccessibleTrigger()}}handleOpenChange(){if(!this.ignoreOpenWatcher){this.open?this.show():this.hide();this.updateAccessibleTrigger()}}handleTetherToChange(){this.createPopover();this.updateAccessibleTrigger()}handlePopoverOptionsChange(){this.popover.setOptions({strategy:this.hoist?"fixed":"absolute",placement:this.placement,skidding:this.skidding,distance:this.distance})}menuFocus(t){let e=t.target;if(!e||!e.tagName||e.tagName.toLowerCase()!=="nano-menu")return;this.menuFocused=true}secondaryOpen(t){if(!t.detail.secondaryMenu)return;t.stopPropagation();this.panel.classList.add("loading");m(this.panel).then((()=>this.panel.classList.remove("loading")));this.panel.style.minHeight=t.detail.secondaryMenu.scrollHeight+"px"}secondaryClose(t){if(!t.detail.secondaryMenu)return;t.stopPropagation();if(!t.target.parentElement)return;this.panel.style.minHeight=t.target.parentElement.scrollHeight+"px"}handlePanelSelect(t){const e=t.target;if(this.closeOnSelect&&e.tagName.toLowerCase()==="nano-menu")this.hide()}async show(){this.ignoreOpenWatcher=true;this.open=true;const t=this.nanoShow.emit();if(t.defaultPrevented){this.open=false;this.ignoreOpenWatcher=false;return}this.popover.show();this.ignoreOpenWatcher=false;document.addEventListener("mousedown",this.handleDocumentMouseDown);document.addEventListener("keydown",this.handleDocumentKeyDown)}async hide(){this.ignoreOpenWatcher=true;this.open=false;const t=this.nanoHide.emit();if(t.defaultPrevented){this.open=true;this.ignoreOpenWatcher=false;return}if(this.popover)this.popover.hide();this.ignoreOpenWatcher=false;document.removeEventListener("mousedown",this.handleDocumentMouseDown);document.removeEventListener("keydown",this.handleDocumentKeyDown);this.menuFocused=false}getMenu(){return this.host.querySelector("nano-menu")}updateAccessibleTrigger(){let t;if(!this.tetherTo){const e=Array.from(this.host.querySelectorAll('[slot="trigger"]'));t=e.map(y)[0]}else{t=this.tetherTo}if(t){t.setAttribute("aria-haspopup","true");t.setAttribute("aria-expanded",this.open?"true":"false")}}handleDocumentKeyDown(t){if(t.key==="Escape"){this.hide();return}if(t.key==="Tab"){setTimeout((()=>{if(document.activeElement&&document.activeElement.closest(this.containingElement.tagName.toLowerCase())!==this.containingElement){this.hide();return}}))}const e=this.getMenu();if(e&&["ArrowDown","ArrowUp"].includes(t.key)){if(!this.open||this.menuFocused)return;t.preventDefault();e.setFocus();return}if(e&&t.target!==e){e.dispatchEvent(new KeyboardEvent(t.type,t));return}}handleDocumentMouseDown(t){const e=t.target;if(e.closest(this.containingElement.tagName.toLowerCase())!==this.containingElement){this.hide();return}}createPopover(){if(this.popover){if(this.open)this.hide();this.popover.destroy();this.popover=null}this.popover=new v(this.tetherTo||this.trigger,this.positioner,{strategy:this.hoist?"fixed":"absolute",placement:this.placement,distance:this.distance,skidding:this.skidding,transitionElement:this.panel,onAfterHide:()=>this.nanoAfterHide.emit(),onAfterShow:()=>this.nanoAfterShow.emit(),onTransitionEnd:()=>{if(!this.open){this.panel.scrollTop=0}}});if(this.open){this.show()}}connectedCallback(){this.handleDocumentKeyDown=this.handleDocumentKeyDown.bind(this);this.handleDocumentMouseDown=this.handleDocumentMouseDown.bind(this);this.handlePanelSelect=this.handlePanelSelect.bind(this);if(!this.containingElement)this.containingElement=this.host}componentDidLoad(){this.createPopover()}disconnectedCallback(){this.hide();if(this.popover)this.popover.destroy()}render(){return t("div",{part:"base",id:this.dropdownId,class:{dropdown:true,"dropdown--open":this.open},"aria-expanded":this.open?"true":"false","aria-haspopup":"true"},t("span",{part:"trigger",class:"dropdown__trigger",ref:t=>this.trigger=t,onKeyDown:this.handleTriggerKeyDown,onClick:this.togglePanel},t("slot",{name:"trigger",onSlotchange:this.handleTriggerSlotChange})),t("div",{ref:t=>this.positioner=t,class:"dropdown__positioner"},t("div",{ref:t=>this.panel=t,part:"panel",class:`dropdown__panel ${this.placement.split("-").join(" ")}`,"aria-hidden":!this.open,role:"dialog","aria-modal":"true","aria-labelledby":this.dialogTitle?this.labelId:undefined},this.dialogTitle&&t("h2",{id:this.labelId,class:"dropdown__accessible-title","aria-live":"polite"},this.dialogTitle),t("slot",null))))}get host(){return s(this)}static get watchers(){return{open:["handleOpenChange"],tetherTo:["handleTetherToChange"],placement:["handlePopoverOptionsChange"],distance:["handlePopoverOptionsChange"],skidding:["handlePopoverOptionsChange"],hoist:["handlePopoverOptionsChange"]}}};let Z=0;J.style=E;export{W as nano_date_picker,J as nano_dropdown};
|
5
|
-
//# sourceMappingURL=p-
|
4
|
+
import{h as t,r as e,c as i,e as a,g as s}from"./p-8085e88f.js";import{b as o,D as n,i as r,p as d,d as h,s as l,e as c,f as u,g as p,h as b,j as f,k as w,a as g}from"./p-f66958c1.js";import{c as x}from"./p-d99437a6.js";import{f as _}from"./p-f8f89998.js";import{P as v}from"./p-3f00179c.js";import{t as m}from"./p-621750cc.js";import{a as y}from"./p-56113dd3.js";var k;(function(t){t[t["Sunday"]=0]="Sunday";t[t["Monday"]=1]="Monday";t[t["Tuesday"]=2]="Tuesday";t[t["Wednesday"]=3]="Wednesday";t[t["Thursday"]=4]="Thursday";t[t["Friday"]=5]="Friday";t[t["Saturday"]=6]="Saturday"})(k||(k={}));function D(t,e){if(t==null||e==null){return false}return t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate()}function z(t,e){var i=new Date(t);i.setDate(i.getDate()+e);return i}function C(t,e=k.Monday){var i=new Date(t);var a=i.getDay();var s=(a<e?7:0)+a-e;i.setDate(i.getDate()-s);return i}function S(t,e=k.Monday){var i=new Date(t);var a=i.getDay();var s=(a<e?-7:0)+6-(a-e);i.setDate(i.getDate()+s);return i}function M(t){return new Date(t.getFullYear(),t.getMonth(),1)}function T(t){return new Date(t.getFullYear(),t.getMonth()+1,0)}function A(t,e,i){return O(t,e,i)===t}function O(t,e,i){const a=t.getTime();if(e&&e instanceof Date&&a<e.getTime()){return e}if(i&&i instanceof Date&&a>i.getTime()){return i}return t}function Y(t,e){const i=[];let a=t;while(!D(a,e)){i.push(a);a=z(a,1)}i.push(a);return i}function j(t,e=k.Monday){const i=C(M(t),e);const a=S(T(t),e);return Y(i,a)}const N=({focusedDay:e,today:i,day:a,onDaySelect:s,onKeyboardNavigation:o,focusedDayRef:n,inRange:r,disabled:d,isSelected:h})=>{const l=D(a,i);const c=D(a,e);const u=a.getMonth()!==e.getMonth()||d;const p=!r;function b(t){s(t,a)}return t("button",{class:{"duet-date__day":true,"is-outside":p,"is-disabled":u,"is-today":l},tabIndex:c?0:-1,onClick:b,onKeyDown:o,disabled:p,type:"button","aria-pressed":h?"true":"false",ref:t=>{if(c&&t&&n){n(t)}}},t("span",{"aria-hidden":"true"},a.getDate()),t("span",{class:"duet-date__vhidden"},a.toLocaleDateString(undefined,{day:"numeric",month:"long"})))};function F(t,e){const i=[];for(let a=0;a<t.length;a+=e){i.push(t.slice(a,a+e))}return i}function P(t,e,i){return t.map(((a,s)=>{const o=(s+e)%t.length;return i(t[o])}))}const L=({selectedDate:e,focusedDate:i,labelledById:a,localization:s,firstDayOfWeek:o,min:n,max:r,onDateSelect:d,onKeyboardNavigation:h,focusedDayRef:l,onMouseDown:c,onFocusIn:u,isDateDisabled:p})=>{const b=new Date;const f=j(i,o);return t("table",{class:"duet-date__table",role:"grid","aria-labelledby":a,onFocusin:u,onMouseDown:c},t("thead",null,t("tr",null,P(s.dayNames,o,(e=>t("th",{class:"duet-date__table-header",scope:"col"},t("span",{"aria-hidden":"true"},e.substr(0,2)),t("span",{class:"duet-date__vhidden"},e)))))),t("tbody",null,F(f,7).map((a=>t("tr",{class:"duet-date__row"},a.map((a=>t("td",{class:"duet-date__cell",role:"gridcell","aria-selected":D(a,e)?"true":undefined},t(N,{day:a,today:b,focusedDay:i,inRange:A(a,n,r),onDaySelect:d,onKeyboardNavigation:h,focusedDayRef:l,disabled:p(a),isSelected:D(a,e)})))))))))};const K={buttonLabel:"Choose date",placeholder:"YYYY-MM-DD",selectedDateMessage:"Selected date is",prevMonthLabel:"Previous month",nextMonthLabel:"Next month",monthSelectLabel:"Month",yearSelectLabel:"Year",closeLabel:"Close window",keyboardInstruction:"You can use arrow keys to navigate dates",calendarHeading:"Choose a date",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]};const I=':host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{--background:var(--nano-layer-bg, #fff);--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--inactive-color:var(--nano-button-color, #f0efed);display:block;font-size:16px}:host(.nano-color){--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(--nano-color-contrast);--focus-shadow:0 0 0 0.1875rem rgba(var(--nano-color-tint-rgb), 0.56)}.duet-date *,.duet-date *::before,.duet-date *::after{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.duet-date{-webkit-box-sizing:border-box;box-sizing:border-box;color:currentColor;display:block;margin:0;position:relative;text-align:left;width:100%}.duet-date__dialog{display:-webkit-box;display:-ms-flexbox;display:flex;top:100%;max-width:100%;width:100%}.duet-date__dialog.is-left{left:auto;right:0;width:auto}.duet-date__dialog-content{background:var(--background);min-width:290px;padding:16px 16px 20px;position:relative;-webkit-transform:none;transform:none;max-width:100%;width:100%}.duet-date__table{border-collapse:collapse;border-spacing:0;font-size:1em;line-height:1.25;text-align:center;width:100%}.duet-date__table-header{font-size:0.75em;font-weight:600;letter-spacing:1px;line-height:1.25;padding-bottom:8px;text-decoration:none;text-transform:uppercase}.duet-date__cell{text-align:center}.duet-date__day{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:transparent;border:0;border-radius:50%;cursor:pointer;display:inline-block;font-size:0.875em;font-variant-numeric:tabular-nums;line-height:1.25;position:relative;text-align:center;vertical-align:middle;z-index:1;-webkit-transition:0.15s ease all;transition:0.15s ease all;height:2.5em;width:2.5em}.duet-date__day.is-today{-webkit-box-shadow:0 0 0 1px var(--active-color);box-shadow:0 0 0 1px var(--active-color);position:relative}.duet-date__day:hover::before,.duet-date__day.is-today::before{content:"";background:var(--active-color);border-radius:50%;bottom:0;left:0;opacity:0.16;position:absolute;right:0;top:0}[aria-selected=true] .duet-date__day{background:var(--active-color);color:var(--active-text-color);-webkit-box-shadow:none;box-shadow:none;outline:0}.duet-date__day:active{background:var(--active-color);-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);color:var(--active-text-color)}.duet-date__day:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__day.is-disabled{background:transparent;-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.5}.duet-date__day.is-disabled::before{display:none}.duet-date__day.is-outside{background:var(--inactive-color);-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.6;pointer-events:none}.duet-date__day.is-outside::before{display:none}.duet-date__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:16px;width:100%}.duet-date__nav{white-space:nowrap}.duet-date__prev,.duet-date__next{background:var(--inactive-color);-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;appearance:none;border:0;border-radius:50%;cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:distribute;justify-content:space-around;margin-left:8px;padding:0;-webkit-transition:background-color 300ms ease;transition:background-color 300ms ease;font-size:0.9em;height:2.2em;width:2.2em}.duet-date__prev:focus,.duet-date__next:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__prev:active:focus,.duet-date__next:active:focus{-webkit-box-shadow:none;box-shadow:none}.duet-date__prev:disabled,.duet-date__next:disabled{cursor:default;opacity:0.5}.duet-date__prev nano-icon,.duet-date__next nano-icon{margin:0 auto}.duet-date__select{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-top:4px;position:relative}.duet-date__select span{margin-right:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.duet-date__select span{margin-right:unset;-webkit-margin-end:4px;margin-inline-end:4px}}.duet-date__select select{cursor:pointer;font-size:1em;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:2}.duet-date__select select.focus-visible:focus+.duet-date__select-label{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow)}.duet-date__select-label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.25em;font-weight:600;line-height:1.25;padding:0 4px 0 8px;pointer-events:none;position:relative;width:100%;z-index:1}.duet-date__select-label nano-icon{font-size:0.55em}.duet-date__vhidden{border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;padding:0;position:absolute;top:0;width:1px}';function R(t,e){var i=[];for(var a=t;a<=e;a++){i.push(a)}return i}let W=class{constructor(t){e(this,t);this.nanoDatePicked=i(this,"nanoDatePicked",7);this.monthSelectId=o("NanoDateMonth");this.yearSelectId=o("NanoDateYear");this.dialogLabelId=o("NanoDateLabel");this.initialTouchX=null;this.initialTouchY=null;this.activeFocus=false;this.focusedDay=new Date;this.selectedDate="";this.min="";this.max="";this.firstDayOfWeek=n.Monday;this.localization=K;this.isDateDisabled=()=>false;this.isModal=false;this.enableActiveFocus=()=>{this.activeFocus=true};this.disableActiveFocus=()=>{this.activeFocus=false};this.handleTouchStart=t=>{const e=t.changedTouches[0];this.initialTouchX=e.pageX;this.initialTouchY=e.pageY};this.handleTouchMove=t=>{t.preventDefault()};this.handleTouchEnd=t=>{const e=t.changedTouches[0];const i=e.pageX-this.initialTouchX;const a=e.pageY-this.initialTouchY;const s=70;const o=Math.abs(i)>=s&&Math.abs(a)<=s;if(o){this.addMonths(i<0?1:-1)}this.initialTouchY=null;this.initialTouchX=null};this.handleNextMonthClick=t=>{t.preventDefault();this.addMonths(1)};this.handlePreviousMonthClick=t=>{t.preventDefault();this.addMonths(-1)};this.handleKeyboardNavigation=t=>{if(t.key==="Tab"&&!t.shiftKey&&this.isModal){t.preventDefault();let e=this.firstFocusEle||this.firstFocusableElement;e.focus();return}var e=true;switch(t.key){case"ArrowRight":this.addDays(1);break;case"ArrowLeft":this.addDays(-1);break;case"ArrowDown":this.addDays(7);break;case"ArrowUp":this.addDays(-7);break;case"PageUp":if(t.shiftKey){this.addYears(-1)}else{this.addMonths(-1)}break;case"PageDown":if(t.shiftKey){this.addYears(1)}else{this.addMonths(1)}break;case"Home":this.startOfWeek();break;case"End":this.endOfWeek();break;default:e=false}if(e){t.preventDefault();this.enableActiveFocus()}};this.handleDaySelect=(t,e)=>{const i=!this.isDateDisabled(e);const a=r(e,d(this.min),d(this.max));if(!a||!i){return}if(e.getMonth()===this.focusedDay.getMonth()){this.setValue(e)}else{this.setFocusedDay(e)}};this.handleMonthSelect=t=>{this.setMonth(parseInt(t.target.value,10))};this.handleYearSelect=t=>{this.setYear(parseInt(t.target.value,10))};this.processFocusedDayNode=t=>{this.focusedDayNode=t;if(this.activeFocus){setTimeout((()=>t.focus()),0)}}}async setFocus(t=false,e=false){this.setFocusedDay(d(this.selectedDate)||new Date);if(t){setTimeout((t=>this.focusedDayNode.focus()),20);return}clearTimeout(this.focusTimeoutId);this.focusTimeoutId=setTimeout((()=>{if(e)_.force(this.monthSelectNode);this.monthSelectNode.focus()}),20)}handleSelectedDateChange(){this.setFocus(true)}addDays(t){this.setFocusedDay(h(this.focusedDay,t))}addMonths(t){this.setMonth(this.focusedDay.getMonth()+t)}addYears(t){this.setYear(this.focusedDay.getFullYear()+t)}startOfWeek(){this.setFocusedDay(l(this.focusedDay,this.firstDayOfWeek))}endOfWeek(){this.setFocusedDay(c(this.focusedDay,this.firstDayOfWeek))}setMonth(t){const e=u(p(this.focusedDay),t);const i=b(e);const a=u(this.focusedDay,t);this.setFocusedDay(f(a,e,i))}setYear(t){const e=w(p(this.focusedDay),t);const i=b(e);const a=w(this.focusedDay,t);this.setFocusedDay(f(a,e,i))}setFocusedDay(t){this.focusedDay=f(t,d(this.min),d(this.max))}setValue(t){this.selectedDate=g(t);this.nanoDatePicked.emit({value:this.selectedDate,valueAsDate:t})}connectedCallback(){if(this.yearSelectNode)_.observe(this.yearSelectNode);if(this.monthSelectNode)_.observe(this.monthSelectNode)}componentWillLoad(){this.handleSelectedDateChange()}componentDidLoad(){this.connectedCallback()}disconnectedCallback(){_.unobserve(this.yearSelectNode);_.unobserve(this.monthSelectNode)}render(){const e=d(this.selectedDate);const i=(e||this.focusedDay).getFullYear();const s=this.focusedDay.getMonth();const o=this.focusedDay.getFullYear();const n=d(this.min);const h=d(this.max);const l=n!=null&&n.getMonth()===s&&n.getFullYear()===o;const c=h!=null&&h.getMonth()===s&&h.getFullYear()===o;let u=i-10;let f=i+10;if(n)u=n.getFullYear();if(h)f=h.getFullYear();return t(a,{class:Object.assign({},x(this.color))},t("div",{class:"duet-date"},t("div",{class:{"duet-date__dialog":true,"is-active":true},onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd},t("div",{class:"duet-date__dialog-content"},t("div",{class:"duet-date__vhidden duet-date__instructions","aria-live":"polite"},this.localization.keyboardInstruction),t("div",{class:"duet-date__header",onFocusin:this.disableActiveFocus},t("div",null,t("h2",{id:this.dialogLabelId,class:"duet-date__vhidden","aria-live":"polite"},this.localization.monthNames[s]," ",this.focusedDay.getFullYear()),t("label",{htmlFor:this.monthSelectId,class:"duet-date__vhidden"},this.localization.monthSelectLabel),t("div",{class:"duet-date__select"},t("select",{id:this.monthSelectId,class:"duet-date__select--month",ref:t=>this.firstFocusableElement=this.monthSelectNode=t,onChange:this.handleMonthSelect},this.localization.monthNames.map(((e,i)=>t("option",{key:e,value:i,selected:i===s,disabled:!r(new Date(o,i,1),n?p(n):null,h?b(h):null)},e)))),t("div",{class:"duet-date__select-label","aria-hidden":"true"},t("span",null,this.localization.monthNamesShort[s]),t("nano-icon",{name:"light/chevron-down"}))),t("label",{htmlFor:this.yearSelectId,class:"duet-date__vhidden"},this.localization.yearSelectLabel),t("div",{class:"duet-date__select"},t("select",{id:this.yearSelectId,class:"duet-date__select--year",onChange:this.handleYearSelect,ref:t=>this.yearSelectNode=t},R(u,f).map((e=>t("option",{key:e,selected:e===o},e)))),t("div",{class:"duet-date__select-label","aria-hidden":"true"},t("span",null,this.focusedDay.getFullYear()),t("nano-icon",{name:"light/chevron-down"})))),t("div",{class:"duet-date__nav"},t("button",{class:"duet-date__prev",onClick:this.handlePreviousMonthClick,disabled:l,type:"button"},t("nano-icon",{name:"light/chevron-left"}),t("span",{class:"duet-date__vhidden"},this.localization.prevMonthLabel)),t("button",{class:"duet-date__next",onClick:this.handleNextMonthClick,disabled:c,type:"button"},t("nano-icon",{name:"light/chevron-right"}),t("span",{class:"duet-date__vhidden"},this.localization.nextMonthLabel)))),t("div",null,t(L,{selectedDate:e,focusedDate:this.focusedDay,onDateSelect:this.handleDaySelect,onKeyboardNavigation:this.handleKeyboardNavigation,labelledById:this.dialogLabelId,localization:this.localization,firstDayOfWeek:this.firstDayOfWeek,focusedDayRef:this.processFocusedDayNode,min:n,max:h,isDateDisabled:this.isDateDisabled}))))))}get host(){return s(this)}static get watchers(){return{selectedDate:["handleSelectedDateChange"]}}};W.style=I;const E=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{--width:auto;--border:var(--nano-layer-border-style, 1px solid var(--nano-layer-border-color, rgba(0, 0, 0, 0.1)));--border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));--background:var(--nano-layer-bg, #fff);--padding:10px 0;--overflow:hidden;--dropdown-z-index:var(--nano-layer-index-dropdown, 300)}.dropdown{position:relative}.dropdown__trigger{display:block}.dropdown__positioner{position:absolute;z-index:var(--dropdown-z-index)}@media (max-width: 35.9375em){.dropdown__positioner{z-index:100}}.dropdown__panel{padding:var(--padding);background:var(--background);width:var(--width);border:var(--border);border-radius:var(--border-radius);color:currentColor;-webkit-box-shadow:0 2px 8px rgba(0, 0, 0, 0.1);box-shadow:0 2px 8px rgba(0, 0, 0, 0.1);opacity:0;-webkit-transition:0.2s ease opacity, 0.2s ease transform, 0.2s ease min-height;transition:0.2s ease opacity, 0.2s ease transform, 0.2s ease min-height;min-height:20px;overflow:var(--overflow);-webkit-box-sizing:content-box !important;box-sizing:content-box !important}.dropdown__panel.top{-webkit-transform:translateY(-20px) translateZ(0);transform:translateY(-20px) translateZ(0)}.dropdown__panel.bottom{-webkit-transform:translateY(20px) translateZ(0);transform:translateY(20px) translateZ(0)}.dropdown__positioner.popover-visible .dropdown__panel{opacity:1;-webkit-transform:translateY(0) translateZ(0);transform:translateY(0) translateZ(0)}.dropdown__panel ::slotted(nano-menu){max-height:50vh}.dropdown__accessible-title{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}";let J=class{constructor(t){e(this,t);this.nanoShow=i(this,"nanoShow",7);this.nanoAfterShow=i(this,"nanoAfterShow",7);this.nanoHide=i(this,"nanoHide",7);this.nanoAfterHide=i(this,"nanoAfterHide",7);this.dropdownId=`dropdown-${Z++}`;this.labelId=this.dropdownId+"-title";this.ignoreOpenWatcher=false;this.menuFocused=false;this.autoOpen=true;this.open=false;this.closeOnSelect=true;this.tetherTo=null;this.placement="bottom-start";this.distance=2;this.skidding=0;this.hoist=false;this.togglePanel=()=>{if(!this.autoOpen)return;this.open?this.hide():this.show()};this.handleTriggerKeyDown=t=>{if(!this.open&&["ArrowDown","ArrowUp"," "].includes(t.key)){this.show();t.preventDefault();t.stopPropagation()}};this.handleTriggerSlotChange=()=>{this.updateAccessibleTrigger()}}handleOpenChange(){if(!this.ignoreOpenWatcher){this.open?this.show():this.hide();this.updateAccessibleTrigger()}}handleTetherToChange(){this.createPopover();this.updateAccessibleTrigger()}handlePopoverOptionsChange(){this.popover.setOptions({strategy:this.hoist?"fixed":"absolute",placement:this.placement,skidding:this.skidding,distance:this.distance})}menuFocus(t){let e=t.target;if(!e||!e.tagName||e.tagName.toLowerCase()!=="nano-menu")return;this.menuFocused=true}secondaryOpen(t){if(!t.detail.secondaryMenu)return;t.stopPropagation();this.panel.classList.add("loading");m(this.panel).then((()=>this.panel.classList.remove("loading")));this.panel.style.minHeight=t.detail.secondaryMenu.scrollHeight+"px"}secondaryClose(t){if(!t.detail.secondaryMenu)return;t.stopPropagation();if(!t.target.parentElement)return;this.panel.style.minHeight=t.target.parentElement.scrollHeight+"px"}handlePanelSelect(t){const e=t.target;if(this.closeOnSelect&&e.tagName.toLowerCase()==="nano-menu")this.hide()}async show(){this.ignoreOpenWatcher=true;this.open=true;const t=this.nanoShow.emit();if(t.defaultPrevented){this.open=false;this.ignoreOpenWatcher=false;return}this.popover.show();this.ignoreOpenWatcher=false;document.addEventListener("mousedown",this.handleDocumentMouseDown);document.addEventListener("keydown",this.handleDocumentKeyDown)}async hide(){this.ignoreOpenWatcher=true;this.open=false;const t=this.nanoHide.emit();if(t.defaultPrevented){this.open=true;this.ignoreOpenWatcher=false;return}if(this.popover)this.popover.hide();this.ignoreOpenWatcher=false;document.removeEventListener("mousedown",this.handleDocumentMouseDown);document.removeEventListener("keydown",this.handleDocumentKeyDown);this.menuFocused=false}getMenu(){return this.host.querySelector("nano-menu")}updateAccessibleTrigger(){let t;if(!this.tetherTo){const e=Array.from(this.host.querySelectorAll('[slot="trigger"]'));t=e.map(y)[0]}else{t=this.tetherTo}if(t){t.setAttribute("aria-haspopup","true");t.setAttribute("aria-expanded",this.open?"true":"false")}}handleDocumentKeyDown(t){if(t.key==="Escape"){this.hide();return}if(t.key==="Tab"){setTimeout((()=>{if(document.activeElement&&document.activeElement.closest(this.containingElement.tagName.toLowerCase())!==this.containingElement){this.hide();return}}))}const e=this.getMenu();if(e&&["ArrowDown","ArrowUp"].includes(t.key)){if(!this.open||this.menuFocused)return;t.preventDefault();e.setFocus();return}if(e&&t.target!==e){e.dispatchEvent(new KeyboardEvent(t.type,t));return}}handleDocumentMouseDown(t){const e=t.target;if(e.closest(this.containingElement.tagName.toLowerCase())!==this.containingElement){this.hide();return}}createPopover(){if(this.popover){if(this.open)this.hide();this.popover.destroy();this.popover=null}this.popover=new v(this.tetherTo||this.trigger,this.positioner,{strategy:this.hoist?"fixed":"absolute",placement:this.placement,distance:this.distance,skidding:this.skidding,transitionElement:this.panel,onAfterHide:()=>this.nanoAfterHide.emit(),onAfterShow:()=>this.nanoAfterShow.emit(),onTransitionEnd:()=>{if(!this.open){this.panel.scrollTop=0}}});if(this.open){this.show()}}connectedCallback(){this.handleDocumentKeyDown=this.handleDocumentKeyDown.bind(this);this.handleDocumentMouseDown=this.handleDocumentMouseDown.bind(this);this.handlePanelSelect=this.handlePanelSelect.bind(this);if(!this.containingElement)this.containingElement=this.host}componentDidLoad(){this.createPopover()}disconnectedCallback(){this.hide();if(this.popover)this.popover.destroy()}render(){return t("div",{part:"base",id:this.dropdownId,class:{dropdown:true,"dropdown--open":this.open},"aria-expanded":this.open?"true":"false","aria-haspopup":"true"},t("span",{part:"trigger",class:"dropdown__trigger",ref:t=>this.trigger=t,onKeyDown:this.handleTriggerKeyDown,onClick:this.togglePanel},t("slot",{name:"trigger",onSlotchange:this.handleTriggerSlotChange})),t("div",{ref:t=>this.positioner=t,class:"dropdown__positioner"},t("div",{ref:t=>this.panel=t,part:"panel",class:`dropdown__panel ${this.placement.split("-").join(" ")}`,"aria-hidden":!this.open,role:"dialog","aria-modal":"true","aria-labelledby":this.dialogTitle?this.labelId:undefined},this.dialogTitle&&t("h2",{id:this.labelId,class:"dropdown__accessible-title","aria-live":"polite"},this.dialogTitle),t("slot",null))))}get host(){return s(this)}static get watchers(){return{open:["handleOpenChange"],tetherTo:["handleTetherToChange"],placement:["handlePopoverOptionsChange"],distance:["handlePopoverOptionsChange"],skidding:["handlePopoverOptionsChange"],hoist:["handlePopoverOptionsChange"]}}};let Z=0;J.style=E;export{W as nano_date_picker,J as nano_dropdown};
|
5
|
+
//# sourceMappingURL=p-e53a485b.entry.js.map
|
File without changes
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import{r as t,h as e,e as n,g as i}from"./p-8085e88f.js";import{i as a}from"./p-debd9efc.js";import{r as s}from"./p-621750cc.js";const r=':host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{display:block;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%}.main-search{display:-webkit-box;display:-ms-flexbox;display:flex;background:white;font-size:14px;min-height:calc(100vh - 63px);-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.main-search__wrap{display:contents;height:100%}.main-search ul{margin:0;padding:0;list-style:none}.main-search li{margin:0;padding:0}.main-search button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none}.main-search .icon-button{color:inherit;-ms-flex-item-align:normal;-ms-grid-row-align:normal;align-self:normal;padding:9px 7px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.main-search__topbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1em}.main-search__topbar::after{content:"";width:calc(100% - 30px);left:30px;position:relative;border-bottom:1px solid #e5eef1;padding-top:0.9em}.main-search__applied-filters{border:solid 1px #e4e6e8;text-transform:uppercase;border-radius:3px;font-weight:bold;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0.9;padding:5px 5px 0 5px;letter-spacing:2px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:0.5rem}.main-search__applied-filters span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}:host(.small) .main-search__applied-filters{display:none}.main-search__applied-nofilter{margin-left:0;margin-right:5px;margin-top:0;margin-bottom:3px;padding-left:7px;padding-right:7px;padding-top:10px;padding-bottom:10px;font-size:12px;color:rgba(69, 85, 86, 0.85)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-nofilter{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:5px;margin-inline-end:5px}}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-nofilter{padding-left:unset;padding-right:unset;-webkit-padding-start:7px;padding-inline-start:7px;-webkit-padding-end:7px;padding-inline-end:7px}}.main-search__applied-filter{padding-left:8px;padding-right:2px;padding-top:5px;padding-bottom:5px;margin-left:0;margin-right:5px;margin-top:0;margin-bottom:5px;color:#455556;font-size:11px;border-radius:2px;border:solid 1px rgba(0, 132, 169, 0.5);background-color:rgba(0, 132, 169, 0.2);line-height:1}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-filter{padding-left:unset;padding-right:unset;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:2px;padding-inline-end:2px}}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-filter{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:5px;margin-inline-end:5px}}.main-search__applied-filter .icon-button{padding-left:10px;padding-right:4px;padding-top:2px;padding-bottom:1px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-filter .icon-button{padding-left:unset;padding-right:unset;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:4px;padding-inline-end:4px}}.main-search__applied-filter .icon-button nano-icon{pointer-events:none}.main-search .topbar__bkbtn{position:relative;left:-7px}:host(.small) .main-search .topbar__query{display:none}.main-search .topbar__filtering{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:1em;margin-right:0;margin-top:0;margin-bottom:0;-webkit-box-flex:1;-ms-flex:1;flex:1}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search .topbar__filtering{margin-left:unset;margin-right:unset;-webkit-margin-start:1em;margin-inline-start:1em;-webkit-margin-end:0;margin-inline-end:0}}.main-search .topbar__order{min-width:175px;max-width:200px;margin-left:auto;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search .topbar__order{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}}:host(.small) .main-search .topbar__order{max-width:300px}.main-search .topbar nano-select{opacity:1;-webkit-transition:0.1s ease opacity;transition:0.1s ease opacity}.main-search .topbar nano-select:not(.hydrated){opacity:0}.main-search .topbar__show-filters{margin-left:0.5em;margin-right:0;margin-top:0;margin-bottom:0;text-transform:uppercase;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search .topbar__show-filters{margin-left:unset;margin-right:unset;-webkit-margin-start:0.5em;margin-inline-start:0.5em;-webkit-margin-end:0;margin-inline-end:0}}.main-search .topbar__show-filters nano-icon{font-size:20px}:host(.small) .main-search .topbar__show-filters{display:-webkit-box;display:-ms-flexbox;display:flex}.main-search .topbar__filter-count{width:12px;height:12px;-webkit-box-shadow:inset 0 3px 4px 0 rgba(0, 0, 0, 0.2);box-shadow:inset 0 3px 4px 0 rgba(0, 0, 0, 0.2);border:solid 1px #005c76;background-color:#005c76;color:white;font-size:7px;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1;margin-bottom:3px}.main-search__results{font-size:14px;padding:1em 40px;color:rgba(69, 85, 86, 0.85);width:70%;height:100%}@media (max-width: 576px){.main-search__results{padding:1em 20px}}:host(.small) .main-search__results{width:100%}.main-search__filters{outline:none;padding-left:0;padding-right:40px;padding-top:1.8em;padding-bottom:1em;-webkit-box-flex:1;-ms-flex:1 1 30%;flex:1 1 30%;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__filters{padding-left:unset;padding-right:unset;-webkit-padding-start:0;padding-inline-start:0;-webkit-padding-end:40px;padding-inline-end:40px}}@media (max-width: 576px){.main-search__filters{padding-right:20px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__filters{padding-right:unset;-webkit-padding-end:20px;padding-inline-end:20px}}}:host(:not(.small)) .main-search__filters{max-width:350px;min-width:220px}.filters{color:#455556;background:white;font-size:14px}:host(.small) .filters{position:fixed;width:0;height:0;z-index:10;top:0;right:0;-webkit-transition:all 0s ease 0.5s;transition:all 0s ease 0.5s;background:none}:host(.small) .filters.show{height:100vh;width:100vw;-webkit-transition:all 0s ease 0s;transition:all 0s ease 0s}:host(.small) .filters.show::after{opacity:1}:host(.small) .filters::after{content:"";background:rgba(0, 0, 0, 0.5);position:absolute;left:0;top:0;right:0;bottom:0;z-index:-1;opacity:0;-webkit-transition:0.1s ease opacity;transition:0.1s ease opacity}.filters__close-filters{display:none !important;font-size:1.4em}:host(.small) .filters__close-filters{display:inline-block !important;margin-left:auto;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.small) .filters__close-filters{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}}:host(.small) .filters-wrap{position:absolute;top:0;right:0;background:#f7f6f6;-webkit-transform:translateX(100%);transform:translateX(100%);width:300px;min-width:200px;max-width:80vw;-webkit-transition:-webkit-transform 0.3s ease;transition:-webkit-transform 0.3s ease;transition:transform 0.3s ease;transition:transform 0.3s ease, -webkit-transform 0.3s ease;padding:1em;color:black;overflow:auto;height:100vh}:host(.small) .filters.show .filters-wrap{-webkit-transform:translateX(0%);transform:translateX(0%);-webkit-box-shadow:-3px -3px 7px rgba(0, 0, 0, 0.1);box-shadow:-3px -3px 7px rgba(0, 0, 0, 0.1)}.filters ul{margin:0;padding:0;list-style:none}.filters li{margin:0;padding:0}.filters nano-details{--padding:0.8em;margin:0.8em 0}.filters nano-details strong[slot]{display:block;padding-left:calc(20px - 0.8em)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters nano-details strong[slot]{padding-left:unset;-webkit-padding-start:calc(20px - 0.8em);padding-inline-start:calc(20px - 0.8em);}}.filters nano-details nano-icon[slot=icon-end]{padding-left:calc(20px - 0.8em);padding-right:calc(20px - 0.8em)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters nano-details nano-icon[slot=icon-end]{padding-left:unset;padding-right:unset;-webkit-padding-start:calc(20px - 0.8em);padding-inline-start:calc(20px - 0.8em);-webkit-padding-end:calc(20px - 0.8em);padding-inline-end:calc(20px - 0.8em)}}.filters li:last-child .filter-label{margin-bottom:0}.filters .filter-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;margin:0.5em 0;line-height:1.4;z-index:0}.filters .filter-label::before{margin-left:0;margin-right:1em;margin-top:0;margin-bottom:0;content:"";border:1px solid #007495;background:#fff;border-radius:3px;height:1em;width:1em;min-width:1em;min-height:1em;display:inline-block}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters .filter-label::before{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:1em;margin-inline-end:1em}}.filters .filter-label::after{background-image:url("data:image/svg+xml;charset=utf-8,<svg%20xmlns=\'http://www.w3.org/2000/svg\'%20viewBox=\'0%200%20512%20512\'><path%20fill=\'%23ffffff\'%20d=\'M173.898%20439.404l-166.4-166.4c-9.997-9.997-9.997-26.206%200-36.204l36.203-36.204c9.997-9.998%2026.207-9.998%2036.204%200L192%20312.69%20432.095%2072.596c9.997-9.997%2026.207-9.997%2036.204%200l36.203%2036.204c9.997%209.997%209.997%2026.206%200%2036.204l-294.4%20294.401c-9.998%209.997-26.207%209.997-36.204-.001z\'/></svg>");content:"";height:0.7em;width:0.7em;position:absolute;left:2px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:1;display:block;background-size:100%;background-position:center center;background-repeat:no-repeat}:host([dir=rtl]) .filters .filter-label::after{right:1px;left:auto}.filters .filter-cb{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.filters .filter-cb:checked+.filter-label::before{background:#245a6f}.filters .filter-cb:focus+.filter-label::before{-webkit-box-shadow:0 0 0 1px rgba(0, 0, 0, 0.7);box-shadow:0 0 0 1px rgba(0, 0, 0, 0.7)}.filters-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.filters-reset{color:#007495;font-size:12px;text-decoration:underline;margin-left:auto;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters-reset{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}}:host(.small) .filters-reset{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.filters-title{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;text-transform:uppercase;color:rgba(69, 85, 86, 0.85);font-weight:bold;font-size:14px}:host(.small) .filters-title{display:none}.result{text-decoration:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding-bottom:14px;border-bottom:1px solid #e4e6e8}.result *{word-wrap:break-word;word-break:break-word}.result__title{color:#007495;font-size:16px;line-height:1.43;margin:1em 0 0.5em 0;text-decoration:underline;width:70%;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:500}.result__title nano-icon{margin-left:0;margin-right:0.5em;margin-top:0;margin-bottom:0;min-width:20px;min-height:20px;opacity:0.8}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.result__title nano-icon{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0.5em;margin-inline-end:0.5em}}@media (max-width: 768px){.result__title{width:100%}}.result__body{color:#455556;font-size:14px;line-height:1.67;width:70%}@media (max-width: 768px){.result__body{width:100%}}.result__date{font-size:10px;line-height:1.6;color:#455556;text-align:right;margin:auto 0;width:30%}@media (max-width: 768px){.result__date{width:100%;margin:0.8em 0 0 0}}';let l=class{constructor(e){t(this,e)}handleAlgoliaCredsChange(){if(!this.apiKey||!this.appId||!this.algoliaEle)return;this.algoliaEle.apiKey=this.apiKey;this.algoliaEle.appId=this.appId}handleAlgoliaIndexChange(){if(!this.index||!this.algoliaEle)return;this.algoliaEle.searchIndex=this.index}handleGlobalNavReset(t){if(t.target.tagName!=="NANO-GLOBAL-NAV")return;this.algoliaResultsEle=null;this.goback()}handleGlobalNavSearch(t){if(t.target.tagName!=="NANO-GLOBAL-NAV")return;const{detail:{results:e,client:n}}=t;const i=e.find((t=>t.selected));this.apiKey=n.apiKey;this.appId=n.appId;this.index={name:i.indexName,index:i.index,domain:i.domain,filters:i.filters};this.algoliaEle.query=i.query}handleReorder(t){if(t.composedPath().find((t=>t.classList&&t.classList.contains("indexchange")))&&!!this.algoliaResultsEle){this.changeOrder(t)}}attachListeners(t){if(!t.composedPath().find((t=>t.id&&t.id==="main-search")))return;this.algoliaResultsEle=this.algoliaEle.querySelector("#main-search-results");this.attachResultListeners();this.algoliaEle.querySelectorAll(".filters-reset").forEach((t=>{t.addEventListener("click",(()=>{this.removeAllFilters()}))}));this.algoliaEle.querySelectorAll(".close-filters").forEach((t=>{t.addEventListener("click",(()=>{this.closefilters()}))}));let e=this.algoliaEle.querySelector(".filters-wrap");if(e){e.addEventListener("click",(t=>{t.stopPropagation()}))}this.filtersDiv=this.algoliaEle.querySelector("#main-search-filters")}attachResultListeners(t){if(t&&t.composedPath().find((t=>t===this.algoliaEle))){this.algoliaResultsEle=this.algoliaEle.querySelector("nano-algolia-results")}if(!this.algoliaResultsEle)return;let e=this.algoliaResultsEle;e.querySelectorAll(".remove-filter").forEach((t=>{t.addEventListener("click",(t=>{let e=t.target;this.removeFilter(e.dataset.filter,e.dataset.filterVal)}))}));e.querySelectorAll(".back-btn").forEach((t=>{t.addEventListener("click",(()=>{this.goback()}))}));e.querySelectorAll(".topbar__show-filters").forEach((t=>{this.openFilterBtn=t;t.addEventListener("click",(()=>{this.filtersDiv.tabIndex=-1;this.filtersDiv.classList.add("show");this.filtersDiv.setAttribute("aria-expanded","true");document.body.style.overflow="hidden";setTimeout((()=>this.filtersDiv.focus()),20)}))}))}changeOrder(t){this.algoliaEle.replicaIndex=t.detail.value}goback(){this.removeAllFilters();this.algoliaEle.showResults=false;this.algoliaEle.query=""}removeFilter(t,e){this.algoliaEle.removeFilters(t,e)}removeAllFilters(){this.algoliaEle.removeFilters()}closefilters(){if(!this.filtersDiv)return;this.filtersDiv.tabIndex=null;this.filtersDiv.classList.remove("show");this.filtersDiv.setAttribute("aria-expanded","false");document.body.style.overflow="";setTimeout((()=>this.openFilterBtn.focus()),20)}componentDidLoad(){this.ro=new a((t=>{for(const e of t){if(!e.contentRect.width)return;this.currentWidth=e.contentRect.width}}));this.ro.observe(this.el);this.algoliaEle.filters=["created > "+Math.floor((Date.now()-631152e5)/1e3)]}render(){return e(n,{class:{small:this.currentWidth<577},dir:this.el.ownerDocument.dir==="rtl"?"rtl":false},e("nano-algolia",{"store-id":"searchq","store-method":"url-hash-push",class:"main-search__wrap sc-nano-global-search-results",ref:t=>s((()=>this.algoliaEle=t)),id:"main-search"},e("script",{type:"text/template",slot:"template"},`<div class="main-search sc-nano-global-search-results">\n <nano-algolia-results id="main-search-results" class="main-search__results sc-nano-global-search-results" infinite-scroll>\n <script type="text/template" slot="start-template">\n <div class="sc-nano-global-search-results main-search__topbar topbar">\n <button class="sc-nano-global-search-results topbar__bkbtn back-btn icon-button">\n <nano-icon class="sc-nano-global-search-results" name="light/chevron-left" size="small"></nano-icon>\n </button>\n <div>\n <em class="sc-nano-global-search-results topbar__query">'{{ it.query }}' - </em> <strong>{{ it.totalHitsWithFilters }}</strong> Results\n </div>\n\n <div class="sc-nano-global-search-results topbar__filtering">\n {{ @if (it.results.length) }}\n\n {{ @if (it.indexName === 'All') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <option value="all_prod_en">Sort by: Most relevant</option>\n <option value="all_prod_en_date_desc">Sort by: Newest</option>\n <option value="all_prod_en_date_asc">Sort by: Oldest</option>\n <option value="all_prod_en_activity_date_desc">Sort by: Recent activity</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'www') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <option value="cws_english_en">Sort by: Most relevant</option>\n <option value="cws_english_en_date_desc">Sort by: Newest</option>\n <option value="cws_english_en_date_asc">Sort by: Oldest</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Resources') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <option value="cws_english_resources_en">Sort by: Most relevant</option>\n <option value="cws_english_resources_en_featured_desc">Sort by: Newest</option>\n <option value="cws_english_resources_en_featured_asc">Sort by: Oldest</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Store') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <option value="store_prod">Sort by: Most relevant</option>\n <option value="store_prod_date_desc">Sort by: Newest</option>\n <option value="store_prod_date_asc">Sort by: Oldest</option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Community') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--community indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <option value="community_prod">Sort by: Most relevant</option>\n <option value="community_prod_date_desc">Sort by: Newest</option>\n <option value="community_prod_date_asc">Sort by: Oldest</option>\n <option value="community_prod_activity_date_desc">Sort by: Recent activity</option>\n </nano-select>\n {{ /if }}\n {{ /if }}\n\n <button class="sc-nano-global-search-results topbar__show-filters filters-title" aria-controls="main-search-filters">\n {{ @if (it.appliedFilters && it.appliedFilters.length > 0) }}\n <span class="sc-nano-global-search-results topbar__filter-count">\n {{ (it.appliedFilters.reduce(function(a, b) { return a + (b.values ? b.values.length : 0) }, 0)) }}\n </span>\n {{ /if }}\n <nano-icon class="sc-nano-global-search-results" name="light/filter"></nano-icon>\n </button>\n </div>\n </div>\n\n {{ @if (it.results.length) }}\n <div class="sc-nano-global-search-results main-search__applied-filters">\n {{ @if (it.appliedFilters) }}\n {{ @each(it.appliedFilters) => filterObj }}\n {{ @each(filterObj.values) => filterVal }}\n <span class="sc-nano-global-search-results main-search__applied-filter">\n {{ filterVal | public_name }}\n <button class="sc-nano-global-search-results icon-button remove-filter" data-filter="{{ filterObj.name }}" data-filter-val="{{ filterVal }}">\n <nano-icon class="sc-nano-global-search-results" name="light/times"></nano-icon>\n </button>\n </span>\n {{ /each }}\n {{ /each }}\n {{ #else }}\n <span class="sc-nano-global-search-results main-search__applied-nofilter"> </span>\n {{ /if }}\n </div>\n {{ /if }}\n <\/script>\n\n <script type="text/template" slot="result-template">\n {{ @if (it.totalHitsWithFilters > 0) }}\n {{ @each(it.results) => result }}\n <li class="sc-nano-global-search-results">\n <a class="sc-nano-global-search-results result" href="{{ result.url | abs_url(it, result) }}">\n <h4 class="sc-nano-global-search-results result__title" data-icon-set="{{(iconSet = false)}}">\n {{ @if (!it.legacy) }}\n\n {{ @if (result.type === 'faq' || result.type === 'faqs') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/question-circle"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'comment') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/comment"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'protocol') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/clipboard-list"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'publication') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/file-chart-line"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'poster' || result.type === 'lc_poster') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/presentation"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'post') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/comments"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'news_item') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/newspaper"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'event') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/calendar"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'talk' || result.type === 'lc_lightning_talk' || result.type === 'ncm_plenary_talk' || result.type === 'ncm_lightning_talk') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/keynote"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'video') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/video"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'data_release') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/analytics"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'job_vacancy') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/ballot-check"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'tool') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/wrench"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'literature') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/book"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'community_info') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/users"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'article') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/file-alt"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'provider') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/handshake"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'apps') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/vials"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'white_paper') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/file-pdf"></nano-icon>\n {{ /if }}\n\n {{ @if (result.type === 'Nanopore Store') }}\n <nano-icon data-icon-set="{{(iconSet = true)}}" class="sc-nano-global-search-results" name="light/shopping-cart"></nano-icon>\n {{ /if }}\n\n {{ @if (!result.type || !iconSet) }}\n <nano-icon class="sc-nano-global-search-results" name="light/file"></nano-icon>\n {{ /if }}\n {{ /if }}\n {{ result.title | safe }}\n </h4>\n {{ @if (result.body) }}\n <div class="sc-nano-global-search-results result__body">{{ result.body | safe | trim_to(200) }}</div>\n {{ /if }}\n {{ @if (result.updated) }}\n <div class="sc-nano-global-search-results result__date">Last Updated: {{ result.updated | date_short }}</div>\n {{ #else }}\n {{ @if (result.created) }}\n <div class="sc-nano-global-search-results result__date">Added: {{ result.created | date_short }}</div>\n {{ /if }}\n {{ /if }}\n </a>\n </li>\n {{ /each }}\n {{ /if }}\n <\/script>\n\n <div slot="start-output"></div>\n <ul slot="result-output" class="sc-nano-global-search-results"></ul>\n </nano-algolia-results>\n\n {{ @if(Object.keys(it.origFilters).length) }}\n <div class="sc-nano-global-search-results main-search__filters filters close-filters" id="main-search-filters">\n <div class="sc-nano-global-search-results filters-wrap">\n {{ @if(it.totalHits) }}\n <div class="sc-nano-global-search-results filters-header">\n <strong class="sc-nano-global-search-results filters-title">Filters</strong>\n <button class="sc-nano-global-search-results filters-reset">Reset</button>\n <button class="sc-nano-global-search-results filters__close-filters close-filters icon-button" aria-controls="main-search-filters">\n <nano-icon class="sc-nano-global-search-results" name="light/times"></nano-icon>\n </button>\n </div>\n {{ /if }}\n\n <div>\n {{ @if(it.origFilters['type']) }}\n <nano-details class="sc-nano-global-search-results" open={true} icon-rotation="180">\n <strong slot="label">Type</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf1" store-method="url-hash-push" filter-name="type">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="sc-nano-global-search-results filter-cb" type="checkbox" value="{{ filter }}" id="type-{{ filter }}-{{x}}" />\n <label class="sc-nano-global-search-results filter-label" for="type-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['channel']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Channels</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf2" store-method="url-hash-push" filter-name="channel">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="filter-cb sc-nano-global-search-results" type="checkbox" value="{{ filter }}" id="channel-{{ filter }}-{{x}}" />\n <label class="filter-label sc-nano-global-search-results" for="channel-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['authors']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Authors</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf3" store-method="url-hash-push" filter-name="authors">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="filter-cb sc-nano-global-search-results" type="checkbox" value="{{ filter }}" id="authors-{{ filter }}-{{x}}" />\n <label class="filter-label sc-nano-global-search-results" for="authors-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['categories_without_path']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Category</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf4" store-method="url-hash-push" filter-name="categories_without_path">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n {{ @if(!filter.match(/publication/)) }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="sc-nano-global-search-results filter-cb" type="checkbox" value="{{ filter }}" id="cwp-{{ filter }}-{{x}}" />\n <label class="sc-nano-global-search-results filter-label" for="cwp-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /if }}\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['tags']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Tags</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf5" store-method="url-hash-push" filter-name="tags">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="filter-cb sc-nano-global-search-results" type="checkbox" value="{{ filter }}" id="tags-{{ filter }}-{{x}}" />\n <label class="filter-label sc-nano-global-search-results" for="tags-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n </div>\n </div>\n </div>\n {{ /if }}\n </div>`),e("div",{slot:"output"}),e("slot",null)))}get el(){return i(this)}static get watchers(){return{algoliaEle:["handleAlgoliaCredsChange","handleAlgoliaIndexChange"],apiKey:["handleAlgoliaCredsChange"],appId:["handleAlgoliaCredsChange"],index:["handleAlgoliaIndexChange"]}}};l.style=r;export{l as nano_global_search_results};
|
5
|
+
//# sourceMappingURL=p-e669e7d5.entry.js.map
|