@nanoporetech-digital/components 3.3.0 → 3.3.1
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 +14 -0
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +5 -5
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +9 -2
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +5 -2
- package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-2ddb22be.js → nano-table-10d45fe4.js} +19 -16
- package/dist/cjs/nano-table-10d45fe4.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +1 -1
- package/dist/cjs/{table.worker-ec62a083.js → table.worker-a192a107.js} +2 -2
- package/dist/cjs/table.worker-a192a107.js.map +1 -0
- package/dist/collection/components/global-nav/global-nav.js +12 -4
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-nav/style/global-nav.css +22 -22
- package/dist/collection/components/global-search-results/global-search-results.js +22 -2
- package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
- package/dist/collection/components/nav-item/nav-item.js +16 -5
- package/dist/collection/components/nav-item/nav-item.js.map +1 -1
- package/dist/collection/components/table/table.children.js +3 -3
- package/dist/collection/components/table/table.children.js.map +1 -1
- package/dist/collection/components/table/table.css +26 -12
- package/dist/collection/components/table/table.js +11 -8
- package/dist/collection/components/table/table.js.map +1 -1
- package/dist/collection/components/table/table.store.js +2 -2
- package/dist/collection/components/table/table.store.js.map +1 -1
- package/dist/components/nano-global-nav.js +9 -2
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/nano-global-search-results.js +6 -3
- package/dist/components/nano-global-search-results.js.map +1 -1
- package/dist/components/nano-table.js +17 -14
- package/dist/components/nano-table.js.map +1 -1
- package/dist/components/nav-item.js +5 -5
- package/dist/components/nav-item.js.map +1 -1
- package/dist/custom-elements/index.js +36 -23
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +5 -5
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +9 -2
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +6 -3
- package/dist/esm/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm/{nano-table-9d4fbd41.js → nano-table-a7a5a3f8.js} +19 -16
- package/dist/esm/nano-table-a7a5a3f8.js.map +1 -0
- package/dist/esm/nano-table.entry.js +1 -1
- package/dist/esm/{table.worker-1ba8ac3f.js → table.worker-d2b4d395.js} +2 -2
- package/dist/esm/table.worker-d2b4d395.js.map +1 -0
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/p-11d3a90b.js +5 -0
- package/dist/nano-components/p-11d3a90b.js.map +1 -0
- package/dist/nano-components/p-14329940.entry.js +5 -0
- package/dist/nano-components/p-14329940.entry.js.map +1 -0
- package/dist/nano-components/p-3a1026d1.entry.js +5 -0
- package/dist/nano-components/p-3a1026d1.entry.js.map +1 -0
- package/dist/nano-components/p-40e13cd4.entry.js +5 -0
- package/dist/nano-components/p-40e13cd4.entry.js.map +1 -0
- package/dist/nano-components/p-64200e25.js +5 -0
- package/dist/nano-components/{p-216ece9a.js.map → p-64200e25.js.map} +0 -0
- package/dist/nano-components/{p-89b8ce4f.entry.js → p-d9d2807a.entry.js} +2 -2
- package/dist/nano-components/{p-89b8ce4f.entry.js.map → p-d9d2807a.entry.js.map} +0 -0
- package/dist/types/components/global-nav/global-nav.d.ts +3 -3
- package/dist/types/components/global-search-results/global-search-results.d.ts +5 -1
- package/dist/types/components/nav-item/nav-item.d.ts +11 -0
- package/dist/types/components/table/table.d.ts +1 -1
- package/dist/types/components/table/table.store.d.ts +1 -1
- package/dist/types/components.d.ts +8 -0
- package/docs-json.json +147 -46
- package/docs-vscode.json +1 -1
- package/package.json +2 -2
- package/dist/cjs/nano-table-2ddb22be.js.map +0 -1
- package/dist/cjs/table.worker-ec62a083.js.map +0 -1
- package/dist/esm/nano-table-9d4fbd41.js.map +0 -1
- package/dist/esm/table.worker-1ba8ac3f.js.map +0 -1
- package/dist/nano-components/p-216ece9a.js +0 -5
- package/dist/nano-components/p-866e7e88.js +0 -5
- package/dist/nano-components/p-866e7e88.js.map +0 -1
- package/dist/nano-components/p-d8678bdc.entry.js +0 -5
- package/dist/nano-components/p-d8678bdc.entry.js.map +0 -1
- package/dist/nano-components/p-db4b6602.entry.js +0 -5
- package/dist/nano-components/p-db4b6602.entry.js.map +0 -1
- package/dist/nano-components/p-e4e41e06.entry.js +0 -5
- package/dist/nano-components/p-e4e41e06.entry.js.map +0 -1
@@ -1,5 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* Web Components for Nanopore digital Web Apps
|
3
|
-
*/
|
4
|
-
import{r as t,c as i,d as n,w as e,h as s,i as a,a as o,g as r}from"./p-1fe12320.js";import{a as l}from"./p-a0b93616.js";import{c as h}from"./p-845ae77e.js";import{C as c}from"./p-e3860f00.js";import{d}from"./p-9746b0a5.js";import{d as u}from"./p-167b9165.js";import"./p-69a3e911.js";async function p(t,{body:i,...n}={}){const e={Accept:"application/json, text/plain, */*","Access-Control-Allow-Origin":"*","Content-Type":"application/json",Cache:"no-cache"};const s={method:i?"POST":"GET",credentials:"include",keepalive:true,mode:"cors",...n,headers:{...e,...n.headers}};if(i){s.body=JSON.stringify(i)}let a=setTimeout((()=>{}),0);if(window.AbortController){const t=new AbortController;const{timeout:i=500}=n;a=setTimeout((()=>t.abort()),i);s.signal=t.signal}const o=await fetch(t,s);clearTimeout(a);if(o.ok){return await o.json()}else{const t=await o.text();return new Error(t)}}const g=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}.global-nav{font-family:inherit;font-size:inherit;font-stretch:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;z-index:var(--nano-layer-index-menubar, 10)}.global-nav button{background:none;color:inherit;border:none}.global-nav .icon-btn{position:relative;background:none;color:inherit;border:none;align-self:normal;padding:9px 7px;cursor:pointer;display:flex;align-items:center}.global-nav .icon-btn nano-icon{width:18px;height:18px}.global-nav ::slotted(nano-nav-item[slot=icon]){--padding-top:9px;--padding-bottom:9px;--padding-start:7px;--padding-end:7px;--display:flex;font-size:18px}.global-nav a{color:inherit;text-decoration:none;white-space:nowrap}.global-nav .nav-links_title{margin:8px 0 3px}.global-nav .nav-links ul{margin:0;padding:0}.global-nav .nav-links li{list-style:none}.global-nav .login-btn{display:flex;align-items:center}.global-nav .menu-btn{padding:9px var(--bar-item-spacing) 9px var(--bar-item-spacing)}.site-content{display:flex;transition:min-height 0.2s ease;min-height:calc(100% - 61px);position:relative;z-index:auto;align-items:stretch}.mask{opacity:0;background:rgba(0, 0, 0, 0.3);position:fixed;inset-inline:0;inset-block-start:0;height:100vh;z-index:-1;transition:transform 0.2s ease, opacity 0.2s ease, visibility 0.01s ease 0.2s, z-index 0.01s ease 0.2s;visibility:hidden}.mask.open{opacity:1;transition:z-index 0.01s ease, visibility 0.01s ease, transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s;z-index:3;visibility:visible}.bars{color:var(--bar-text-color);z-index:var(--nano-layer-index-menubar, 10);position:relative;max-width:100%;min-width:100%;box-shadow:none;transition:0.2s ease box-shadow}[stuck] .bars{box-shadow:0 1px 25px 0 rgba(0, 0, 0, 0.15)}.bars::before{content:"";width:100%;height:100%;z-index:-1;background:var(--bar-background);position:absolute}.main-bar{width:100%;padding-inline:0 var(--bar-item-spacing);padding-block:var(--bar-vertical-padding);display:flex;align-items:center;justify-content:space-between;overflow-x:hidden}.main-bar:focus{outline:none}:host(.ready) .main-bar{overflow-x:visible}.main-bar>*,.main-bar ::slotted(*){transition:opacity 0.2s ease}:host(:not(.ready)) .main-bar>*,:host(:not(.ready)) .main-bar ::slotted(*){opacity:0 !important}:host(.ready) .main-bar>*,:host(.ready) .main-bar ::slotted(*){opacity:1}:host(.resizing) .main-bar>*,:host(.resizing) .main-bar ::slotted(*){opacity:0 !important}.main-bar>*{flex:0 0 auto}.main-bar>* ::slotted(nano-nav-item[slot=icon]){margin-inline-start:11px}.main-bar>* ::slotted(nano-nav-item),.main-bar>* nano-nav-item{--color-hover:var(--bar-color-focus);--secondary-bg-color:var(--bar-dropdown-bg);--secondary-color:var(--bar-dropdown-text);--bg-color-open:var(--bar-background);text-decoration:none !important}.main-bar .icon-btn{margin-block-start:0;margin-block-end:0;margin-inline-start:6px}:host(.threshold-2) .main-bar .icon-btn{margin-block-start:0;margin-block-end:0;margin-inline-start:11px}.main-bar .menu-btn.icon-btn{margin:0 !important;border-inline-end:1.5px solid var(--bar-color-shade)}.main-bar .logo{height:36px;width:200px;min-width:200px}:host(:not(.threshold-1)) .main-bar .logo{height:30px}.main-bar .logo-link{margin-inline-end:0;margin-inline-start:0;padding-inline:var(--bar-item-spacing);display:flex;align-items:center;border:none}.main-bar .nav-links{flex:0 0 auto;display:flex;justify-content:space-around}.main-bar .nav-links ul{display:flex;justify-content:space-around}.main-bar .nav-links ::slotted(nano-nav-item),.main-bar .nav-links nano-nav-item{--padding-top:7px;--padding-bottom:7px;--padding-end:2px;--padding-start:2px;--margin:0 var(--bar-item-spacing)}.main-bar .nav-links--main{justify-content:flex-start;letter-spacing:0.5px;font-weight:600;font-stretch:expanded;text-transform:uppercase;font-size:1.065em;margin-inline-end:auto}.main-bar .nav-links--main ::slotted(nano-nav-item){--color:var(--bar-text-color);--padding-end:3px;--padding-start:0}.main-bar .nav-links--sub{--color:var(--color, #e2e2e2);margin-inline-start:6px;justify-content:flex-end}.main-bar .login-btn{display:inline-block;border-radius:4px;background-color:var(--login-button-bg);color:var(--login-button-text);padding:3px 10px;position:relative;inset-inline-start:auto;inset-block-end:auto;margin-inline:11px 0}.main-bar .measure-ele{min-width:1px;display:block;margin:0;padding:0}.sticker-trigger{background:var(--bar-background);width:100%;z-index:calc(var(--nano-layer-index-menubar, 10) + 1);height:1px}.sticker-trigger~.sticker-trigger{display:none}.gn-menu{position:fixed;inset-block-start:0;inset-inline-start:0;z-index:-1;display:none;transition:z-index 0.01s ease 0.2s;height:100vh;width:100vw;overflow-y:auto}:host(.threshold-4) .gn-menu{position:absolute;width:calc(100vw - 20px)}.gn-menu.menu-full-screen{width:100vw !important}.gn-menu_wrap{max-width:92vw;width:335px;background:var(--menu-background);color:var(--menu-text-color);padding:calc(var(--bar-vertical-padding) + 1px) 0 0;box-shadow:0 0 36px 0 rgba(0, 0, 0, 0.8);position:relative;pointer-events:all;margin-block-end:36px;opacity:0;outline:none;transition:transform 0.2s ease, opacity 0.2s ease}.gn-menu_wrap.has-promotion{padding:var(--menu-padding) 0 0}.gn-menu.open{z-index:var(--nano-layer-index-dropdown, 300);transition:z-index 0.01s ease}.gn-menu.open .gn-menu_wrap{opacity:1;transform:translate3d(0, 0, 0) !important;transition:transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s}.gn-menu_actions{padding-inline-end:calc(var(--menu-padding) / 2);display:flex;justify-content:space-between}.gn-menu_actions-counter{background:#d0021b;color:var(--menu-text-color);position:absolute;inset-block-end:4px;inset-inline:auto 0;font-size:9px;height:14px;line-height:14px;width:auto;min-width:14px;border-radius:50%;box-sizing:border-box;text-align:center;text-indent:0}.gn-menu .content-wrap{position:relative;overflow:hidden;transition:0.2s ease min-height;min-height:190px}.gn-menu .content--sub{padding:var(--menu-padding) 0 var(--menu-padding) 7px}.gn-menu .menu-btn{margin-inline-end:auto}.gn-menu .nav-links{display:flex;flex-wrap:wrap}.gn-menu .nav-links ::slotted(nano-nav-item),.gn-menu .nav-links nano-nav-item{--icon-size:14px;--display:inline-block;--secondary-bg-color:#001a21;--padding-top:10px;--padding-bottom:10px;--padding-end:calc(var(--menu-padding) * 2);--padding-start:calc(var(--menu-padding) + 3px);--color:var(--menu-text-color);--color-hover:var(--menu-title-text);--bg-color-hover:transparent;--bg-color-focus:#002530;--focus-outline:none;width:100%}.gn-menu .nav-links .user-nav{--bg-color:var(--menu-user-panel-bg);--padding-top:9px;--padding-bottom:9px;font-weight:bold;margin:5px 0 0}.gn-menu .nav-links .user-nav ::slotted(nano-nav-item),.gn-menu .nav-links .user-nav nano-nav-item{font-weight:500;--bg-color:transparent}.gn-menu .nav-links .user-nav .content{padding:0;background-color:var(--menu-user-panel-bg)}.gn-menu .nav-links .user-nav .content--sub{padding-inline:var(--menu-padding)}.gn-menu .nav-links .user-nav .back-btn{padding-inline-start:var(--menu-padding)}.gn-menu .nav-links_title{margin:0 var(--menu-padding) 4px;border-block-end:1px solid var(--menu-hint-color);padding-block-end:8px;text-transform:uppercase;color:var(--menu-title-text);letter-spacing:1px;font-weight:700}.gn-menu .nav-links_title--sites{border-block-end:none}.gn-menu .nav-links-wrap{margin:18px 0}.gn-menu .nav-links-wrap:last-child{margin-block-end:0}.gn-menu .nav-links .back-btn{border-block-start:1px solid var(--menu-hint-color);border-block-end:1px solid var(--menu-hint-color);display:flex;align-items:center;padding:10px 11px 10px 0;width:100%;font-size:12px;text-transform:uppercase;color:var(--menu-title-text);letter-spacing:1px;font-weight:700;cursor:pointer;font-stretch:expanded}.gn-menu .nav-links .back-btn:hover{color:var(--menu-text-color)}.gn-menu .nav-links .back-btn nano-icon{margin-inline-end:10px;font-size:12px;color:var(--menu-icon-color)}.gn-menu .nav-links--sub{display:flex;flex-wrap:wrap}.gn-menu .nav-links--sub ::slotted(nano-nav-item),.gn-menu .nav-links--sub nano-nav-item{--border-bottom:none;--padding-end:var(--menu-padding);--padding-start:var(--menu-padding);--padding-top:8px;--padding-bottom:8px;margin:0;width:50%;line-height:1.8}.gn-menu .nav-links--sites ::slotted(nano-nav-item),.gn-menu .nav-links--sites nano-nav-item{width:100%}.gn-menu .nav-links .content{padding:8px var(--menu-padding)}.gn-menu .login-btn{padding-inline:7px var(--menu-padding);padding-block:var(--menu-padding)}.gn-menu .login-btn nano-icon{margin-inline-start:10px}.gn-menu .logout-btn{justify-content:flex-end}.gn-menu .logout-btn a{padding:0 5px}.search-btn::before{content:"";background-color:#0c5a71;height:9px;inset-inline:0 5px;inset-block-end:-20px;position:absolute;transform:translateZ(0) scaleX(0);transform-origin:0;transition:0.2s ease transform}.search-btn--open::before{transform:translateZ(0) scaleX(1);opacity:0.7}.search-bar{height:0;overflow:hidden;transition:0.2s ease height;padding:0 var(--bar-item-spacing);outline:none;max-width:45em;margin-inline-start:auto;}.search-bar .search-widget{margin:0;overflow:inherit;max-width:none;max-height:none;min-width:auto;padding-inline-end:0}.search-bar .search-widget .search-icon--search{display:none}.search-bar .search-widget .search-input{--input-border-width:2px 0 0 0;--input-bg-color:#f3f3f3;--nano-input-border-color:transparent;--nano-input-border-color--focus:var(--bar-color-shade);font-size:1.1875em}.search-bar .search-widget nano-select.search-input{--input-border-width:2px 3px 0 0;--input-bg-color:var(--bar-color-shade);--input-bg-color--focus:#f3f3f3;color:#f3f3f3}.search-bar .search-widget nano-select.search-input.has-focus{color:var(--bar-color-shade)}.search-bar .search-widget .select-input__arrow{font-size:0.75em}.search-bar .search-widget .select__mask.sc-nano-select{line-height:2.35em;min-height:2.35em;padding-block-start:2px}.search-bar .search-inputs{padding:0 0;margin:0 0}.search-bar .search-autocomplete{inset-block-start:100%;width:100%}.search-widget{padding-inline-end:var(--bar-item-spacing);margin-inline-start:var(--bar-item-spacing);margin-inline-end:auto;position:relative;flex:1 1 auto;max-width:500px;min-width:350px;max-height:36px;inset-block-start:-1px}.search-inputs{display:flex;margin:0}.search-inputs input[type=submit]{display:none}.search-autocomplete{position:absolute;inset-block-start:calc(100% + 15px);width:calc(100% - var(--bar-item-spacing));inset-inline-start:0;background:white;border:2px solid var(--bar-color-tint);border-radius:0 0 5px 5px;color:#4a4a4a;padding-block-start:calc(var(--bar-vertical-padding) / 2);padding-inline-end:0;padding-block-end:1px;padding-inline-start:0;z-index:1}.search-autocomplete-hit{padding-block:calc(var(--bar-vertical-padding) / 4);padding-inline:var(--bar-item-spacing);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;text-align:start;line-height:1.5;cursor:pointer}.search-autocomplete-hit-scope{color:#a7b0b3;font-weight:600}.search-autocomplete-hit:hover,.search-autocomplete-hit:focus-visible{background-color:#e4e6e8}.search-autocomplete-hit:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.search-autocomplete-hit:focus{outline:none}.search-autocomplete-hit .search__highlight,.search-autocomplete-hit em{font-weight:bold;font-style:normal}.search-autocomplete-hit--no-result:hover,.search-autocomplete-hit--no-result:focus{background:none !important}.search-autocomplete-foot{margin:7px 0 0}.search-autocomplete-submit{background:none;border:none;align-self:normal;padding:9px var(--bar-item-spacing) !important;cursor:pointer;display:flex;align-items:center;color:#007495;justify-content:flex-end;width:100%;text-decoration:underline;border-block-start:1px solid #e8eaea}.search-autocomplete-submit:hover,.search-autocomplete-submit:focus{background-color:#e4e6e8}nano-select.search-input{--input-border-width:0 0 2px 0;--input-text-color:var(--bar-text-color);--nano-input-border-color:rgb(103, 138, 154);--padding-end:var(--bar-item-spacing);--nano-input-border-color--focus:black;font-stretch:expanded;font-size:1.2em;flex:0 1 auto;width:auto;display:flex;align-items:center;flex-direction:column;position:relative;inset-inline-start:1px;text-transform:uppercase}:host(:not(.ready)) nano-select.search-input{overflow:hidden;max-height:1em}nano-select.search-input .down-arrow{font-size:0.65em}nano-input.search-input{--clear-btn-color:var(--bar-text-color);--nano-input-border-color:rgb(103, 138, 154);--input-border-width:0 0 2px 0;--placeholder-color:var(--bar-text-color);--input-text-color:var(--bar-text-color);--padding-start:21px;--nano-input-border-color--focus:black;font-size:1.2em;width:206px;display:flex;align-items:center;flex-direction:column;flex:1}:host([dir=rtl]) nano-input.search-input{--input-border-radius:5px 0 0 5px}:host(:not(.ready)) nano-input.search-input{overflow:hidden;max-height:1em}nano-input.search-input .search-icon{background:none;padding:0 8px;display:none;font-size:0.9em}nano-input.search-input .search-icon--show{display:flex}nano-input.search-input .search-icon--loader{animation:spin 1s linear infinite}@keyframes spin{100%{transform:rotate(360deg)}}nano-input.search-input .search-icon nano-icon{height:1.4em}.user-profile{display:flex;justify-content:space-between;align-items:center;padding:2em;background-color:var(--menu-user-profile-bg)}.user-profile .left{display:flex;align-items:center}.user-profile .avatar-container{position:relative}.user-profile .avatar-container img.avatar{border-radius:50px}.user-profile .avatar-container img.logo-small{position:absolute;height:30px;width:30px;inset-block-end:0;inset-inline-end:0;background-color:#27586e;border-radius:10px;padding:5px}.user-profile .user-details{display:flex;flex-direction:column;margin:0 1.25em;color:white}.user-profile .user-details .name{font-size:1.25em}.user-profile .user-details .bio{margin:0.5em 0}.user-profile .user-details .kudos span{background-color:#81c7eb;color:#415958;padding:0.25em;border-radius:0.5em;font-weight:bold}.user-profile .chevron-right{font-size:1.5em;color:white}.user-links{position:relative}.user-links .icon-btn{padding-inline-end:0;font-weight:500}.user-links .icon-btn nano-icon{margin-inline-start:5px;width:16px;height:16px;transform-origin:center;transition:transform 0.2s ease, color 0.2s ease}.user-links .icon-btn.open nano-icon{transform:rotate(180deg);color:#007495}.user-links-panel{display:none;position:absolute;border-radius:4px 0 4px 4px;box-shadow:0 1px 5px 0 rgba(0, 0, 0, 0.4);background-color:#568c9d;opacity:0;transform:translate3d(0, 30px, 0);transition:transform 0.2s ease, opacity 0.2s ease;inset-inline-end:0;min-width:318px;z-index:2}.user-links-panel:focus{outline:none}.user-links-panel.show{opacity:1;transform:translate3d(0, calc(var(--padding) + 1px), 0)}.user-links-panel-content{padding:0 18px;display:flex;flex-direction:column;color:white}.user-links-panel-content a{padding:11px 0;border-block-end:#669dac 1px solid}.user-links-panel-content a:hover,.user-links-panel-content a:focus{color:#455556}.user-links-panel-content a:last-child{border-block-end:none}.user-links-panel-foot{background-color:#aac5cd;border-radius:0 0 4px 4px;padding:var(--padding);color:#455556;display:flex;align-items:center;font-weight:500;justify-content:space-between}.user-links-panel-foot a:hover{text-decoration:underline}.user-links-panel .user-profile{background-color:var(--bar-user-panel-bg)}:host{--bar-vertical-padding:21px;--bar-item-spacing:13px;--bar-background:white;--bar-text-color:#196c82;--bar-color-shade:rgb(12, 90, 113);--bar-color-tint:rgb(19, 89, 111);--bar-color-focus:#99a3a6;--bar-user-panel-bg:#016d86;--bar-dropdown-bg:#196c82;--bar-dropdown-text:white;--menu-background:#001a21;--menu-text-color:white;--menu-user-profile-bg:#001a21;--menu-user-panel-bg:#193037;--menu-padding:12px;--menu-hint-color:#33484d;--menu-title-text:#90c6e7;--menu-icon-color:white;--login-button-bg:#17bb75;--login-button-text:white;--padding:12px;--padding-top:var(--padding);--padding-end:var(--padding);--padding-bottom:var(--padding);--padding-start:var(--padding);display:block;position:relative;line-height:1.5;height:100%;font-size:0.9375em;font-size:clamp(0.77rem, 1vw, 0.9rem)}:host input,:host select,:host button{font-family:inherit;-webkit-appearance:none;appearance:none;font-size:inherit}:host a:focus,:host button:focus{outline:none}:host a:focus-visible,:host button:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}';const m={about:0,main:1,login:2,search:3,icon:4};const b=class{constructor(n){t(this,n);this.nanoIsReady=i(this,"nanoIsReady",7);this.nanoSearchResult=i(this,"nanoSearchResult",7);this.nanoSearchError=i(this,"nanoSearchError",7);this.nanoSearchReset=i(this,"nanoSearchReset",7);this.currSize=0;this.thresholdsGoingUp=false;this.THRESHOLDLIMIT=Object.keys(m).length;this.autocompleteEles=[];this.currAIndex=-1;this.isLoggedIn=false;this.myAccData=null;this.aboutNavItms=[];this.siteNavItms=[];this.loggedInNavItms=[];this.setResizingState=(t=false)=>{if(typeof this.debounceSetResizingState==="undefined"){this.debounceSetResizingState=d(this.setResizingState,600)}if(t){this.isResizing=true;this.debounceSetResizingState()}else{this.isResizing=false;this.thresholdsGoingUp=false}};this.onMenuBtnKeyDown=t=>{switch(t.key){case"Enter":case" ":this.modalOpen?this.menuClose(t,true):this.menuOpen();break}};this.onMenuBtnClick=t=>{this.menuClose(t,true)};this.menuOpen=t=>{if(t)t.preventDefault();this.menuDiv.style.display="block";this.modalOpen=true;this.modalIsOpen=true;this.menuWrapDiv.addEventListener("focusout",this.menuClose);this.menuWrapDiv.focus({preventScroll:true});if(this.threshold<2||this.menuWrapDiv.scrollHeight>window.innerHeight){document.body.style.overflow="hidden";this.menuFullScreen=true}else document.body.style.overflowX="hidden"};this.onMenuHidden=()=>{this.menuDiv.removeEventListener("transitionend",this.onMenuHidden);this.menuWrapDiv.removeEventListener("focusout",this.menuClose);document.body.style.overflow="";this.menuDiv.style.display="none";this.modalIsOpen=false;this.menuFullScreen=false;setTimeout((()=>{if(document.activeElement===document.body&&this.menuBtn)this.mainBarDiv.focus({preventScroll:true})}),50)};this.menuClose=(t,i=false)=>{if(!i){const i=t;if(i&&i.relatedTarget&&h("#global-nav-menu",i.relatedTarget))return;if(i&&i.relatedTarget&&i.relatedTarget.closest("#global-nav-menu"))return;if(i&&i.relatedTarget&&i.relatedTarget.closest('[slot="promotion"]'))return;if(this.secondaryMenuOpen)return}this.modalOpen=false;this.menuDiv.addEventListener("transitionend",this.onMenuHidden)};this.subMenuClose=t=>{t.preventDefault();t.target.closest("nano-nav-item").open=false};this.onUserBtnClick=t=>{t.preventDefault();this.userMenuOpen=!this.userMenuOpen};this.onUserBtnKeyDown=t=>{switch(t.key){case"Enter":case" ":this.userMenuOpen=!this.userMenuOpen;break}};this.onUserMenuBlur=t=>{if(!t.relatedTarget){this.userMenuOpen=false;return}if(!!t.relatedTarget.closest(".user-links-panel"))return false;this.userMenuOpen=false};this.onSearchBtnClick=t=>{t.preventDefault();if(!this.searchBarShown)this.searchbarShow();else this.searchbarHide()};this.onSearchBtnKeyDown=t=>{switch(t.key){case"Enter":case" ":this.searchBarShown?this.searchbarHide():this.searchbarShow();break}};this.onSearchBarShown=()=>{this.searchBarEl.removeEventListener("transitionend",this.onSearchBarShown);if(this.searchInput)this.searchInput.setFocus();this.searchBarEl.style.overflow="visible"};this.searchbarHide=t=>{if(t&&t.relatedTarget&&t.relatedTarget.closest("#global-nav-search-bar"))return;this.showAutocomplete=false;if(this.searchValInternal.length&&t)return;this.searchBarEl.addEventListener("transitionend",this.onSearchBarHidden);this.searchBarEl.style.overflow="hidden";this.searchBarEl.style.height="0px"};this.onSearchBarHidden=()=>{this.searchBarEl.removeEventListener("transitionend",this.onSearchBarHidden);this.searchBarEl.style.display="none";this.searchBarShown=false};this.onSearchInput=t=>{this.searchValInternal=this.searchInput.value;if(!this.isSearchValSet()){this.searchLoading=false;return}if(t.detail.type==="input"){this.showAutocomplete=false;this.searchLoading=true}};this.onSearchChange=async t=>{this.searchValInternal=this.searchValue=t?t.detail.value:this.searchValInternal;this.showAutocomplete=false;this.autocompleteResults=null;if(!this.isSearchValSet()){if(!this.searchValInternal.length){this.nanoSearchReset.emit()}this.searchLoading=false;return}if(!this.currentIndex)this.currentSelectedIndex();try{this.autocompleteResults=this.processSearchResults(await this.currentIndex.alogliaIndex.search(this.searchValInternal,{attributesToSnippet:["body:5","title:8"],hitsPerPage:5,filters:"created > "+Math.floor((Date.now()-631152e5)/1e3)}))}catch(t){console.error(t)}this.scopeSearch=null;this.scopeSearch=await this.onSearchSubmit(null,false);this.searchLoading=false;this.showAutocompleteResults()};this.onSearchSubmit=async(t,i=true)=>{if(t)t.preventDefault();if(!this.isSearchValSet())return;this.searchLoading=true;this.algoliaSearchResults=null;if(!this.currentIndex)this.currentSelectedIndex();const n=this.internalSearchIndeces.map((t=>({indexName:t.index,query:this.searchValInternal,facets:t.filters,hitsPerPage:10,filters:"created > "+Math.floor((Date.now()-631152e5)/1e3)})));try{this.algoliaSearchResults=this.processSearchResults(await this.algoliaClient.multipleQueries(n))}catch(t){this.nanoSearchError.emit(t)}this.searchLoading=false;if(!this.algoliaSearchResults)return;this.algoliaSearchResults.results.map(((t,i)=>{t.indexName=this.internalSearchIndeces[i].name;t.selected=this.currentIndex.name===this.internalSearchIndeces[i].name;t.domain=this.currentIndex.domain||null;t.domains=this.myAccData.domains||null;t.allGroup=!!this.internalSearchIndeces[i].allGroup;t.filters=this.internalSearchIndeces[i].filters}));if(i){this.nanoSearchResult.emit({results:this.algoliaSearchResults.results,client:{apiKey:this.searchApiKey,appId:this.searchAppId}});this.showAutocomplete=false}return this.algoliaSearchResults};this.onSearchIndexChange=async t=>{const i=t;let n=t;if(!this.currentIndex)this.currentSelectedIndex();if(i.detail&&i.detail.value.length)n=i.detail.value;if(!n||!n.length)return;if(this.currentIndex.index===n)return;const e=this.internalSearchIndeces.find((t=>t.index===n));if(!e||!e.alogliaIndex)return;this.searchIndex=e.index;if(this.isSearchValSet())await this.onSearchChange()};this.switchIndexSubmit=async t=>{if(this.isSearchValSet()){await this.onSearchIndexChange(t);this.onSearchSubmit()}else this.onSearchIndexChange(t)};this.onAutocompleteBlur=t=>{if(!this.showAutocomplete||!this.autocompleteResults)return;if(t&&t.target&&t.target.closest(".search-widget"))return;this.showAutocomplete=false};this.showAutocompleteResults=()=>{if(!this.autocompleteResults||!this.autocompleteResults.hits)return;this.showAutocomplete=true};this.onAutocompleteInteract=t=>{if(!this.showAutocomplete||!this.autocompleteResults)return;let i=this.currAIndex;switch(t.key){case"Tab":setTimeout((()=>{if(!this.el.shadowRoot.activeElement||!this.el.shadowRoot.activeElement.closest(".search-widget")){this.showAutocomplete=false;return}else{const t=this.autocompleteEles.find(((t,i)=>{if(t===this.el.shadowRoot.activeElement){this.currAIndex=i;return true}}));if(t)this.setActiveElement(t);else this.currAIndex=-1}}));break;case"ArrowDown":case"ArrowUp":if(t.key==="ArrowDown")i++;else if(t.key==="ArrowUp")i--;const n=this.autocompleteEles[i];if(n||i<0||i>this.autocompleteEles.length-1)t.preventDefault();if(n){this.setActiveElement(n);this.currAIndex=i}else if(i<0){this.searchInput.setFocus();this.currAIndex=-1}break;case"Enter":case" ":if(this.autocompleteEles[this.currAIndex]){this.autocompleteEles[this.currAIndex].click()}break}};this.userProfileUrl="";this.hasLoggedinSlot=false;this.hasSiteSlot=false;this.hasPromotionSlot=false;this.aboutSlotLen=0;this.iconSlotLen=0;this.mainSlotLen=0;this.overflowSlotLen=0;this.searchSlotLen=0;this.internalSearchIndeces=[];this.thresholdReady=false;this.remoteDataReady=false;this.ready=false;this.isResizing=false;this.intersectRatio=undefined;this.threshold=this.THRESHOLDLIMIT;this.modalOpen=false;this.modalIsOpen=false;this.searchBarShown=false;this.scrollingUp=true;this.searchLoading=false;this.showAutocomplete=false;this.secondaryMenuOpen=null;this.userMenuOpen=false;this.menuFullScreen=false;this.searchValInternal="";this.env="prod";this.ssoDataUrl=undefined;this.ssoRedirect=encodeURIComponent(window.location.href);this.getMyAccountData=true;this.activeMyAccountSections=null;this.showSearch=true;this.showLogo=true;this.logoUrl=location.protocol+"//"+location.host;this.searchIndeces=[];this.myAccountUser=null;this.searchAppId=undefined;this.searchApiKey=undefined;this.searchValue="";this.searchIndex="all_prod_en";this.cartCount=0;this.msgCount=0;this.cartUrl=null;this.msgUrl=null}async submitSearch(){this.onSearchSubmit();this.showAutocomplete=false;return}async getMyAccData(){switch(this.env){case"prod":this.userProfileUrl="https://community.nanoporetech.com/profile/me";case"local":case"dev":case"test":default:this.userProfileUrl="https://community-test.nanoporetech.com/profile/me";break}if(!this.getMyAccountData||this.myAccData){this.remoteDataReady=true;return}let t=this.ssoDataUrl;if(!t){switch(this.env){case"dev":t="https://myaccount-dev.nanoporetech.com/";break;case"test":t="https://myaccount-test.nanoporetech.com/";break;default:t="https://myaccount.nanoporetech.com/";break}}const i={timeout:5e3};try{if(this.env==="local"){this.myAccData=await import("./p-2155fc2c.js")}else{this.myAccData=await p(t+"nav_bar_data.json",i)}if(this.myAccData.user.id){this.isLoggedIn=true;this.myAccountUser=this.myAccData.user}this.processMyAccLinks();this.processMyAccData();setTimeout((()=>this.remoteDataReady=true),300)}catch(t){console.error(t);this.remoteDataReady=true}}currentSelectedIndex(){if(!this.internalSearchIndeces.length){return}const t=this.internalSearchIndeces.find((t=>t.index===this.searchIndex));if(!t){this.currentIndex=this.internalSearchIndeces[0];console.error("index not found");return}this.currentIndex=t;return t}changeInternalSearchVal(){if(this.searchValInternal!==this.searchValue)this.searchValue=this.searchValInternal}initAlgoliaClient(){if(!this.searchAppId||!this.searchApiKey)return;this.algoliaClient=l(this.searchAppId,this.searchApiKey);this.addAlgoliaIndeces()}addIndeces(){this.internalSearchIndeces=[...this.internalSearchIndeces,...this.searchIndeces]}addAlgoliaIndeces(){if(!this.algoliaClient||!this.internalSearchIndeces.length)return;this.internalSearchIndeces.forEach((t=>{t.alogliaIndex=this.algoliaClient.initIndex(t.index)}));if(!this.searchIndex)this.searchIndex=this.internalSearchIndeces[0].index}thresholdChange(t,i){if(t>i){this.thresholdsGoingUp=true;this.setResizingState(true)}}ratioChange(){if(this.intersectRatio<1&&this.threshold>0){if(this.thresholdsGoingUp)this.setResizingState(true);this.threshold--;setTimeout((()=>this.ratioChange()),500)}else{this.thresholdReady=true;this.siteContent.style.minHeight=`calc(100% - ${this.barsDiv.clientHeight+1}px)`;let t,i;n((()=>{t=[...Array.from(this.el.querySelectorAll('nano-nav-item[slot="site"]')),...Array.from(this.el.querySelectorAll('nano-nav-item[slot="overflow"]'))];i=[];if(this.threshold<this.THRESHOLDLIMIT-m.icon)t.push(...Array.from(this.el.querySelectorAll('nano-nav-item[slot="icon"]')));else i.push(...Array.from(this.el.querySelectorAll('nano-nav-item[slot="icon"]')));if(this.threshold<this.THRESHOLDLIMIT-m.login)t.push(...Array.from(this.el.querySelectorAll('nano-nav-item[slot="loggedin"]')));else i.push(...Array.from(this.el.querySelectorAll('nano-nav-item[slot="loggedin"]')));if(this.threshold<this.THRESHOLDLIMIT-m.main)t.push(...Array.from(this.el.querySelectorAll('nano-nav-item[slot="main"]')));else i.push(...Array.from(this.el.querySelectorAll('nano-nav-item[slot="main"]')));if(this.threshold<this.THRESHOLDLIMIT-m.about)t.push(...Array.from(this.el.querySelectorAll('nano-nav-item[slot="about"]')));else i.push(...Array.from(this.el.querySelectorAll('nano-nav-item[slot="about"]')))}));e((()=>{t.forEach((t=>{t.classList.add("nano-global-nav-menu");t.classList.remove("nano-global-nav-bar")}));i.forEach((t=>{t.classList.remove("nano-global-nav-menu");t.classList.add("nano-global-nav-bar")}))}))}}assessReady(){if(this.thresholdReady&&this.remoteDataReady){this.ready=true}}remoteReady(){this.attachIO()}isReady(){this.nanoIsReady.emit()}setupAutocompleteBlur(){if(this.showAutocomplete){this.el.shadowRoot.addEventListener("click",this.onAutocompleteBlur)}else{this.el.shadowRoot.removeEventListener("click",this.onAutocompleteBlur)}}slotChange(){this.threshold=this.THRESHOLDLIMIT}thresholdClasses(){const t=[];let i=0;for(i;i<this.threshold;i++)t.push("threshold-"+(i+1));return t}onWindowResize(){if(this.threshold<this.THRESHOLDLIMIT&&window.innerWidth>this.currSize){this.threshold=this.THRESHOLDLIMIT}this.currSize=window.innerWidth;this.searchBarShown=false}secondaryOpen(t){if(!t.detail.secondaryMenu)return;t.stopPropagation();this.secondaryMenuOpen=t.target;if(!this.menuSelectedItems){this.menuSelectedItems=this.el.querySelectorAll("nano-nav-item.selected");this.menuSelectedItems.forEach((t=>t.classList.remove("selected")))}this.menuContentDiv.style.minHeight=t.detail.secondaryMenu.scrollHeight+"px"}secondaryClose(t){if(!t.detail.secondaryMenu)return;t.stopPropagation();setTimeout((()=>{if(this.secondaryMenuOpen===t.target&&this.menuSelectedItems){this.secondaryMenuOpen=null;this.menuContentDiv.style.minHeight="";this.menuSelectedItems.forEach((t=>t.classList.add("selected")));this.menuSelectedItems=null}}),200)}async handleUserMenu(){await u(this.userLinkPanel,"show",this.userMenuOpen);if(this.userMenuOpen){this.userLinkPanel.focus();this.userLinkPanel.addEventListener("focusout",this.onUserMenuBlur)}else{this.userLinkPanel.removeEventListener("focusout",this.onUserMenuBlur);this.el.focus()}}searchbarShow(){this.searchBarShown=true;this.searchBarEl.addEventListener("transitionend",this.onSearchBarShown);this.searchBarEl.style.display="block";setTimeout((()=>{const t=Math.floor(this.searchBarEl.querySelector(".search-widget").scrollHeight)-1;this.searchBarEl.style.height=t.toString()+"px"}),50)}autocompleteSnippet(t){const i=["title"];if(t._snippetResult){const n=i.find((i=>t._snippetResult[i]&&t._snippetResult[i].matchLevel!=="none"));if(n){if(n!=="title")return(t.title.length>15?t.title.substring(0,15)+" ...":t.title)+" "+t._snippetResult[n].value;else return t._snippetResult["title"].value}}return t.title}isSearchValSet(){if(this.searchValInternal.length<3)return false;return true}resetHitFocus(){this.currAIndex=-1}setActiveElement(t){this.autocompleteEles.map((t=>t.setAttribute("aria-selected","false")));t.focus({preventScroll:true});t.setAttribute("aria-selected","true")}assessSlottedContent(){n((()=>{this.hasSiteSlot=!!this.el.querySelectorAll('[slot="site"]').length;this.hasLoggedinSlot=!!this.el.querySelectorAll('[slot="loggedin"]').length;this.hasPromotionSlot=!!this.el.querySelectorAll('[slot="promotion"]').length;this.aboutSlotLen=this.el.querySelectorAll('[slot="about"]').length;this.iconSlotLen=this.el.querySelectorAll('[slot="icon"]').length;this.mainSlotLen=this.el.querySelectorAll('[slot="main"]').length;this.overflowSlotLen=this.el.querySelectorAll('[slot="overflow"]').length;this.searchSlotLen=this.el.querySelectorAll('[slot="search"]').length}))}attachIO(){if(this.io)return;const t=this.el.shadowRoot.querySelector(".global-nav .main-bar");if(typeof window!=="undefined"&&window.IntersectionObserver&&!!t){const i=this.io=new window.IntersectionObserver((t=>{this.intersectRatio=t.slice(-1)[0].intersectionRatio}),{root:t,threshold:1});i.observe(t.querySelector(".measure-ele"))}}componentDidLoad(){{this.debounceResize=d(this.onWindowResize.bind(this),300);window.addEventListener("resize",this.debounceResize);this.currSize=window.innerWidth}this.initAlgoliaClient();this.addAlgoliaIndeces();if(this.remoteDataReady)this.attachIO()}componentWillLoad(){c.init(this,["searchIndex","searchValue"],"url-hash","gns");if(typeof window!=="undefined"&&window.MutationObserver){const t=this.mo=new MutationObserver((()=>{this.assessSlottedContent()}));t.observe(this.el,{childList:true,subtree:false})}this.assessSlottedContent()}disconnectedCallback(){if(this.io){this.io.disconnect();this.io=undefined}if(this.mo){this.mo.disconnect();this.mo=undefined}window.removeEventListener("resize",this.debounceResize)}async connectedCallback(){this.getMyAccData()}autocompleteList(){let t;if(this.showAutocomplete&&this.scrollingUp){let i=0;let n=0;const e=(t,i)=>i.index!==this.currentIndex.index?t+i.hits.length:t;const a=(t,i)=>i.index===this.currentIndex.index?t+i.hits.length:t;if(this.scopeSearch){n=this.scopeSearch.results.reduce(e,0);i=this.scopeSearch.results.reduce(a,0)}if(this.autocompleteResults&&this.autocompleteResults.hits.length||n&&!i){let n=0;t=s("div",null,!i&&s("div",{class:"search-autocomplete-hit search-autocomplete-hit--no-result"},"No results matching '",this.searchValInternal,"' were found in"," ",s("strong",null,this.currentIndex.name),". Try another phrase."),this.autocompleteResults&&[this.autocompleteResults.hits.map(((t,i)=>s("a",{role:"option",ref:t=>this.autocompleteEles.push(t),tabindex:"-1",id:"autocomplete-hit-"+i,href:t.url,class:"search-autocomplete-hit",innerHTML:this.autocompleteSnippet(t)})))],(!i||this.currentIndex.allGroup)&&this.scopeSearch&&this.scopeSearch.results&&[this.scopeSearch.results.map(((t,i)=>{if(!t.hits.length||t.index===this.currentIndex.index||n>1)return;n++;return s("button",{role:"option",ref:t=>this.autocompleteEles.push(t),tabindex:"-1",id:"autocomplete-scope-"+i,class:"search-autocomplete-hit",onClick:()=>this.switchIndexSubmit(t.index),onMouseDown:()=>this.switchIndexSubmit(t.index)},'"',this.searchValInternal,'"'," ",s("div",{class:"search-autocomplete-hit-scope"},"in ",t.indexName))}))],!!i&&s("div",{class:"search-autocomplete-foot"},s("button",{role:"option",class:"search-autocomplete-submit",ref:t=>this.autocompleteEles.push(t),id:"autocomplete-foot",onClick:this.onSearchSubmit,onMouseDown:this.onSearchSubmit},"View all results")))}else if(!i){t=s("div",{class:"search-autocomplete-hit search-autocomplete-hit--no-result"},"No results matching '",this.searchValInternal,"' were found. Try another phrase.")}}return s("div",{class:"search-autocomplete",role:"listbox",id:"autocomplete-results","aria-expanded":this.showAutocomplete?"true":"false",hidden:!this.showAutocomplete,onKeyDown:this.onAutocompleteInteract},t)}searchWidget(){return[s("form",{class:"search-inputs",onSubmit:this.onSearchSubmit,id:"global-nav-search"},s("nano-select",{class:"search-input",label:"Which area of content would you like to search?",hideLabel:true,showInlineError:false,value:this.searchIndex,onNanoChange:this.onSearchIndexChange,mask:true},this.internalSearchIndeces.map((t=>s("nano-option",{selected:t.index===this.searchIndex,value:t.index},t.name||t.index))),s("nano-icon",{name:"light/chevron-down",class:"select-input__arrow",slot:"down-arrow"})),s("nano-input",{class:"search-input",label:"What would you like to search for?","aria-label":"What would you like to search for?",hideLabel:true,showInlineError:false,"clear-input":true,placeholder:"Search Nanopore",type:"text",ref:t=>this.searchInput=t,onNanoChange:this.onSearchChange,onNanoInput:this.onSearchInput,onKeyDown:this.onAutocompleteInteract,debounce:500,"aria-autocomplete":"list","aria-activedescendant":this.autocompleteEles[this.currAIndex]?this.autocompleteEles[this.currAIndex].id:false,"aria-controls":"autocomplete-results",onNanoFocus:this.showAutocompleteResults,value:this.searchValue,role:"textbox"},s("button",{class:{"search-icon":true,"search-icon--search":true,"search-icon--show":!this.searchValInternal.length},slot:"end",onMouseDown:t=>{this.searchValInternal=this.searchInput.value;this.onSearchSubmit(t,true)}},s("nano-icon",{name:"light/search"})),s("span",{class:{"search-icon":true,"search-icon--loader":true,"search-icon--show":this.searchLoading},slot:"end"},s("nano-icon",{name:"light/spinner-third"}))),s("input",{type:"submit"}))]}render(){this.autocompleteEles=[];const t=this.el.ownerDocument.dir==="rtl";const i=this.searchWidget();i.push(this.autocompleteList());return s(o,{class:{[this.thresholdClasses().join(" ")]:true,ready:this.ready,"search-bar-shown":this.searchBarShown&&this.scrollingUp,"search-auto-complete-shown":this.showAutocomplete&&this.scrollingUp,"modal-open":this.modalIsOpen,resizing:this.isResizing},dir:t?"rtl":null,role:"navigation"},s("div",{class:{"global-nav":true,"scrolling-down":!this.scrollingUp}},s("nav",{id:"global-nav-menu",class:{"gn-menu":true,open:this.modalOpen,"has-promotion":this.hasPromotionSlot,"menu-full-screen":this.menuFullScreen,"secondary-open":!!this.secondaryMenuOpen},"aria-expanded":this.modalOpen?"true":"false",ref:t=>this.menuDiv=t},s("div",{class:"gn-menu_wrap",ref:t=>this.menuWrapDiv=t,tabindex:"-1"},s("div",{class:"gn-menu_actions"},s("button",{class:"menu-btn icon-btn icon-btn",onMouseDown:this.onMenuBtnClick,onKeyDown:this.onMenuBtnKeyDown},this.threshold<this.THRESHOLDLIMIT-3&&s("nano-icon",{name:"light/times","aria-label":"close menu"}),this.threshold>=this.THRESHOLDLIMIT-3&&s("nano-icon",{name:"light/bars","aria-label":"close menu"})),this.threshold<this.THRESHOLDLIMIT-m.icon&&[!!this.iconSlotLen&&s("slot",{name:"icon"}),this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("icons"))&&[this.msgUrl&&s("a",{href:this.msgUrl,class:"icon-btn"},s("nano-icon",{name:"light/bell"}),this.msgCount>0&&s("span",{class:"gn-menu_actions-counter"},this.msgCount)),this.cartUrl&&s("a",{href:this.cartUrl,class:"icon-btn"},s("nano-icon",{name:"light/shopping-cart"}),this.cartCount>0&&s("span",{class:"gn-menu_actions-counter"},this.cartCount))]],this.myAccData&&this.myAccData.urls.login&&s("a",{href:this.myAccData.urls.login+this.ssoRedirect,class:"login-btn"},"Login / Register"," ",s("nano-icon",{name:"solid/chevron-right"}))),s("div",{class:"content-wrap",ref:t=>this.menuContentDiv=t},s("div",{class:"content"},s("nav",{class:"nav-links nav-links--main",role:"menu"},s("slot",{name:"overflow"}),this.threshold<this.THRESHOLDLIMIT-m.main&&!!this.mainSlotLen&&s("slot",{name:"main"})),((!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.hasSiteSlot||!!this.siteNavItms.length)&&s("div",null,(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&[(this.threshold>=this.THRESHOLDLIMIT-(m.about+1)||this.mainSlotLen<2)&&this.overflowSlotLen<2&&s("div",{class:"nav-links-wrap"},!!this.aboutNavItms.length&&s("h4",{class:"nav-links_title"},"About"),s("nav",{class:"nav-links nav-links--sub","aria-label":"About the company links"},s("slot",{name:"about"}),this.aboutNavItms.map((t=>s("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},s("a",{href:t.address,target:t.target},t.title)))))),(this.threshold<this.THRESHOLDLIMIT-(m.about+1)&&this.mainSlotLen>=2||this.overflowSlotLen>=2)&&s("nav",{class:"nav-links","aria-label":"About the company links"},!this.aboutNavItms.length&&s("slot",{name:"about"}),!!this.aboutNavItms.length&&s("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},"Company",s("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),s("div",{slot:"secondary"},s("div",{class:"content"},s("button",{class:"back-btn",onClick:this.subMenuClose},s("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),"Company"),s("slot",{name:"about"}),s("div",{class:"content--sub"},this.aboutNavItms.map((t=>s("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},s("a",{href:t.address,target:t.target},t.title)))))))))],(this.hasSiteSlot||!!this.siteNavItms.length)&&[(this.threshold>=this.THRESHOLDLIMIT-2||this.mainSlotLen<2)&&this.overflowSlotLen<2&&s("div",{class:"nav-links-wrap"},s("h4",{class:"nav-links_title nav-links_title--sites"},"Sites"),s("nav",{class:"nav-links nav-links--sub nav-links--sites","aria-label":"Different company site links"},s("slot",{name:"site"}),this.siteNavItms.map((t=>s("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},s("a",{href:t.address,target:t.target},t.title)))))),(this.threshold<this.THRESHOLDLIMIT-2&&this.mainSlotLen>=2||this.overflowSlotLen>=2)&&s("nav",{class:"nav-links","aria-label":"Different company site links"},s("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},"Sites",s("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),s("div",{slot:"secondary"},s("div",{class:"content"},s("button",{class:"back-btn",onClick:this.subMenuClose},s("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),"Sites"),s("div",{class:"content--sub"},s("slot",{name:"site"}),this.siteNavItms.map((t=>s("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},s("a",{href:t.address,target:t.target},t.title)))))))))])),this.isLoggedIn&&this.threshold<this.THRESHOLDLIMIT-m.login&&(this.loggedInNavItms.length||this.hasLoggedinSlot)&&s("nav",{class:"nav-links","aria-label":"Your user account links"},s("nano-nav-item",{class:"nano-global-nav user-nav nano-global-nav-menu"},this.myAccountUser.name,s("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),s("div",{slot:"secondary"},s("div",{class:"content"},s("button",{class:"back-btn",onClick:this.subMenuClose},s("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),this.myAccountUser.name),!!this.myAccountUser?.small_avatar_url&&s("nano-global-nav-user-profile",{myAccountUser:this.myAccountUser,userProfileUrl:this.userProfileUrl}),s("div",{class:"content--sub"},s("slot",{name:"loggedin"}),this.loggedInNavItms.map((t=>s("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},s("a",{href:t.address,target:t.target},t.title)))),s("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},s("a",{href:this.myAccData.urls.forgot_password+this.ssoRedirect},"Change Password"))))))),s("slot",{name:"promotion"}),this.myAccData&&this.myAccData.urls.logout&&s("div",{class:"login-btn logout-btn"},s("a",{href:this.myAccData.urls.logout+this.ssoRedirect},"Logout"))))),s("nano-sticker",{"auto-resize":"false","break-point-max":"800",quietMode:{h:600,w:800}},s("div",{class:"bars",ref:t=>this.barsDiv=t},s("nav",{class:"main-bar","aria-label":"Main site navigation",tabindex:"-1",ref:t=>this.mainBarDiv=t,role:!!this.mainSlotLen&&this.threshold>=this.THRESHOLDLIMIT-m.main?"menu":undefined},(this.hasPromotionSlot||!!this.overflowSlotLen||(this.myAccData||!!this.iconSlotLen)&&this.threshold<this.THRESHOLDLIMIT-m.icon||this.isLoggedIn&&(!!this.loggedInNavItms.length||this.hasLoggedinSlot)&&this.threshold<this.THRESHOLDLIMIT-m.login||!!this.mainSlotLen&&this.threshold<this.THRESHOLDLIMIT-m.main||(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold<this.THRESHOLDLIMIT-m.about||this.hasSiteSlot||!!this.siteNavItms.length)&&s("button",{class:"menu-btn icon-btn",onMouseDown:this.menuOpen,onKeyDown:this.onMenuBtnKeyDown,"aria-expanded":this.modalOpen?"true":"false","aria-controls":"global-nav-menu",ref:t=>this.menuBtn=t},s("nano-icon",{name:"light/bars","aria-label":"open menu"})),this.showLogo&&s("a",{href:this.logoUrl,class:"logo-link"},s("img",{src:a(`./assets/ont-logo.svg`),alt:"Oxford Nanopore Technologies Logo",class:"logo"})),!this.showLogo&&s("div",{class:"logo-link"},s("slot",{name:"logo"})),s("div",{class:"nav-links nav-links--main"},s("slot",{name:"main"})),this.mainSlotLen===0&&this.threshold>=this.THRESHOLDLIMIT-m.search&&[this.showSearch&&!!this.internalSearchIndeces.length&&s("div",{class:"search-widget",role:"combobox","aria-owns":"autocomplete-results","aria-expanded":this.showAutocomplete&&this.autocompleteResults?"true":"false"},i),(!this.showSearch||!this.myAccData)&&!!this.searchSlotLen&&s("slot",{name:"search"})],(this.mainSlotLen>0||this.threshold<this.THRESHOLDLIMIT-m.search)&&(this.showSearch&&!!this.internalSearchIndeces.length||!!this.searchSlotLen)&&s("button",{class:{"icon-btn":true,"search-btn":true,"search-btn--open":this.searchBarShown},"aria-controls":"global-nav-search-bar","aria-expanded":this.searchBarShown?"true":"false",onMouseDown:this.onSearchBtnClick,onKeyDown:this.onSearchBtnKeyDown},s("nano-icon",{name:"light/search"})),this.threshold>=this.THRESHOLDLIMIT-m.icon&&[!!this.iconSlotLen&&s("slot",{name:"icon"}),this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("icons"))&&[this.msgUrl&&s("a",{href:this.msgUrl,class:"icon-btn"},s("nano-icon",{name:"light/bell"}),this.msgCount>0&&s("span",{class:"gn-menu_actions-counter"},this.msgCount)),this.cartUrl&&!!this.cartCount&&s("a",{href:this.cartUrl,class:"icon-btn"},s("nano-icon",{name:"light/shopping-cart"}),this.cartCount>0&&s("span",{class:"gn-menu_actions-counter"},this.cartCount))]],(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold>=this.THRESHOLDLIMIT-m.about&&s("nav",{class:"nav-links nav-links--sub","aria-label":"About the company. Links",role:"menu"},s("slot",{name:"about"}),!!this.aboutNavItms.length&&s("nano-nav-item",{class:"nano-global-nav nano-global-nav-bar"},s("a",{href:this.aboutNavItms[0].address,target:this.aboutNavItms[0].target},this.aboutNavItms[0].title))),this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("loggedin"))&&this.threshold>=this.THRESHOLDLIMIT-m.login&&[this.myAccData.urls.login&&s("a",{href:this.myAccData.urls.login+this.ssoRedirect,class:"login-btn"},"Login / Register"),this.myAccountUser&&s("div",{class:"user-links"},s("button",{class:{"icon-btn":true,"user-links-btn":true,open:this.userMenuOpen},onMouseDown:this.onUserBtnClick,onKeyDown:this.onUserBtnKeyDown}," ",this.myAccountUser.name,s("nano-icon",{name:"solid/caret-down"})),s("div",{class:"user-links-panel",tabindex:"-1",ref:t=>this.userLinkPanel=t},!!this.myAccountUser?.small_avatar_url&&s("nano-global-nav-user-profile",{myAccountUser:this.myAccountUser,userProfileUrl:this.userProfileUrl}),s("div",{class:"user-links-panel-content"},this.loggedInNavItms.map((t=>s("a",{href:t.address,target:t.target},t.title)))),s("div",{class:"user-links-panel-foot"},s("a",{href:this.myAccData.urls.forgot_password+this.ssoRedirect},"Change Password"),s("a",{href:this.myAccData.urls.logout+this.ssoRedirect},"Logout"))))],s("span",{class:"measure-ele"})),(this.mainSlotLen>0||this.threshold<this.THRESHOLDLIMIT-m.search)&&s("div",{id:"global-nav-search-bar",class:{"search-bar":true,show:this.searchBarShown},"aria-expanded":this.searchBarShown?"true":"false",role:"region",tabindex:"-1",ref:t=>this.searchBarEl=t},s("div",{class:"search-widget"},this.showSearch&&!!this.internalSearchIndeces.length&&s("div",null,i),(!this.showSearch||!this.myAccData)&&!!this.searchSlotLen&&s("slot",{name:"search"}))))),s("div",{class:"sticker-trigger"}),(this.threshold<this.THRESHOLDLIMIT-3||this.menuFullScreen)&&s("div",{class:{mask:true,open:this.modalOpen},onClick:this.menuClose,onTouchEnd:this.menuClose})),s("div",{class:"site-content",ref:t=>this.siteContent=t},s("slot",null)))}domainFor(t){if(!this.myAccData)return"";const i=this.myAccData.domains.find((i=>i.origin===t));return i?i.domain:""}processSearchResults(t){const i=t;const n=t;if(i.results){i.results.forEach(((t,n)=>{i.results[n]=this.processSearchResults(t)}));return i}else{n.hits.map((t=>{if(t.url&&!t.url.match(/^http/))t.url=location.protocol+"//"+this.domainFor(t.origin)+t.url}));return n}}processMyAccData(){if(!this.myAccData||!this.myAccData.search.indeces.length)return;if(this.myAccData.search.api_key)this.searchApiKey=this.myAccData.search.api_key;if(this.myAccData.search.app_id)this.searchAppId=this.myAccData.search.app_id;if(this.myAccData.cart.count)this.cartCount=this.myAccData.cart.count;if(this.myAccData.notifications.count)this.msgCount=this.myAccData.notifications.count;if(!this.searchAppId||!this.searchApiKey)return;this.internalSearchIndeces=[...this.myAccData.search.indeces,...this.searchIndeces];if(this.myAccData.urls.cart&&!this.cartUrl)this.cartUrl=this.myAccData.urls.cart;if(this.myAccData.urls.messages&&!this.msgUrl)this.msgUrl=this.myAccData.urls.messages}processMyAccLinks(){if(!this.myAccData.links||!this.myAccData.links.length)return;this.myAccData.links.forEach((t=>{switch(t.area){case"left-side-logged-in":case"left-side-logged-out":if(this.activeMyAccountSections&&!this.activeMyAccountSections.includes("sites"))break;if(this.isLoggedIn&&t.area==="left-side-logged-in")this.siteNavItms.push(t);else if(!this.isLoggedIn&&t.area==="left-side-logged-out")this.siteNavItms.push(t);break;case"right-side-logged-in":case"right-side-logged-out":if(this.activeMyAccountSections&&!this.activeMyAccountSections.includes("about"))break;if(this.isLoggedIn&&t.area==="right-side-logged-in")this.aboutNavItms.push(t);else if(!this.isLoggedIn&&t.area==="right-side-logged-out")this.aboutNavItms.push(t);break;case"profile-panel-list":if(this.activeMyAccountSections&&!this.activeMyAccountSections.includes("loggedin"))break;this.loggedInNavItms.push(t);break}}))}static get assetsDirs(){return["assets"]}get el(){return r(this)}static get watchers(){return{env:["getMyAccData"],ssoDataUrl:["getMyAccData"],searchIndex:["currentSelectedIndex"],searchValInternal:["changeInternalSearchVal"],searchApiKey:["initAlgoliaClient"],searchAppId:["initAlgoliaClient"],searchIndeces:["addIndeces"],internalSearchIndeces:["addAlgoliaIndeces"],threshold:["thresholdChange"],intersectRatio:["ratioChange"],thresholdReady:["assessReady"],remoteDataReady:["assessReady","remoteReady"],ready:["isReady"],showAutocomplete:["setupAutocompleteBlur","resetHitFocus"],aboutSlotLen:["slotChange"],iconSlotLen:["slotChange"],mainSlotLen:["slotChange"],overflowSlotLen:["slotChange"],searchSlotLen:["slotChange"],userMenuOpen:["handleUserMenu"]}}};b.style=g;export{b as nano_global_nav};
|
5
|
-
//# sourceMappingURL=p-d8678bdc.entry.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["src/utils/fetch.ts","src/components/global-nav/style/global-nav.scss?tag=nano-global-nav&encapsulation=shadow","src/components/global-nav/global-nav.tsx"],"names":["async","clientFetch","url","body","customConfig","headers","Accept","Access-Control-Allow-Origin","Content-Type","Cache","config","method","credentials","keepalive","mode","JSON","stringify","id","setTimeout","window","AbortController","controller","timeout","abort","signal","response","fetch","clearTimeout","ok","json","errorMessage","text","Error","globalNavCss","THRESHOLDBREAKS","about","main","login","search","icon","GlobalNav","this","currSize","thresholdsGoingUp","THRESHOLDLIMIT","Object","keys","length","autocompleteEles","currAIndex","isLoggedIn","myAccData","aboutNavItms","siteNavItms","loggedInNavItms","setResizingState","state","debounceSetResizingState","debounce","isResizing","onMenuBtnKeyDown","ev","key","modalOpen","menuClose","menuOpen","onMenuBtnClick","e","preventDefault","menuDiv","style","display","modalIsOpen","menuWrapDiv","addEventListener","focus","preventScroll","threshold","scrollHeight","innerHeight","document","overflow","menuFullScreen","overflowX","onMenuHidden","removeEventListener","activeElement","menuBtn","mainBarDiv","force","relatedTarget","closestElement","closest","secondaryMenuOpen","subMenuClose","target","open","onUserBtnClick","userMenuOpen","onUserBtnKeyDown","onUserMenuBlur","onSearchBtnClick","searchBarShown","searchbarShow","searchbarHide","onSearchBtnKeyDown","onSearchBarShown","searchBarEl","searchInput","setFocus","showAutocomplete","searchValInternal","onSearchBarHidden","height","onSearchInput","value","isSearchValSet","searchLoading","detail","type","onSearchChange","searchValue","autocompleteResults","nanoSearchReset","emit","currentIndex","currentSelectedIndex","processSearchResults","alogliaIndex","attributesToSnippet","hitsPerPage","filters","Math","floor","Date","now","console","error","scopeSearch","onSearchSubmit","showAutocompleteResults","algoliaSearchResults","queries","internalSearchIndeces","map","index","indexName","query","facets","algoliaClient","multipleQueries","nanoSearchError","results","result","i","name","selected","domain","domains","allGroup","nanoSearchResult","client","apiKey","searchApiKey","appId","searchAppId","onSearchIndexChange","indexStr","selectedIndex","find","searchIndex","switchIndexSubmit","onAutocompleteBlur","hits","onAutocompleteInteract","testIndex","el","shadowRoot","found","ele","setActiveElement","click","encodeURIComponent","location","href","protocol","host","[object Object]","env","userProfileUrl","getMyAccountData","remoteDataReady","ssoDataUrl","import","user","myAccountUser","processMyAccLinks","processMyAccData","foundIndex","algoliasearch","addAlgoliaIndeces","searchIndeces","forEach","initIndex","newThreshold","oldThreshold","intersectRatio","ratioChange","thresholdReady","siteContent","minHeight","barsDiv","clientHeight","menuItems","barItems","readTask","Array","from","querySelectorAll","push","writeTask","item","classList","add","remove","ready","attachIO","nanoIsReady","classes","innerWidth","secondaryMenu","stopPropagation","menuSelectedItems","menuContentDiv","displayTransition","userLinkPanel","widgetHeight","querySelector","toString","hit","lookFor","_snippetResult","prop","matchLevel","title","substring","autocompleteEle","setAttribute","hasSiteSlot","hasLoggedinSlot","hasPromotionSlot","aboutSlotLen","iconSlotLen","mainSlotLen","overflowSlotLen","searchSlotLen","io","root","IntersectionObserver","data","slice","intersectionRatio","observe","debounceResize","onWindowResize","bind","initAlgoliaClient","ComponentStore","init","MutationObserver","mo","assessSlottedContent","childList","subtree","disconnect","undefined","getMyAccData","content","scrollingUp","currentScopeHits","scopeChangeSuggestions","scopeSuggestReducer","total","currentSuggestReducer","reduce","scopeSuggestions","h","class","role","ref","a","tabindex","innerHTML","autocompleteSnippet","button","onClick","onMouseDown","aria-expanded","hidden","onKeyDown","onSubmit","label","hideLabel","showInlineError","onNanoChange","mask","slot","aria-label","clear-input","placeholder","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","gn-menu","has-promotion","menu-full-screen","secondary-open","div","activeMyAccountSections","includes","msgUrl","msgCount","cartUrl","cartCount","urls","ssoRedirect","link","address","small_avatar_url","forgot_password","logout","auto-resize","break-point-max","quietMode","w","btn","showLogo","logoUrl","src","getAssetPath","alt","showSearch","aria-owns","icon-btn","search-btn","search-btn--open","user-links-btn","search-bar","show","onTouchEnd","origin","dm","multiResults","singleResult","match","domainFor","indeces","api_key","app_id","cart","count","notifications","messages","links","area"],"mappings":"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","sourcesContent":["interface FetchInputConfig {\n body?: { [prop: string]: string };\n headers?: { [prop: string]: string };\n [prop: string]: any;\n}\n\nexport async function clientFetch(\n url: string,\n { body, ...customConfig }: FetchInputConfig = {}\n) {\n const headers: { [prop: string]: string } = {\n Accept: 'application/json, text/plain, */*',\n 'Access-Control-Allow-Origin': '*',\n 'Content-Type': 'application/json',\n Cache: 'no-cache',\n };\n const config: RequestInit = {\n method: body ? 'POST' : 'GET',\n credentials: 'include',\n keepalive: true,\n mode: 'cors',\n ...customConfig,\n headers: {\n ...headers,\n ...customConfig.headers,\n },\n };\n if (body) {\n config.body = JSON.stringify(body);\n }\n\n let id = setTimeout(() => {}, 0);\n if (window.AbortController) {\n const controller = new AbortController();\n const { timeout = 500 } = customConfig;\n id = setTimeout(() => controller.abort(), timeout);\n config.signal = controller.signal;\n }\n\n const response = await fetch(url, config);\n clearTimeout(id);\n\n if (response.ok) {\n return await response.json();\n } else {\n const errorMessage = await response.text();\n return new Error(errorMessage);\n }\n}\n","@use 'sass:map';\n@use 'sass:list';\n@use '../../../global/style/nano-theme/form' as nanoForm;\n\n// globals\n@import '../../../global/style/utilities/globals';\n@import '../../../global/style/nano-theme/base';\n@import '../../../global/style/nano-theme/colours';\n@import '../../../global/style/nano-theme/layers';\n\n// local\n@import 'setup';\n@import 'bar';\n@import 'burger';\n@import 'search';\n@import 'user';\n\n:host {\n /**\n * @prop --bar-vertical-padding. Defaults to 21px;\n * @prop --bar-item-spacing. Defaults to 16px;\n * @prop --bar-background. Defaults to white;\n * @prop --bar-text-color. Defaults to #196c82;\n * @prop --bar-color-shade. Defaults to rgb(19, 89, 111);\n * @prop --bar-color-tint. Defaults to rgb(19, 89, 111);\n * @prop --bar-color-focus. Defaults to #001a21;\n * @prop --bar-user-panel-bg. Defaults to #016d86;\n\n * @prop --menu-background. Defaults to #001a21;\n * @prop --menu-text-color. Defaults to white;\n * @prop --bar-dropdown-bg. Defaults to #196c82;\n * @prop --bar-dropdown-text. Defaults to white;\n * @prop --menu-user-profile-bg. Defaults to #001a21;\n * @prop --menu-user-panel-bg. Defaults to #193037;\n * @prop --menu-padding. Defaults to 12px;\n * @prop --menu-hint-color. Defaults to #33484d;\n * @prop --menu-title-text. Defaults to #{map.get($colors, lightblue)};\n * @prop --menu-icon-color. Defaults to white;\n\n * @prop --login-button-bg. Defaults to #17bb75;\n * @prop --login-button-text. Defaults to white;\n */\n\n --bar-vertical-padding: 21px;\n --bar-item-spacing: 13px;\n --bar-background: white;\n --bar-text-color: #196c82;\n --bar-color-shade: rgb(12, 90, 113);\n --bar-color-tint: rgb(19, 89, 111);\n --bar-color-focus: #99a3a6;\n --bar-user-panel-bg: #016d86;\n --bar-dropdown-bg: #196c82;\n --bar-dropdown-text: white;\n --menu-background: #001a21;\n --menu-text-color: white;\n --menu-user-profile-bg: #001a21;\n --menu-user-panel-bg: #193037;\n --menu-padding: 12px;\n --menu-hint-color: #33484d;\n --menu-title-text: #{map.get($colors, lightblue)};\n --menu-icon-color: white;\n --login-button-bg: #17bb75;\n --login-button-text: white;\n\n // not sure if this required any more\n --padding: 12px;\n --padding-top: var(--padding);\n --padding-end: var(--padding);\n --padding-bottom: var(--padding);\n --padding-start: var(--padding);\n\n display: block;\n position: relative;\n line-height: 1.5;\n height: 100%;\n font-size: 0.9375em;\n font-size: clamp(0.77rem, 1vw, 0.9rem);\n\n input,\n select,\n button {\n font-family: inherit;\n appearance: none;\n font-size: inherit;\n }\n\n a,\n button {\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n box-shadow: #{nanoForm.$control-focus-style};\n }\n }\n}\n","import {\n Component,\n h,\n Host,\n Element,\n State,\n Watch,\n Event,\n EventEmitter,\n Prop,\n Listen,\n Build,\n getAssetPath,\n readTask,\n writeTask,\n Method,\n VNode,\n ComponentInterface,\n} from '@stencil/core';\nimport algoliasearch, { SearchClient as AlgoliaClient } from 'algoliasearch';\nimport { closestElement } from '../../utils/dom';\nimport { clientFetch } from '../../utils/fetch';\nimport { ComponentStore } from '../../utils/store/component-store';\nimport { debounce } from '../../utils/throttle';\nimport { displayTransition } from '../../utils/transitions';\nimport type {\n InputChangeEventDetail,\n SelectChangeEventDetail,\n AlgoliaResults,\n SearchIndex,\n MyAccountLink,\n AloliaSearchResultDetail,\n AlgoliaMultiResult,\n MyAccountUser,\n MyAccountData,\n NavItemEventDetail,\n AlgoliaResultHit,\n AlgoliaNetworkError,\n AlgoliaMultiResults,\n} from '../../interface';\n\n// the 'breakpoints' where different segments of content go into or out-of the burger / overflow menu\nconst THRESHOLDBREAKS = {\n about: 0,\n main: 1,\n login: 2,\n search: 3,\n icon: 4,\n};\n\n/**\n * Nanopore digital global navigation and search bar.\n * Incorporates MyAccount / SSO states (messages / cart / user name etc).\n * Incorporates Algolia search.\n * 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: 'style/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 private THRESHOLDLIMIT = Object.keys(THRESHOLDBREAKS).length;\n\n // menu\n private menuDiv: HTMLElement;\n private menuBtn: HTMLButtonElement;\n private menuWrapDiv: HTMLDivElement;\n private menuContentDiv: HTMLDivElement;\n private menuSelectedItems: NodeListOf<HTMLNanoNavItemElement>;\n\n // search\n private searchBarEl: HTMLDivElement;\n private searchInput: HTMLNanoInputElement;\n private algoliaClient: AlgoliaClient;\n private currentIndex: SearchIndex;\n private autocompleteResults: AlgoliaResults | null;\n private autocompleteEles: Array<HTMLAnchorElement | HTMLButtonElement> = [];\n private currAIndex: number = -1;\n private algoliaSearchResults: AlgoliaMultiResults | null;\n private scopeSearch: AlgoliaMultiResults | null;\n\n // general\n private mainBarDiv: HTMLElement;\n private barsDiv: HTMLDivElement;\n private siteContent: HTMLDivElement;\n private userLinkPanel: HTMLDivElement;\n private isLoggedIn: boolean = false;\n\n private myAccData: MyAccountData = null;\n\n // myaccount links\n private aboutNavItms: MyAccountLink[] = [];\n private siteNavItms: MyAccountLink[] = [];\n private loggedInNavItms: MyAccountLink[] = [];\n\n // user profile link\n @State() userProfileUrl: string = '';\n\n // has slot tests\n private mo?: MutationObserver;\n @State() hasLoggedinSlot: boolean = false;\n @State() hasSiteSlot: boolean = false;\n @State() hasPromotionSlot: boolean = false;\n\n // slot item number tests\n @State() aboutSlotLen: number = 0;\n @State() iconSlotLen: number = 0;\n @State() mainSlotLen: number = 0;\n @State() overflowSlotLen: number = 0;\n @State() searchSlotLen: number = 0;\n\n @State() internalSearchIndeces: Array<SearchIndex> = [];\n @State() thresholdReady: boolean = false;\n @State() remoteDataReady: boolean = false;\n @State() ready: boolean = false;\n @State() isResizing: boolean = false;\n @State() intersectRatio: number;\n @State() threshold: number = this.THRESHOLDLIMIT;\n @State() modalOpen: boolean = false;\n @State() modalIsOpen: boolean = false;\n @State() searchBarShown: boolean = false;\n @State() scrollingUp: boolean = true;\n @State() searchLoading: boolean = false;\n @State() showAutocomplete: boolean = false;\n @State() secondaryMenuOpen: HTMLNanoNavItemElement = null;\n @State() userMenuOpen: boolean = false;\n @State() menuFullScreen: boolean = false;\n @State() searchValInternal: string = '';\n\n @Element() private el: HTMLNanoGlobalNavElement;\n\n /**\n * Connect to local, dev, test or prod MyAccount\n * environments to retrieve global nav / sso data.\n * Alternatively, you can use the `ssoDataUrl` prop.\n */\n @Prop() env?: 'local' | 'dev' | 'test' | 'prod' = 'prod';\n\n /**\n * A base url to retrieve global nav / sso data.\n * `nav_bar_data.json` will be appended to this url.\n * An alternative to the pre-defined `env` urls\n */\n @Prop() ssoDataUrl?: string;\n\n /**\n * Where to take user after SSO login\n */\n @Prop() ssoRedirect: string = encodeURIComponent(window.location.href);\n\n /**\n * Whether to attempt to get global nav / sso data from MyAccount\n */\n @Prop() getMyAccountData: boolean = true;\n\n /**\n * Active MyAccount link sections. By default all will show.\n */\n @Prop() activeMyAccountSections: (\n | 'about'\n | 'loggedin'\n | 'sites'\n | 'icons'\n )[] = null;\n\n /**\n * Whether to show search functionality\n */\n @Prop() showSearch: boolean = true;\n\n /**\n * Whether to show Nanopore logo\n */\n @Prop() showLogo: boolean = true;\n\n /**\n * The link to put on the logo\n */\n @Prop() logoUrl: string = location.protocol + '//' + location.host;\n\n /**\n * An array of Algolia search indexes (and optional display names). Will be automatically populated from MyAccount\n */\n @Prop() searchIndeces: Array<SearchIndex> = [];\n\n /**\n * Logged in user details automatically populated from MyAccount\n */\n @Prop({ mutable: true }) myAccountUser: MyAccountUser = null;\n\n /**\n * An Algolia App ID key. Will be automatically populated from MyAccount\n */\n @Prop({ mutable: true }) searchAppId: string;\n\n /**\n * An Algolia API Key. Will be automatically populated from MyAccount\n */\n @Prop({ mutable: true }) searchApiKey: string;\n\n /**\n * A search value to passed to Algolia to 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 un-read message count.\n */\n @Prop({ mutable: true }) msgCount: number = 0;\n\n /**\n * Url to the Nanopore store cart. Will default to the url supplied by MyAccount\n */\n @Prop({ mutable: true }) cartUrl: string = null;\n\n /**\n * Url to the Nanopore message center. Will default to the url supplied by MyAccount\n */\n @Prop({ mutable: true }) msgUrl: string = null;\n\n /**\n * Emitted when the global nav is ready.\n */\n @Event() nanoIsReady!: EventEmitter<void>;\n\n /**\n * Emitted when search results are successfully returned from Algolia.\n */\n @Event() nanoSearchResult!: EventEmitter<AloliaSearchResultDetail>;\n\n /**\n * Emitted when algolia returns an error.\n */\n @Event() nanoSearchError!: EventEmitter<AlgoliaNetworkError>;\n\n /**\n * Emitted when search field is cleared.\n */\n @Event() nanoSearchReset!: EventEmitter<AloliaSearchResultDetail>;\n\n /**\n * Submit the search form (a search value must be present)\n */\n @Method()\n async submitSearch() {\n this.onSearchSubmit();\n this.showAutocomplete = false;\n return;\n }\n\n @Watch('env')\n @Watch('ssoDataUrl')\n async getMyAccData() {\n switch (this.env) {\n case 'prod':\n this.userProfileUrl = 'https://community.nanoporetech.com/profile/me';\n case 'local':\n case 'dev':\n case 'test':\n default:\n this.userProfileUrl =\n 'https://community-test.nanoporetech.com/profile/me';\n break;\n }\n\n if (!this.getMyAccountData || this.myAccData) {\n this.remoteDataReady = true;\n return;\n }\n\n let url = this.ssoDataUrl;\n\n if (!url) {\n switch (this.env) {\n case 'dev':\n url = 'https://myaccount-dev.nanoporetech.com/';\n break;\n case 'test':\n url = 'https://myaccount-test.nanoporetech.com/';\n break;\n default:\n url = 'https://myaccount.nanoporetech.com/';\n break;\n }\n }\n\n const config = { timeout: 5000 };\n\n try {\n if (this.env === 'local') {\n this.myAccData = (await import(\n `./assets/local-my-account.json`\n )) as unknown as MyAccountData;\n } else {\n this.myAccData = await clientFetch(url + 'nav_bar_data.json', config);\n }\n if (this.myAccData.user.id) {\n this.isLoggedIn = true;\n this.myAccountUser = this.myAccData.user;\n }\n this.processMyAccLinks();\n this.processMyAccData();\n setTimeout(() => (this.remoteDataReady = true), 300);\n } catch (e) {\n console.error(e);\n this.remoteDataReady = true;\n }\n }\n\n @Watch('searchIndex')\n currentSelectedIndex() {\n if (!this.internalSearchIndeces.length) {\n return;\n }\n\n const foundIndex = this.internalSearchIndeces.find(\n (index) => index.index === this.searchIndex\n );\n\n if (!foundIndex) {\n this.currentIndex = this.internalSearchIndeces[0];\n console.error('index not found');\n return;\n }\n\n this.currentIndex = foundIndex;\n return foundIndex;\n }\n\n @Watch('searchValInternal')\n changeInternalSearchVal() {\n if (this.searchValInternal !== this.searchValue)\n this.searchValue = this.searchValInternal;\n }\n\n @Watch('searchApiKey')\n @Watch('searchAppId')\n initAlgoliaClient() {\n if (!this.searchAppId || !this.searchApiKey) return;\n\n this.algoliaClient = algoliasearch(this.searchAppId, this.searchApiKey);\n this.addAlgoliaIndeces();\n }\n\n @Watch('searchIndeces')\n addIndeces() {\n this.internalSearchIndeces = [\n ...this.internalSearchIndeces,\n ...this.searchIndeces,\n ];\n }\n\n @Watch('internalSearchIndeces')\n addAlgoliaIndeces() {\n if (!this.algoliaClient || !this.internalSearchIndeces.length) return;\n\n this.internalSearchIndeces.forEach((searchIndex) => {\n searchIndex.alogliaIndex = this.algoliaClient.initIndex(\n searchIndex.index\n );\n });\n if (!this.searchIndex)\n this.searchIndex = this.internalSearchIndeces[0].index;\n }\n\n @Watch('threshold')\n thresholdChange(newThreshold, oldThreshold) {\n if (newThreshold > oldThreshold) {\n // we've resized to larger screen.\n this.thresholdsGoingUp = true;\n this.setResizingState(true);\n }\n }\n\n /**\n * Primary logic for resizing changes.\n * When content doesn't fit - we loop down through break points until it does\n */\n @Watch('intersectRatio')\n ratioChange() {\n if (this.intersectRatio < 1 && this.threshold > 0) {\n // content doesn't fit\n if (this.thresholdsGoingUp) this.setResizingState(true);\n this.threshold--;\n setTimeout(() => this.ratioChange(), 500);\n } else {\n this.thresholdReady = true;\n\n // content now fits so add / remove context classes\n // on nav-items depending on whether they're added to bar or burger.\n 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 < this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"icon\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"icon\"]')\n )\n );\n\n if (this.threshold < this.THRESHOLDLIMIT - THRESHOLDBREAKS.login)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"loggedin\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"loggedin\"]')\n )\n );\n\n if (this.threshold < this.THRESHOLDLIMIT - THRESHOLDBREAKS.main)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"main\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"main\"]')\n )\n );\n\n if (this.threshold < this.THRESHOLDLIMIT - THRESHOLDBREAKS.about)\n menuItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"about\"]')\n )\n );\n else\n barItems.push(\n ...Array.from(\n this.el.querySelectorAll('nano-nav-item[slot=\"about\"]')\n )\n );\n });\n\n writeTask(() => {\n menuItems.forEach((item) => {\n item.classList.add('nano-global-nav-menu');\n item.classList.remove('nano-global-nav-bar');\n });\n barItems.forEach((item) => {\n item.classList.remove('nano-global-nav-menu');\n item.classList.add('nano-global-nav-bar');\n });\n });\n }\n }\n\n @Watch('thresholdReady')\n @Watch('remoteDataReady')\n assessReady() {\n if (this.thresholdReady && this.remoteDataReady) {\n this.ready = true;\n }\n }\n\n @Watch('remoteDataReady')\n remoteReady() {\n this.attachIO();\n }\n\n @Watch('ready')\n isReady() {\n this.nanoIsReady.emit();\n }\n\n /**\n * Add / remove events when autocomplete results show / hide.\n */\n @Watch('showAutocomplete')\n setupAutocompleteBlur() {\n this.searchInput.clientWidth; // force reflow\n if (this.showAutocomplete) {\n this.el.shadowRoot.addEventListener('click', this.onAutocompleteBlur);\n } else {\n this.el.shadowRoot.removeEventListener('click', this.onAutocompleteBlur);\n }\n }\n\n /**\n * As relevant slotted items change, reset resizing breakpoints\n */\n @Watch('aboutSlotLen')\n @Watch('iconSlotLen')\n @Watch('mainSlotLen')\n @Watch('overflowSlotLen')\n @Watch('searchSlotLen')\n slotChange() {\n this.threshold = this.THRESHOLDLIMIT;\n }\n\n // General classes for visuals\n\n private thresholdClasses() {\n const classes = [];\n let i = 0;\n for (i; i < this.threshold; i++) classes.push('threshold-' + (i + 1));\n return classes;\n }\n\n /**\n * provides 'isResizing' - we use this to fade content out on 'breakpoint' increase\n * (when the screen size increases). Otherwise the stepping through of\n * breakpoints to calculate if content currently fits shows on screen (looks ugly)\n */\n private setResizingState = (state: boolean = false) => {\n if (typeof this.debounceSetResizingState === 'undefined') {\n this.debounceSetResizingState = debounce(this.setResizingState, 600);\n }\n if (state) {\n this.isResizing = true;\n this.debounceSetResizingState();\n } else {\n this.isResizing = false;\n this.thresholdsGoingUp = false;\n }\n };\n\n // Global DOM Events\n\n private onWindowResize() {\n if (\n this.threshold < this.THRESHOLDLIMIT &&\n window.innerWidth > this.currSize\n ) {\n this.threshold = this.THRESHOLDLIMIT;\n }\n this.currSize = window.innerWidth;\n this.searchBarShown = false;\n }\n\n // Burger / Overflow Menu\n\n // listen to nav-item secondary open / close events primarily for resizing the menu\n @Listen('nanoOpen')\n secondaryOpen(ev: CustomEvent & { target: HTMLNanoNavItemElement }) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n this.secondaryMenuOpen = ev.target;\n\n if (!this.menuSelectedItems) {\n this.menuSelectedItems = this.el.querySelectorAll(\n 'nano-nav-item.selected'\n );\n this.menuSelectedItems.forEach((i) => i.classList.remove('selected'));\n }\n\n this.menuContentDiv.style.minHeight =\n (ev.detail as NavItemEventDetail).secondaryMenu.scrollHeight + 'px';\n }\n\n @Listen('nanoClose')\n secondaryClose(ev: CustomEvent & { target: HTMLNanoNavItemElement }) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n\n setTimeout(() => {\n if (this.secondaryMenuOpen === ev.target && this.menuSelectedItems) {\n this.secondaryMenuOpen = null;\n this.menuContentDiv.style.minHeight = '';\n this.menuSelectedItems.forEach((i) => i.classList.add('selected'));\n this.menuSelectedItems = null;\n }\n }, 200);\n }\n\n private onMenuBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.modalOpen ? this.menuClose(ev, true) : this.menuOpen();\n break;\n }\n };\n\n private onMenuBtnClick = (ev: MouseEvent) => {\n this.menuClose(ev, true);\n };\n\n private menuOpen = (e?: MouseEvent) => {\n if (e) e.preventDefault();\n\n this.menuDiv.style.display = 'block';\n // need to open menu in stages\n // wait for re-flow after changing display\n // wait for repaint after animate, then focus\n\n this.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 const 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 const widgetHeight =\n Math.floor(\n this.searchBarEl.querySelector('.search-widget').scrollHeight\n ) - 1;\n this.searchBarEl.style.height = widgetHeight.toString() + 'px';\n }, 50);\n }\n\n private onSearchBarShown = () => {\n this.searchBarEl.removeEventListener(\n 'transitionend',\n this.onSearchBarShown\n );\n if (this.searchInput) this.searchInput.setFocus();\n this.searchBarEl.style.overflow = 'visible';\n };\n\n private searchbarHide = (ev?: FocusEvent) => {\n if (\n ev &&\n ev.relatedTarget &&\n (ev.relatedTarget as HTMLElement).closest('#global-nav-search-bar')\n )\n return;\n this.showAutocomplete = false;\n if (this.searchValInternal.length && ev) return;\n\n this.searchBarEl.addEventListener('transitionend', this.onSearchBarHidden);\n this.searchBarEl.style.overflow = 'hidden';\n this.searchBarEl.style.height = '0px';\n };\n\n private onSearchBarHidden = () => {\n this.searchBarEl.removeEventListener(\n 'transitionend',\n this.onSearchBarHidden\n );\n this.searchBarEl.style.display = 'none';\n this.searchBarShown = false;\n };\n\n // Algolia search\n\n private autocompleteSnippet(hit: AlgoliaResultHit) {\n const lookFor = ['title']; // , 'body'\n if (hit._snippetResult) {\n const found = lookFor.find(\n (prop) =>\n hit._snippetResult[prop] &&\n hit._snippetResult[prop].matchLevel !== 'none'\n );\n\n if (found) {\n if (found !== 'title')\n return (\n (hit.title.length > 15\n ? hit.title.substring(0, 15) + ' ...'\n : hit.title) +\n ' ' +\n hit._snippetResult[found].value\n );\n else return hit._snippetResult['title'].value;\n }\n }\n return hit.title;\n }\n\n private onSearchInput = (ev: CustomEvent<InputEvent>) => {\n this.searchValInternal = this.searchInput.value;\n\n if (!this.isSearchValSet()) {\n this.searchLoading = false;\n return;\n }\n\n if (ev.detail.type === 'input') {\n this.showAutocomplete = false;\n this.searchLoading = true;\n }\n };\n\n private onSearchChange = async (ev?: CustomEvent<InputChangeEventDetail>) => {\n this.searchValInternal = this.searchValue = ev\n ? ev.detail.value\n : this.searchValInternal;\n this.showAutocomplete = false;\n this.autocompleteResults = null;\n\n if (!this.isSearchValSet()) {\n if (!this.searchValInternal.length) {\n this.nanoSearchReset.emit();\n }\n this.searchLoading = false;\n return;\n }\n if (!this.currentIndex) this.currentSelectedIndex();\n\n try {\n this.autocompleteResults = this.processSearchResults(\n (await this.currentIndex.alogliaIndex.search(this.searchValInternal, {\n attributesToSnippet: ['body:5', 'title:8'],\n hitsPerPage: 5,\n filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years\n })) as any\n ) as AlgoliaResults;\n } catch (e) {\n console.error(e);\n }\n\n this.scopeSearch = null;\n this.scopeSearch = await this.onSearchSubmit(null, false);\n\n this.searchLoading = false;\n this.showAutocompleteResults();\n };\n\n private onSearchSubmit = async (ev?, emit: boolean = true) => {\n if (ev) ev.preventDefault();\n if (!this.isSearchValSet()) return;\n this.searchLoading = true;\n this.algoliaSearchResults = null;\n\n if (!this.currentIndex) this.currentSelectedIndex();\n\n const queries = this.internalSearchIndeces.map((index) => {\n return {\n indexName: index.index,\n query: this.searchValInternal,\n facets: index.filters,\n hitsPerPage: 10,\n filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years\n };\n });\n\n try {\n this.algoliaSearchResults = this.processSearchResults(\n (await this.algoliaClient.multipleQueries(queries)) as any\n ) as AlgoliaMultiResults;\n } catch (e) {\n this.nanoSearchError.emit(e as AlgoliaNetworkError);\n }\n this.searchLoading = false;\n if (!this.algoliaSearchResults) return;\n\n this.algoliaSearchResults.results.map((result, i) => {\n result.indexName = this.internalSearchIndeces[i].name;\n result.selected =\n this.currentIndex.name === this.internalSearchIndeces[i].name;\n result.domain = this.currentIndex.domain || null;\n result.domains = this.myAccData.domains || null;\n result.allGroup = !!this.internalSearchIndeces[i].allGroup;\n result.filters = this.internalSearchIndeces[i].filters;\n });\n\n if (emit) {\n this.nanoSearchResult.emit({\n results: this.algoliaSearchResults.results,\n client: { apiKey: this.searchApiKey, appId: this.searchAppId },\n });\n this.showAutocomplete = false;\n }\n return this.algoliaSearchResults;\n };\n\n private onSearchIndexChange = async (\n index: CustomEvent<SelectChangeEventDetail> | string\n ) => {\n const ev = index as CustomEvent<SelectChangeEventDetail>;\n let indexStr = index as string;\n\n if (!this.currentIndex) this.currentSelectedIndex();\n\n if (ev.detail && ev.detail.value.length)\n indexStr = ev.detail.value as string;\n if (!indexStr || !indexStr.length) return;\n if (this.currentIndex.index === indexStr) return;\n\n const selectedIndex = this.internalSearchIndeces.find(\n (index) => index.index === indexStr\n );\n if (!selectedIndex || !selectedIndex.alogliaIndex) return;\n\n this.searchIndex = selectedIndex.index;\n if (this.isSearchValSet()) await this.onSearchChange();\n };\n\n private isSearchValSet() {\n if (this.searchValInternal.length < 3) return false;\n return true;\n }\n\n private switchIndexSubmit = async (index: string) => {\n if (this.isSearchValSet()) {\n await this.onSearchIndexChange(index);\n this.onSearchSubmit();\n } else this.onSearchIndexChange(index);\n };\n\n // Autocomplete\n\n @Watch('showAutocomplete')\n resetHitFocus() {\n this.currAIndex = -1;\n }\n\n private onAutocompleteBlur = (ev: MouseEvent) => {\n if (!this.showAutocomplete || !this.autocompleteResults) return;\n if (ev && ev.target && (ev.target as HTMLElement).closest('.search-widget'))\n return;\n this.showAutocomplete = false;\n };\n\n private showAutocompleteResults = () => {\n if (!this.autocompleteResults || !this.autocompleteResults.hits) return;\n this.showAutocomplete = true;\n };\n\n private setActiveElement(\n autocompleteEle: HTMLAnchorElement | HTMLButtonElement\n ) {\n this.autocompleteEles.map((ele) =>\n ele.setAttribute('aria-selected', 'false')\n );\n autocompleteEle.focus({ preventScroll: true });\n autocompleteEle.setAttribute('aria-selected', 'true');\n }\n\n private onAutocompleteInteract = (ev: KeyboardEvent) => {\n // list open, navigate items with arrows\n if (!this.showAutocomplete || !this.autocompleteResults) return;\n let testIndex = this.currAIndex;\n\n switch (ev.key) {\n case 'Tab':\n setTimeout(() => {\n if (\n !this.el.shadowRoot.activeElement ||\n !this.el.shadowRoot.activeElement.closest('.search-widget')\n ) {\n this.showAutocomplete = false;\n return;\n } else {\n const found = this.autocompleteEles.find((ele, i) => {\n if (ele === this.el.shadowRoot.activeElement) {\n this.currAIndex = i;\n return true;\n }\n });\n if (found) this.setActiveElement(found);\n else this.currAIndex = -1;\n }\n });\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n if (ev.key === 'ArrowDown') testIndex++;\n else if (ev.key === 'ArrowUp') testIndex--;\n\n const found = this.autocompleteEles[testIndex];\n if (\n found ||\n testIndex < 0 ||\n testIndex > this.autocompleteEles.length - 1\n )\n ev.preventDefault();\n this.searchInput.clientWidth; // force reflow\n\n if (found) {\n this.setActiveElement(found);\n this.currAIndex = testIndex;\n } else if (testIndex < 0) {\n this.searchInput.setFocus();\n this.currAIndex = -1;\n }\n break;\n case 'Enter':\n case ' ':\n if (this.autocompleteEles[this.currAIndex]) {\n this.autocompleteEles[this.currAIndex].click();\n }\n break;\n }\n };\n\n // Various.\n\n /**\n * Assesses what content is present in which slots\n */\n private assessSlottedContent() {\n readTask(() => {\n this.hasSiteSlot = !!this.el.querySelectorAll('[slot=\"site\"]').length;\n this.hasLoggedinSlot =\n !!this.el.querySelectorAll('[slot=\"loggedin\"]').length;\n this.hasPromotionSlot =\n !!this.el.querySelectorAll('[slot=\"promotion\"]').length;\n\n this.aboutSlotLen = this.el.querySelectorAll('[slot=\"about\"]').length;\n this.iconSlotLen = this.el.querySelectorAll('[slot=\"icon\"]').length;\n this.mainSlotLen = this.el.querySelectorAll('[slot=\"main\"]').length;\n this.overflowSlotLen =\n this.el.querySelectorAll('[slot=\"overflow\"]').length;\n this.searchSlotLen = this.el.querySelectorAll('[slot=\"search\"]').length;\n });\n }\n\n /**\n * Attach the IntersectionObserver - from which all threshold / breakpoint logic hinges\n */\n private attachIO() {\n if (this.io) return;\n const root = this.el.shadowRoot.querySelector('.global-nav .main-bar');\n if (\n Build.isBrowser &&\n typeof window !== 'undefined' &&\n (window as any).IntersectionObserver &&\n !!root\n ) {\n const io = (this.io = new (window as any).IntersectionObserver(\n (data: IntersectionObserverEntry[]) => {\n this.intersectRatio = data.slice(-1)[0].intersectionRatio;\n },\n { root, threshold: 1 }\n ));\n io.observe(root.querySelector('.measure-ele'));\n }\n }\n\n // Stencil Lifecycle / Rendering\n\n componentDidLoad() {\n if (Build.isBrowser) {\n this.debounceResize = debounce(this.onWindowResize.bind(this), 300);\n\n window.addEventListener('resize', this.debounceResize);\n this.currSize = window.innerWidth;\n }\n\n this.initAlgoliaClient();\n this.addAlgoliaIndeces();\n if (this.remoteDataReady) this.attachIO();\n }\n\n componentWillLoad() {\n ComponentStore.init(\n this,\n ['searchIndex', 'searchValue'],\n 'url-hash',\n 'gns'\n );\n\n 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 const scopeSuggestReducer = (\n total: number,\n result: AlgoliaMultiResult\n ) => {\n return result.index !== this.currentIndex.index\n ? total + result.hits.length\n : total;\n };\n const currentSuggestReducer = (\n total: number,\n result: AlgoliaMultiResult\n ) => {\n return result.index === this.currentIndex.index\n ? total + result.hits.length\n : total;\n };\n\n if (this.scopeSearch) {\n scopeChangeSuggestions = this.scopeSearch.results.reduce(\n scopeSuggestReducer,\n 0\n );\n currentScopeHits = this.scopeSearch.results.reduce(\n currentSuggestReducer,\n 0\n );\n }\n\n if (\n (this.autocompleteResults && this.autocompleteResults.hits.length) ||\n (scopeChangeSuggestions && !currentScopeHits)\n ) {\n let scopeSuggestions = 0;\n\n content = (\n <div>\n {!currentScopeHits && (\n <div class=\"search-autocomplete-hit search-autocomplete-hit--no-result\">\n No results matching '{this.searchValInternal}' were found in{' '}\n <strong>{this.currentIndex.name}</strong>. Try another phrase.\n </div>\n )}\n {this.autocompleteResults && [\n this.autocompleteResults.hits.map((hit, i) => {\n return (\n <a\n role=\"option\"\n ref={(a) => this.autocompleteEles.push(a)}\n tabindex=\"-1\"\n id={'autocomplete-hit-' + i}\n href={hit.url}\n class=\"search-autocomplete-hit\"\n innerHTML={this.autocompleteSnippet(hit)}\n ></a>\n );\n }),\n ]}\n {(!currentScopeHits || this.currentIndex.allGroup) &&\n this.scopeSearch &&\n this.scopeSearch.results && [\n this.scopeSearch.results.map((result, i) => {\n if (\n !result.hits.length ||\n result.index === this.currentIndex.index ||\n scopeSuggestions > 1\n )\n return;\n scopeSuggestions++;\n return (\n <button\n role=\"option\"\n ref={(button) => this.autocompleteEles.push(button)}\n tabindex=\"-1\"\n id={'autocomplete-scope-' + i}\n class=\"search-autocomplete-hit\"\n onClick={() => this.switchIndexSubmit(result.index)}\n onMouseDown={() => this.switchIndexSubmit(result.index)}\n >\n \"{this.searchValInternal}\"{' '}\n <div class=\"search-autocomplete-hit-scope\">\n in {result.indexName}\n </div>\n </button>\n );\n }),\n ]}\n {!!currentScopeHits && (\n <div class=\"search-autocomplete-foot\">\n <button\n role=\"option\"\n class=\"search-autocomplete-submit\"\n ref={(button) => this.autocompleteEles.push(button)}\n id={'autocomplete-foot'}\n onClick={this.onSearchSubmit}\n onMouseDown={this.onSearchSubmit}\n >\n View all results\n </button>\n </div>\n )}\n </div>\n );\n } else if (!currentScopeHits) {\n content = (\n <div class=\"search-autocomplete-hit search-autocomplete-hit--no-result\">\n No results matching '{this.searchValInternal}' were found. Try\n another phrase.\n </div>\n );\n }\n }\n\n return (\n <div\n class=\"search-autocomplete\"\n role=\"listbox\"\n id=\"autocomplete-results\"\n aria-expanded={this.showAutocomplete ? 'true' : 'false'}\n hidden={!this.showAutocomplete}\n onKeyDown={this.onAutocompleteInteract}\n >\n {content}\n </div>\n );\n }\n\n private searchWidget(): VNode[] {\n return [\n <form\n class=\"search-inputs\"\n onSubmit={this.onSearchSubmit}\n id=\"global-nav-search\"\n >\n <nano-select\n class=\"search-input\"\n label=\"Which area of content would you like to search?\"\n hideLabel={true}\n showInlineError={false}\n value={this.searchIndex}\n onNanoChange={this.onSearchIndexChange}\n mask={true}\n >\n {this.internalSearchIndeces.map((index) => {\n return (\n <nano-option\n selected={index.index === this.searchIndex}\n value={index.index}\n >\n {index.name || index.index}\n </nano-option>\n );\n })}\n <nano-icon\n name=\"light/chevron-down\"\n class=\"select-input__arrow\"\n slot=\"down-arrow\"\n />\n </nano-select>\n <nano-input\n class=\"search-input\"\n label=\"What would you like to search for?\"\n aria-label=\"What would you like to search for?\"\n hideLabel={true}\n showInlineError={false}\n clear-input\n placeholder=\"Search Nanopore\"\n type=\"text\"\n ref={(input) => (this.searchInput = input)}\n onNanoChange={this.onSearchChange}\n onNanoInput={this.onSearchInput}\n onKeyDown={this.onAutocompleteInteract}\n debounce={500}\n aria-autocomplete=\"list\"\n aria-activedescendant={\n this.autocompleteEles[this.currAIndex]\n ? this.autocompleteEles[this.currAIndex].id\n : false\n }\n aria-controls=\"autocomplete-results\"\n onNanoFocus={this.showAutocompleteResults}\n value={this.searchValue}\n role=\"textbox\"\n >\n <button\n class={{\n 'search-icon': true,\n 'search-icon--search': true,\n 'search-icon--show': !this.searchValInternal.length,\n }}\n slot=\"end\"\n onMouseDown={(e) => {\n this.searchValInternal = this.searchInput.value;\n this.onSearchSubmit(e, true);\n }}\n >\n <nano-icon name=\"light/search\"></nano-icon>\n </button>\n <span\n class={{\n 'search-icon': true,\n 'search-icon--loader': true,\n 'search-icon--show': this.searchLoading,\n }}\n slot=\"end\"\n >\n <nano-icon name=\"light/spinner-third\"></nano-icon>\n </span>\n </nano-input>\n <input type=\"submit\" />\n </form>,\n ];\n }\n\n render() {\n this.autocompleteEles = [];\n const isRtl = (this.el.ownerDocument as Document).dir === 'rtl';\n\n const searchWidget = this.searchWidget();\n searchWidget.push(this.autocompleteList());\n\n return (\n <Host\n class={{\n [this.thresholdClasses().join(' ')]: true,\n ready: this.ready,\n 'search-bar-shown': this.searchBarShown && this.scrollingUp,\n 'search-auto-complete-shown':\n this.showAutocomplete && this.scrollingUp,\n 'modal-open': this.modalIsOpen,\n resizing: this.isResizing,\n }}\n dir={isRtl ? 'rtl' : null}\n role=\"navigation\"\n >\n <div\n class={{\n 'global-nav': true,\n 'scrolling-down': !this.scrollingUp,\n }}\n >\n {/* START BURGER / OVERFLOW MENU */}\n <nav\n id=\"global-nav-menu\"\n class={{\n 'gn-menu': true,\n open: this.modalOpen,\n 'has-promotion': this.hasPromotionSlot,\n 'menu-full-screen': this.menuFullScreen,\n 'secondary-open': !!this.secondaryMenuOpen,\n }}\n aria-expanded={this.modalOpen ? 'true' : 'false'}\n ref={(div) => (this.menuDiv = div)}\n >\n <div\n class=\"gn-menu_wrap\"\n ref={(div) => (this.menuWrapDiv = div)}\n tabindex=\"-1\"\n >\n <div class=\"gn-menu_actions\">\n <button\n class=\"menu-btn icon-btn icon-btn\"\n onMouseDown={this.onMenuBtnClick}\n onKeyDown={this.onMenuBtnKeyDown}\n >\n {this.threshold < this.THRESHOLDLIMIT - 3 && (\n <nano-icon\n name=\"light/times\"\n aria-label=\"close menu\"\n ></nano-icon>\n )}\n {this.threshold >= this.THRESHOLDLIMIT - 3 && (\n <nano-icon\n name=\"light/bars\"\n aria-label=\"close menu\"\n ></nano-icon>\n )}\n </button>\n\n {this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [\n !!this.iconSlotLen && <slot name=\"icon\" />,\n this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('icons')) && [\n this.msgUrl && (\n <a href={this.msgUrl} class=\"icon-btn\">\n <nano-icon name=\"light/bell\"></nano-icon>\n {this.msgCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.msgCount}\n </span>\n )}\n </a>\n ),\n this.cartUrl && (\n <a href={this.cartUrl} class=\"icon-btn\">\n <nano-icon name=\"light/shopping-cart\"></nano-icon>\n {this.cartCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.cartCount}\n </span>\n )}\n </a>\n ),\n ],\n ]}\n\n {this.myAccData && this.myAccData.urls.login && (\n <a\n href={this.myAccData.urls.login + this.ssoRedirect}\n class=\"login-btn\"\n >\n Login / Register{' '}\n <nano-icon name=\"solid/chevron-right\"></nano-icon>\n </a>\n )}\n </div>\n\n <div\n class=\"content-wrap\"\n ref={(div) => (this.menuContentDiv = div)}\n >\n <div class=\"content\">\n <nav class=\"nav-links nav-links--main\" role=\"menu\">\n <slot name=\"overflow\" />\n {this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.main &&\n !!this.mainSlotLen && <slot name=\"main\" />}\n </nav>\n\n {/* ABOUT AND SITE MENU IN BURGER */}\n {(((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.hasSiteSlot) ||\n !!this.siteNavItms.length) && (\n <div>\n {(!!this.aboutSlotLen || !!this.aboutNavItms.length) && [\n // About Menu as an open list (before more items are added to burger)`\n (this.threshold >=\n this.THRESHOLDLIMIT - (THRESHOLDBREAKS.about + 1) ||\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 // About Menu as hidden list (when more items are added to burger)\n ((this.threshold <\n this.THRESHOLDLIMIT - (THRESHOLDBREAKS.about + 1) &&\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 && <slot name=\"about\" />}\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 {/* SITES MENU (Always in burger) */}\n {(this.hasSiteSlot || !!this.siteNavItms.length) && [\n (this.threshold >= this.THRESHOLDLIMIT - 2 ||\n this.mainSlotLen < 2) &&\n this.overflowSlotLen < 2 && (\n <div class=\"nav-links-wrap\">\n <h4 class=\"nav-links_title nav-links_title--sites\">\n Sites\n </h4>\n <nav\n class=\"nav-links nav-links--sub nav-links--sites\"\n aria-label=\"Different company site links\"\n >\n <slot 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 < this.THRESHOLDLIMIT - 2 &&\n this.mainSlotLen >= 2) ||\n this.overflowSlotLen >= 2) && (\n <nav\n class=\"nav-links\"\n aria-label=\"Different company site links\"\n >\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n Sites\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-right\"\n ></nano-icon>\n <div slot=\"secondary\">\n <div class=\"content\">\n <button\n class=\"back-btn\"\n onClick={this.subMenuClose}\n >\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-left\"\n aria-label=\"go back\"\n ></nano-icon>\n Sites\n </button>\n <div class=\"content--sub\">\n <slot 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 <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.login &&\n (this.loggedInNavItms.length || this.hasLoggedinSlot) && (\n <nav class=\"nav-links\" aria-label=\"Your user account links\">\n <nano-nav-item class=\"nano-global-nav user-nav nano-global-nav-menu\">\n {this.myAccountUser.name}\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-right\"\n ></nano-icon>\n <div slot=\"secondary\">\n <div class=\"content\">\n <button\n class=\"back-btn\"\n onClick={this.subMenuClose}\n >\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-left\"\n aria-label=\"go back\"\n ></nano-icon>\n {this.myAccountUser.name}\n </button>\n {!!this.myAccountUser?.small_avatar_url && (\n <nano-global-nav-user-profile\n myAccountUser={this.myAccountUser}\n userProfileUrl={this.userProfileUrl}\n ></nano-global-nav-user-profile>\n )}\n <div class=\"content--sub\">\n <slot 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 {/* END BURGER / OVERFLOW MENU */}\n\n {/* START MAIN NAV BAR */}\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 role={\n !!this.mainSlotLen &&\n this.threshold >= this.THRESHOLDLIMIT - THRESHOLDBREAKS.main\n ? 'menu'\n : undefined\n }\n >\n {(this.hasPromotionSlot ||\n !!this.overflowSlotLen ||\n ((this.myAccData || !!this.iconSlotLen) &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon) ||\n (this.isLoggedIn &&\n (!!this.loggedInNavItms.length || this.hasLoggedinSlot) &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.login) ||\n (!!this.mainSlotLen &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.main) ||\n ((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.about) ||\n this.hasSiteSlot ||\n !!this.siteNavItms.length) && (\n <button\n class=\"menu-btn icon-btn\"\n onMouseDown={this.menuOpen}\n onKeyDown={this.onMenuBtnKeyDown}\n aria-expanded={this.modalOpen ? 'true' : 'false'}\n aria-controls=\"global-nav-menu\"\n ref={(btn) => (this.menuBtn = btn)}\n >\n <nano-icon\n name=\"light/bars\"\n aria-label=\"open menu\"\n ></nano-icon>\n </button>\n )}\n\n {this.showLogo && (\n <a href={this.logoUrl} class=\"logo-link\">\n <img\n src={getAssetPath(`./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 class=\"nav-links nav-links--main\">\n <slot name=\"main\" />\n </div>\n\n {/* search widget displayed in the bar (there is enough space to show it) */}\n {this.mainSlotLen === 0 &&\n this.threshold >=\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.search && [\n this.showSearch && !!this.internalSearchIndeces.length && (\n <div\n class=\"search-widget\"\n role=\"combobox\"\n aria-owns=\"autocomplete-results\"\n aria-expanded={\n this.showAutocomplete && this.autocompleteResults\n ? 'true'\n : 'false'\n }\n >\n {searchWidget}\n </div>\n ),\n (!this.showSearch || !this.myAccData) &&\n !!this.searchSlotLen && <slot name=\"search\" />,\n ]}\n\n {/* Bar Icon buttons */}\n\n {/* Bar search icon button (when not enough to show search in bar) */}\n {(this.mainSlotLen > 0 ||\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.search) &&\n ((this.showSearch && !!this.internalSearchIndeces.length) ||\n !!this.searchSlotLen) && (\n <button\n class={{\n 'icon-btn': true,\n 'search-btn': true,\n 'search-btn--open': this.searchBarShown,\n }}\n aria-controls=\"global-nav-search-bar\"\n aria-expanded={this.searchBarShown ? 'true' : 'false'}\n onMouseDown={this.onSearchBtnClick}\n onKeyDown={this.onSearchBtnKeyDown}\n >\n <nano-icon name=\"light/search\"></nano-icon>\n </button>\n )}\n\n {/* Bar cart and notifications */}\n {this.threshold >=\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [\n !!this.iconSlotLen && <slot name=\"icon\" />,\n this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('icons')) && [\n this.msgUrl && (\n <a href={this.msgUrl} class=\"icon-btn\">\n <nano-icon name=\"light/bell\"></nano-icon>\n {this.msgCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.msgCount}\n </span>\n )}\n </a>\n ),\n this.cartUrl && !!this.cartCount && (\n <a href={this.cartUrl} class=\"icon-btn\">\n <nano-icon name=\"light/shopping-cart\"></nano-icon>\n {this.cartCount > 0 && (\n <span class=\"gn-menu_actions-counter\">\n {this.cartCount}\n </span>\n )}\n </a>\n ),\n ],\n ]}\n\n {/* Bar about links */}\n {(!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold >=\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.about && (\n <nav\n class=\"nav-links nav-links--sub\"\n aria-label=\"About the company. Links\"\n role=\"menu\"\n >\n <slot name=\"about\" />\n {!!this.aboutNavItms.length && (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-bar\">\n <a\n href={this.aboutNavItms[0].address}\n target={this.aboutNavItms[0].target}\n >\n {this.aboutNavItms[0].title}\n </a>\n </nano-nav-item>\n )}\n </nav>\n )}\n\n {/* Bar login button / User panel */}\n {this.myAccData &&\n (!this.activeMyAccountSections ||\n this.activeMyAccountSections.includes('loggedin')) &&\n this.threshold >=\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.login && [\n this.myAccData.urls.login && (\n <a\n href={this.myAccData.urls.login + this.ssoRedirect}\n class=\"login-btn\"\n >\n Login / Register\n </a>\n ),\n this.myAccountUser && (\n <div class=\"user-links\">\n <button\n class={{\n 'icon-btn': true,\n 'user-links-btn': true,\n open: this.userMenuOpen,\n }}\n onMouseDown={this.onUserBtnClick}\n onKeyDown={this.onUserBtnKeyDown}\n >\n {' '}\n {this.myAccountUser.name}\n <nano-icon name=\"solid/caret-down\"></nano-icon>\n </button>\n <div\n class=\"user-links-panel\"\n tabindex=\"-1\"\n ref={(div) => (this.userLinkPanel = div)}\n >\n {!!this.myAccountUser?.small_avatar_url && (\n <nano-global-nav-user-profile\n myAccountUser={this.myAccountUser}\n userProfileUrl={this.userProfileUrl}\n ></nano-global-nav-user-profile>\n )}\n <div class=\"user-links-panel-content\">\n {this.loggedInNavItms.map((link) => {\n return (\n <a href={link.address} target={link.target}>\n {link.title}\n </a>\n );\n })}\n </div>\n <div class=\"user-links-panel-foot\">\n <a\n href={\n this.myAccData.urls.forgot_password +\n this.ssoRedirect\n }\n >\n Change Password\n </a>\n <a\n href={\n this.myAccData.urls.logout + this.ssoRedirect\n }\n >\n Logout\n </a>\n </div>\n </div>\n </div>\n ),\n ]}\n <span class=\"measure-ele\"></span>\n </nav>\n\n {/* Search widget shown in bar underneath main bar when there is not enough space */}\n {(this.mainSlotLen > 0 ||\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.search) && (\n <div\n id=\"global-nav-search-bar\"\n class={{\n 'search-bar': true,\n show: this.searchBarShown,\n }}\n aria-expanded={this.searchBarShown ? 'true' : 'false'}\n role=\"region\"\n tabindex=\"-1\"\n ref={(div) => (this.searchBarEl = div)}\n >\n <div class=\"search-widget\">\n {this.showSearch && !!this.internalSearchIndeces.length && (\n <div>{searchWidget}</div>\n )}\n {(!this.showSearch || !this.myAccData) &&\n !!this.searchSlotLen && <slot name=\"search\" />}\n </div>\n </div>\n )}\n </div>\n </nano-sticker>\n <div class=\"sticker-trigger\" />\n {/* END MAIN NAV BAR */}\n\n {(this.threshold < this.THRESHOLDLIMIT - 3 ||\n this.menuFullScreen) && (\n <div\n class={{\n mask: true,\n open: this.modalOpen,\n }}\n onClick={this.menuClose}\n onTouchEnd={this.menuClose}\n ></div>\n )}\n </div>\n <div class=\"site-content\" 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 const domain = this.myAccData.domains.find((dm) => dm.origin === origin);\n return domain ? domain.domain : '';\n }\n\n private processSearchResults(results: AlgoliaMultiResults | AlgoliaResults) {\n const multiResults = results as AlgoliaMultiResults;\n const singleResult = results as AlgoliaResults;\n\n if (multiResults.results) {\n multiResults.results.forEach((result, i) => {\n multiResults.results[i] = this.processSearchResults(\n result\n ) as AlgoliaResults;\n });\n return multiResults;\n } else {\n singleResult.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url =\n location.protocol + '//' + this.domainFor(hit.origin) + hit.url;\n });\n return singleResult;\n }\n }\n\n private processMyAccData() {\n if (!this.myAccData || !this.myAccData.search.indeces.length) return;\n\n if (this.myAccData.search.api_key)\n this.searchApiKey = this.myAccData.search.api_key;\n if (this.myAccData.search.app_id)\n this.searchAppId = this.myAccData.search.app_id;\n\n if (this.myAccData.cart.count) this.cartCount = this.myAccData.cart.count;\n if (this.myAccData.notifications.count)\n this.msgCount = this.myAccData.notifications.count;\n\n if (!this.searchAppId || !this.searchApiKey) return;\n this.internalSearchIndeces = [\n ...this.myAccData.search.indeces,\n ...this.searchIndeces,\n ];\n\n if (this.myAccData.urls.cart && !this.cartUrl)\n this.cartUrl = this.myAccData.urls.cart;\n if (this.myAccData.urls.messages && !this.msgUrl)\n this.msgUrl = this.myAccData.urls.messages;\n }\n\n private processMyAccLinks() {\n if (!this.myAccData.links || !this.myAccData.links.length) return;\n\n this.myAccData.links.forEach((link) => {\n switch (link.area) {\n case 'left-side-logged-in':\n case 'left-side-logged-out':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('sites')\n )\n break;\n if (this.isLoggedIn && link.area === 'left-side-logged-in')\n this.siteNavItms.push(link);\n else if (!this.isLoggedIn && link.area === 'left-side-logged-out')\n this.siteNavItms.push(link);\n break;\n case 'right-side-logged-in':\n case 'right-side-logged-out':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('about')\n )\n break;\n if (this.isLoggedIn && link.area === 'right-side-logged-in')\n this.aboutNavItms.push(link);\n else if (!this.isLoggedIn && link.area === 'right-side-logged-out')\n this.aboutNavItms.push(link);\n break;\n case 'profile-panel-list':\n if (\n this.activeMyAccountSections &&\n !this.activeMyAccountSections.includes('loggedin')\n )\n break;\n this.loggedInNavItms.push(link);\n break;\n }\n });\n }\n}\n"]}
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* Web Components for Nanopore digital Web Apps
|
3
|
-
*/
|
4
|
-
import{r as e,h as n,a as t,g as s}from"./p-1fe12320.js";const a=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:block;flex:1 1 100%}.main-search{display:flex;background:white;font-size:14px;min-height:calc(100vh - 63px);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:not(.result__tags-tag){-webkit-appearance:none;appearance:none;border:none;background:none;position:relative;inset-block-start:-2px}.main-search .icon-button{color:inherit;align-self:normal;padding:9px 7px;cursor:pointer;display:flex;align-items:center}.main-search__topbar{display:flex;align-items:center;flex-wrap:wrap;margin-block-end:1em}.main-search__topbar::after{content:"";width:calc(100% - 30px);inset-inline-start:30px;position:relative;border-block-end:1px solid #e5eef1;padding-block-start:0.9em}.main-search__applied-filters{border:solid 1px #e4e6e8;text-transform:uppercase;border-radius:3px;font-weight:bold;display:flex;align-items:center;line-height:0.9;padding:5px 5px 0 5px;letter-spacing:2px;flex-wrap:wrap;margin-block-end:0.5rem}.main-search__applied-filters span{display:flex;align-items:center}:host(.small) .main-search__applied-filters{display:none}.main-search__applied-nofilter{margin-inline:0 5px;margin-block:0 3px;padding-inline:7px;padding-block:10px;font-size:12px;color:rgba(69, 85, 86, 0.85)}.main-search__applied-filter{padding-inline:8px 2px;padding-block:5px 3px;margin-inline:0 5px;margin-block:0 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}.main-search__applied-filter .icon-button{padding-inline:10px 4px;padding-block:2px 1px}.main-search__applied-filter .icon-button nano-icon{pointer-events:none}.main-search .topbar__bkbtn{position:relative;inset-inline-start:-7px}:host(.small) .main-search .topbar__query{display:none}.main-search .topbar__filtering{display:flex;align-items:center;margin-block:0;margin-inline:1em 0;flex:1}.main-search .topbar__order{min-width:175px;max-width:200px;margin-inline-start:auto}:host(.small) .main-search .topbar__order{max-width:300px}.main-search .topbar nano-select{opacity:1;transition:0.1s ease opacity}.main-search .topbar nano-select:not(.hydrated){opacity:0}.main-search .topbar__show-filters{margin-inline-start:0.5em;text-transform:uppercase;display:none;flex-direction:column;align-items:center}.main-search .topbar__show-filters nano-icon{font-size:20px}:host(.small) .main-search .topbar__show-filters{display:flex}.main-search .topbar__filter-count{width:12px;height:12px;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:flex;align-items:center;justify-content:center;line-height:1;margin-block-end: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-inline:0 40px;padding-block:1.8em 1em;flex:1 1 30%;box-sizing:border-box}@media (max-width: 576px){.main-search__filters{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;inset-block-start:0;inset-inline-end:0;transition:all 0s ease 0.5s;background:none}:host(.small) .filters.show{height:100vh;width:100vw;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;inset:0;z-index:-1;opacity:0;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-inline:auto 0;margin-block:0}.filters__old-posts{margin-inline-start:1rem}:host(.small) .filters-wrap{position:absolute;inset-block-start:0;inset-inline-end:0;background:#f7f6f6;transform:translateX(100%);width:300px;min-width:200px;max-width:80vw;transition:transform 0.3s ease;padding:1em;color:black;overflow:auto;height:100vh}:host(.small) .filters.show .filters-wrap{transform:translateX(0%);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-inline-start:calc(20px - 0.8em)}.filters nano-details nano-icon[slot=icon-end]{padding-inline-start:calc(20px - 0.8em);padding-inline-end:calc(20px - 0.8em)}.filters li:last-child .filter-label{margin-block-end:0}.filters .filter-label{display:flex;align-items:center;position:relative;margin:0.5em 0;line-height:1.4;z-index:0}.filters .filter-label::before{margin-inline:0 1em;margin-block:0;content:"";border:1px solid #007495;background:#fff;border-radius:3px;height:1em;width:1em;min-width:1em;min-height:1em;display:inline-block}.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;inset-inline-start:2px;inset-block-start:50%;transform:translateY(-50%);z-index:1;display:block;background-size:100%;background-position:center center;background-repeat:no-repeat}.filters .filter-cb{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size: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{box-shadow:0 0 0 1px rgba(0, 0, 0, 0.7)}.filters-header{display:flex;align-items:center;border-block-end:1px solid #90c6e7;padding-block-end:0.5rem;margin-block-end:0.5rem}.filters-reset{color:#007495;font-size:12px;text-decoration:underline;margin-inline:auto 0;margin-block:0}:host(.small) .filters-reset{margin:0}.filters-title{margin: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:flex;flex-wrap:wrap;flex-direction:row;padding-block-end:14px;border-block-end:1px solid #90c6e7}.result *{word-wrap:break-word;word-break:break-word}.result__title{margin:1em 0 0.5em 0;width:70%;display:flex}.result__title a{color:#0084a9;font-size:14px;line-height:1.43;text-decoration:none;font-weight:600}.result__title nano-icon{margin-inline:0 0.5em;margin-block:0;min-width:20px;min-height:20px;opacity:0.8}@media (max-width: 992px){.result__title{width:100%}}.result__body{color:#455556;font-size:13px;width:70%;text-decoration:none}@media (max-width: 992px){.result__body{width:100%}}.result__pdf{display:inline-block;margin-inline-start:0.5rem;color:#b5aea7}.result__meta{display:flex;flex-flow:row wrap;color:#455556;font-size:11px;line-height:13px;width:100%;align-items:center}.result__meta>*{margin-block-start:0.5rem}.result__meta>*:not(:last-child){padding-inline-end:0}.result__meta>*:not(:last-child)::after{content:"";height:1rem;width:1px;background:#90c6e7;display:inline-block;margin-inline-start:0.7rem;margin-inline-end:0.7rem}@media (max-width: 576px){.result__meta>*:not(:last-child)::after{display:none}}@media (max-width: 576px){.result__meta{flex-flow:column;align-items:flex-start}}.result__tags{display:flex;flex-flow:row wrap}@media (max-width: 576px){.result__tags{padding-inline-start:0}}.result__tags-tag{color:#455556;display:inline-block;font-size:0.4375rem;letter-spacing:1.4px;background:#fff;border-radius:2px;text-transform:uppercase;padding:0 4px 1px 5px;font-weight:600;margin:3px 0.25rem 0.25rem 0;border:1px solid #b5aea7;white-space:nowrap;line-height:13px}.result__type{font-weight:600;text-transform:capitalize;white-space:nowrap;display:flex;align-items:center}.result__date{display:flex;align-items:center;color:#455556}.result__source{color:#455556;padding-inline-end:0.75rem}.result__authors{font-size:12px;color:#455556;margin-block-end:0.25rem;text-decoration:none;width:70%}.result__buttons{width:70%;margin-block-end:0.5rem}.result__buttons-button{background-color:#007495;color:#fff;padding:5px 8px 1px;border-radius:4px;display:inline-block;font-size:11px;text-decoration:none;border:none}.result__promo{width:70%;margin-block-end:0.5rem;text-decoration:none;color:#455556}.result__promo-box{width:300px;background-color:#e3eef1;padding:12px 12px 8px 4px;display:flex;flex-flow:row nowrap;margin-block-start:1rem}.result__promo-bigdate{flex:0 1 60px;text-align:center;font-weight:600;color:#007495;text-transform:uppercase;line-height:1.25;letter-spacing:1.5px}@media (max-width: 992px){.result__promo-bigdate{width:100%}}.result__promo-bigdate span{color:#455556;display:block}.result__promo-bigdate~div{padding-inline-start:1rem;border-inline-start:1px solid #c5dbe1}.result__promo-date{font-size:12px}.result__promo-venue{font-size:12px}.result__promo nano-icon{color:#007495;position:relative;inset-block-start:1px;padding-inline-end:2px}.result__image{display:block;background-size:cover;background-repeat:no-repeat;background-position:center;border-radius:4px;position:relative;width:100%;height:150px;margin-block-end:0.5rem}@media (min-width: 576px){.result__image{width:142px;height:80px}}.result__image nano-icon{position:absolute;inset-block-start:calc(50% - 0.75rem);inset-inline-start:calc(50% - 0.75rem);font-size:1.5rem;color:#0084a9;--primary-color:#fff;--secondary-color:#0084a9;--primary-opacity:1}@media (max-width: 576px){.result__image nano-icon{font-size:3rem;inset-block-start:calc(50% - 1.5rem);inset-inline-start:calc(50% - 1.5rem)}}.result__video-body{width:70%;text-decoration:none;display:flex;flex-flow:row wrap}@media (max-width: 992px){.result__video-body{width:100%}}@media (max-width: 576px){.result__video-body{flex-flow:column}}.result__video-body .result__body{padding-inline-start:1rem;display:flex;flex-direction:column;margin-block-end:0;flex:1}@media (max-width: 576px){.result__video-body .result__body{padding-inline-start:0}}.result__video-body .result__body p{display:inline;margin:0}.result__video-body .result__body u,.result__video-body .result__body li,.result__video-body .result__body a{text-decoration:none}.result__video-body .result__body .result__meta{margin-block-start:0.5rem}.result__video-body .result__body .result__description{flex:1 0 auto}.search-empty{padding:3rem 0;text-align:center;border-block-start:1px solid #e5eef1}.search-empty h2{color:#455556;font-size:1.125rem;margin-block-end:0.5rem}.search-empty-icon{font-size:7rem;--icon-color:#e4e6e8;margin-block-end:2rem}.search__highlight{background:#fbffbf;font-style:normal}';const l="created > "+Math.floor((Date.now()-631152e5)/1e3);const i=class{constructor(n){e(this,n);this.tagClick=e=>{e.preventDefault();let n=e.target.dataset.value;n=n==="publication"?"publications":n;n=n.toLowerCase();const t=this.algoliaEle.querySelector('nano-algolia-filter[filter-name="tags"]');if(t.value.indexOf(n)===-1){t.value=t.value?[...t.value,n]:[n]}};this.algoliaEle=undefined;this.currentWidth=undefined;this.apiKey=undefined;this.appId=undefined;this.index=undefined}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(e){if(e.target.tagName!=="NANO-GLOBAL-NAV")return;this.algoliaResultsEle=null;this.goback()}handleGlobalNavSearch(e){if(e.target.tagName!=="NANO-GLOBAL-NAV")return;const{detail:{results:n,client:t}}=e;const s=n.find((e=>e.selected));this.apiKey=t.apiKey;this.appId=t.appId;this.index={name:s.indexName,index:s.index,domain:s.domain,filters:s.filters};this.algoliaEle.query=s.query}handleReorder(e){if(e.composedPath().find((e=>e.classList&&e.classList.contains("indexchange")))&&!!this.algoliaResultsEle){this.changeOrder(e)}}attachListeners(e){if(!e.composedPath().find((e=>e.id&&e.id==="main-search")))return;this.algoliaResultsEle=this.algoliaEle.querySelector("#main-search-results");this.attachResultListeners();this.algoliaEle.querySelectorAll(".filters-reset").forEach((e=>{e.addEventListener("click",(()=>{this.removeAllFilters()}))}));this.algoliaEle.querySelectorAll(".close-filters").forEach((e=>{e.addEventListener("click",(()=>{this.closefilters()}))}));const n=this.algoliaEle.querySelector(".filters-wrap");if(n){n.addEventListener("click",(e=>{e.stopPropagation()}))}this.filtersDiv=this.algoliaEle.querySelector("#main-search-filters");const t=this.algoliaEle.querySelector(".old-posts");if(t){t.addEventListener("change",(e=>{this.toggleOldResults(e.target.checked)}))}}attachResultListeners(e){if(e&&e.composedPath().find((e=>e===this.algoliaEle))){this.algoliaResultsEle=this.algoliaEle.querySelector("nano-algolia-results")}if(!this.algoliaResultsEle)return;const n=this.algoliaResultsEle;n.querySelectorAll(".remove-filter").forEach((e=>{e.addEventListener("click",(e=>{const n=e.target;this.removeFilter(n.dataset.filter,n.dataset.filterVal)}))}));n.querySelectorAll(".back-btn").forEach((e=>{e.addEventListener("click",(()=>{this.goback()}))}));n.querySelectorAll(".topbar__show-filters").forEach((e=>{this.openFilterBtn=e;e.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)}))}));const t=Array.from(n.querySelectorAll(".result__tags-tag"));t.forEach((e=>{e.removeEventListener("click",this.tagClick);e.addEventListener("click",this.tagClick)}))}changeOrder(e){this.algoliaEle.replicaIndex=e.detail.value}goback(){this.removeAllFilters();this.algoliaEle.showResults=false;this.algoliaEle.query=""}removeFilter(e,n){this.algoliaEle.removeFilters(e,n)}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)}toggleOldResults(e){if(e)this.algoliaEle.filters=this.algoliaEle.filters.filter((e=>!e.startsWith("created > ")));else this.algoliaEle.filters=[...this.algoliaEle.filters,l];console.log(this.algoliaEle.filters)}componentDidLoad(){this.ro=new ResizeObserver((e=>{for(const n of e){if(!n.contentRect.width)return;this.currentWidth=n.contentRect.width}}));this.ro.observe(this.el);this.algoliaEle.filters=[l]}render(){return n(t,{class:{small:this.currentWidth<677},dir:this.el.ownerDocument.dir==="rtl"?"rtl":false},n("nano-algolia",{"store-id":"searchq","store-method":"url-hash-push",class:"main-search__wrap sc-nano-global-search-results",ref:e=>requestAnimationFrame((()=>this.algoliaEle=e)),id:"main-search"},n("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 <nano-option value="all_prod_en">Sort by: Most relevant</nano-option>\n <nano-option value="all_prod_en_date_desc">Sort by: Newest</nano-option>\n <nano-option value="all_prod_en_date_asc">Sort by: Oldest</nano-option>\n <nano-option value="all_prod_en_activity_date_desc">Sort by: Recent activity</nano-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 <nano-option value="cws_english_en">Sort by: Most relevant</nano-option>\n <nano-option value="cws_english_en_date_desc">Sort by: Newest</nano-option>\n <nano-option value="cws_english_en_date_asc">Sort by: Oldest</nano-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 <nano-option value="cws_english_resources_en">Sort by: Most relevant</nano-option>\n <nano-option value="cws_english_resources_en_featured_desc">Sort by: Newest</nano-option>\n <nano-option value="cws_english_resources_en_featured_asc">Sort by: Oldest</nano-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 <nano-option value="store_prod">Sort by: Most relevant</nano-option>\n <nano-option value="store_prod_date_desc">Sort by: Newest</nano-option>\n <nano-option value="store_prod_date_asc">Sort by: Oldest</nano-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 <nano-option value="community_prod">Sort by: Most relevant</nano-option>\n <nano-option value="community_prod_date_desc">Sort by: Newest</nano-option>\n <nano-option value="community_prod_date_asc">Sort by: Oldest</nano-option>\n <nano-option value="community_prod_activity_date_desc">Sort by: Recent activity</nano-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 \x3c!-- START NO CONTENT --\x3e\n {{ @if ((!it.results || !it.results.length)) }}\n <div class="search-empty">\n <nano-icon name="light/search" class="search-empty-icon"></nano-icon>\n <h2>No matches found...</h2>\n <p>Please try a different search query.</p>\n </div>\n {{ /if }}\n \x3c!-- END NO CONTENT --\x3e\n {{ @if (it.totalHitsWithFilters > 0) }}\n {{ @each(it.results) => result }}\n {{ contentType = result.content_type ? result.content_type : result.type }}\n <li class="sc-nano-global-search-results">\n <div class="sc-nano-global-search-results result">\n <h4 class="sc-nano-global-search-results result__title" data-icon-set="{{(iconSet = false)}}">\n <a href="{{ result.url | abs_url(it, result) }}">\n {{ result._snippetResult.title.value | safe }}\n {{ @if (contentType === 'technical_document' || contentType === 'literature' || contentType === 'white_paper' || contentType === 'protocol') }}\n <span class="sc-nano-global-search-results result__pdf">PDF</span>\n {{ /if }}\n </a>\n </h4>\n {{ @if (result.authors) }}\n {{ @if (typeof result.authors === 'string') }}\n <a class="sc-nano-global-search-results result__authors" href="{{ result.url | abs_url(it, result) }}">Authors: {{ result.authors | trim_to(50) }}</a>\n {{ #else }}\n <a class="sc-nano-global-search-results result__authors" href="{{ result.url | abs_url(it, result) }}">\n {{ @each(result.authors) => author, index }}\n \x3c!-- {{ @if(index == 0)}} --\x3e\n Athors: {{ author | trim_to(60) }}\n \x3c!-- {{ /if }} --\x3e\n {{ /each }}\n </a>\n {{ /if }}\n {{ /if }}\n {{ @if (contentType === 'video' || contentType === 'lc_lightning_talk' ) }}\n {{ @if (result.name) }}\n <a class="sc-nano-global-search-results result__authors" href="{{ result.url | abs_url(it, result) }}">Speaker: {{ result.name | trim_to(50) }}</a>\n {{ /if }}\n <a class="sc-nano-global-search-results result__video-body" href="{{ result.url | abs_url(it, result) }}">\n {{ @if (result.image) }}\n <div class="sc-nano-global-search-results result__image" style="background-image: url('{{ result.image | abs_url(it, result) }}')">\n <nano-icon class="sc-nano-global-search-results" name="duotone/play-circle"></nano-icon>\n </div>\n {{ /if }}\n <div class="sc-nano-global-search-results result__body">\n <div class="sc-nano-global-search-results result__description">\n {{ @if (result.description) }}\n {{ result._snippetResult.description.value | safe }}\n {{ /if }}\n </div>\n </div>\n <div class="sc-nano-global-search-results result__meta">\n {{ @if (result.type || result.content_type) }}\n <div class="sc-nano-global-search-results result__type">\n {{ @if (contentType === 'lc_lightning_talk') }}\n Presentation\n {{ #else }}\n {{ contentType }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.tags) }}\n <div class="sc-nano-global-search-results result__tags">\n {{ @if (typeof result.tags === 'string') }}\n <button data-value="{{ result.tags | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ result.tags }}</button>\n {{ #else }}\n {{ @each(result.tags) => tag, index }}\n {{ @if(index < 5)}}\n {{ @if (tag !== "No video" && tag !== "Resources" && tag !== "Video") }}\n <button data-value="{{ tag | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ tag }}</button>\n {{ /if }}\n {{ /if }}\n {{ /each }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.source) }}\n <div class="sc-nano-global-search-results result__source">Source: {{ result.source }}</div>\n {{ /if }}\n </div>\n </a>\n {{ /if }}\n {{ @if (result.body) }}\n <a class="sc-nano-global-search-results result__body" href="{{ result.url | abs_url(it, result) }}">{{ result._snippetResult.body.value | safe }}</a>\n {{ /if }}\n {{ @if (contentType === 'product' }}\n <div class="sc-nano-global-search-results result__buttons">\n <a class="sc-nano-global-search-results result__buttons-button" href="{{ result.url | abs_url(it, result) }}">View product</a>\n </div>\n {{ /if }}\n {{ @if (contentType === 'event') }}\n <a class="sc-nano-global-search-results result__promo" href="{{ result.url | abs_url(it, result) }}">\n <div class="sc-nano-global-search-results result__promo-box">\n <div class="sc-nano-global-search-results result__promo-bigdate">\n {{ result.start_date | date_long({year: undefined, month: 'short', day: undefined}) }}\n <span>{{ result.start_date | date_long({year: undefined, month: undefined, day: 'numeric'}) }}</span>\n </div>\n <div>\n <div class="sc-nano-global-search-results result__promo-date">\n <nano-icon class="sc-nano-global-search-results" name="light/calendar-alt"></nano-icon>\n {{ @if (result.end_date) }}\n {{ @if (result.end_date !== result.start_date) }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', month: 'short'}) }} - {{ result.end_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ #else }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ /if }}\n {{ #else }}\n {{ @if (result.start_date) }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ /if }}\n {{ /if }}\n </div>\n <div class="sc-nano-global-search-results result__promo-venue">\n <nano-icon class="sc-nano-global-search-results" name="light/map-marker-alt"></nano-icon>\n Venue\n </div>\n </div>\n </div>\n </a>\n {{ /if }}\n {{ @if (contentType !== 'lc_lightning_talk' && contentType !== 'video') }}\n <div class="sc-nano-global-search-results result__meta">\n {{ @if (result.type || result.content_type) }}\n <div class="sc-nano-global-search-results result__type">\n {{ @if (contentType === 'news_item') }}\n News\n {{ #elif (contentType === 'static_page' || contentType === 'bespoke') }}\n Page\n {{ #elif (contentType === 'case_study') }}\n Case study\n {{ #elif (contentType === 'lc_poster') }}\n Poster\n {{ #elif (contentType === 'nanopore_live') }}\n Live stream\n {{ #elif (contentType === 'data_release') }}\n Data release\n {{ #elif (contentType === 'research_area') }}\n Research area\n {{ #elif (contentType === 'white_paper') }}\n White paper\n {{ #elif (contentType === 'technical_document') }}\n Technical document\n {{ #elif (contentType === 'info_sheet') }}\n Info sheet\n {{ #elif (contentType === 'lc_home' || contentType === 'lc_venue') }}\n London Calling\n {{ #else }}\n {{ contentType }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (contentType !== 'event') }}\n {{ @if (result.updated) }}\n <div class="sc-nano-global-search-results result__date">{{ result.updated | date_long({year: 'numeric', month: 'short', day: 'numeric'}) }}</div>\n {{ #else }}\n {{ @if (result.created) }}\n <div class="sc-nano-global-search-results result__date">{{ result.created | date_long({year: 'numeric', month: 'short', day: 'numeric'}) }}</div>\n {{ /if }}\n {{ /if }}\n {{ /if }}\n {{ @if (result.tags) }}\n <div class="sc-nano-global-search-results result__tags">\n {{ @if (typeof result.tags === 'string') }}\n {{ @if (result.tags !== "Resources" && result.tags !== "Tools" && result.tags !== "Publications" && result.tags !== "Case studies") }}\n <button data-value="{{ result.tags | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ result.tags }}</button>\n {{ /if }}\n {{ #else }}\n {{ @each(result.tags) => tag, index }}\n {{ @if(index < 5)}}\n {{ @if (tag !== "Resources" && tag !== "Tools" && tag !== "Publications" && tag !== "Case studies") }}\n <button data-value="{{ tag | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ tag }}</button>\n {{ /if }}\n {{ /if }}\n {{ /each }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.source) }}\n <div class="sc-nano-global-search-results result__source">Source: {{ result.source }}</div>\n {{ /if }}\n </div>\n {{ /if }}\n </div>\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 <input class="sc-nano-global-search-results filter-cb old-posts filters__old-posts" type="checkbox" name="old-posts" id="old-posts" value="nice" />\n <label class="sc-nano-global-search-results filter-label" for="old-posts">\n <span>Include posts older than 2 years</span>\n </label>\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 | lowercase }}" 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>`),n("div",{slot:"output"}),n("slot",null)))}get el(){return s(this)}static get watchers(){return{algoliaEle:["handleAlgoliaCredsChange","handleAlgoliaIndexChange"],apiKey:["handleAlgoliaCredsChange"],appId:["handleAlgoliaCredsChange"],index:["handleAlgoliaIndexChange"]}}};i.style=a;export{i as nano_global_search_results};
|
5
|
-
//# sourceMappingURL=p-db4b6602.entry.js.map
|