@nanoporetech-digital/components 2.15.0 → 2.16.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 +28 -0
- package/dist/cjs/nano-datalist_3.cjs.entry.js +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +11 -2
- package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +1 -1
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-nav-item_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
- package/dist/collection/components/datalist/datalist.js +1 -1
- package/dist/collection/components/datalist/datalist.js.map +1 -1
- package/dist/collection/components/field-validator/field-validator.js +11 -2
- package/dist/collection/components/field-validator/field-validator.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.css +3 -2
- package/dist/collection/components/input/input.css +3 -3
- package/dist/collection/components/select/select.css +1 -0
- package/dist/components/datalist.js +1 -1
- package/dist/components/datalist.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/nano-field-validator.js +11 -2
- package/dist/components/nano-field-validator.js.map +1 -1
- package/dist/components/nano-global-nav.js +1 -1
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/custom-elements/index.js +15 -6
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/nano-datalist_3.entry.js +1 -1
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-field-validator.entry.js +11 -2
- package/dist/esm/nano-field-validator.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +1 -1
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +1 -1
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-nav-item_2.entry.js +1 -1
- package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
- package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
- package/dist/esm-es5/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm-es5/nano-field-validator.entry.js +1 -1
- package/dist/esm-es5/nano-field-validator.entry.js.map +1 -1
- package/dist/esm-es5/nano-global-nav.entry.js +1 -1
- package/dist/esm-es5/nano-global-nav.entry.js.map +1 -1
- package/dist/esm-es5/nano-input.entry.js +1 -1
- package/dist/esm-es5/nano-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/p-1ef47604.entry.js +5 -0
- package/dist/nano-components/p-1ef47604.entry.js.map +1 -0
- package/dist/nano-components/{p-d187fa1e.entry.js → p-42a77642.entry.js} +2 -2
- package/dist/nano-components/{p-d187fa1e.entry.js.map → p-42a77642.entry.js.map} +1 -1
- package/dist/nano-components/p-491107e0.system.entry.js +5 -0
- package/dist/nano-components/p-491107e0.system.entry.js.map +1 -0
- package/dist/nano-components/p-495b3195.system.entry.js +5 -0
- package/dist/nano-components/p-495b3195.system.entry.js.map +1 -0
- package/dist/nano-components/p-52481e3f.entry.js +5 -0
- package/dist/nano-components/p-52481e3f.entry.js.map +1 -0
- package/dist/nano-components/{p-d74f4b9d.entry.js → p-65192b9b.entry.js} +2 -2
- package/dist/nano-components/p-65192b9b.entry.js.map +1 -0
- package/dist/nano-components/p-6b35560c.system.js +1 -1
- package/dist/nano-components/{p-ed44eb45.system.entry.js → p-80c6166e.system.entry.js} +2 -2
- package/dist/nano-components/{p-ed44eb45.system.entry.js.map → p-80c6166e.system.entry.js.map} +1 -1
- package/dist/nano-components/p-c8ff4172.entry.js +5 -0
- package/dist/nano-components/p-c8ff4172.entry.js.map +1 -0
- package/dist/nano-components/{p-5841bd7a.system.entry.js → p-db8aea7a.system.entry.js} +2 -2
- package/dist/nano-components/p-db8aea7a.system.entry.js.map +1 -0
- package/dist/nano-components/{p-1137929a.system.entry.js → p-de983c13.system.entry.js} +2 -2
- package/dist/nano-components/p-de983c13.system.entry.js.map +1 -0
- package/dist/types/components/field-validator/field-validator.d.ts +1 -0
- package/dist/types/interface.d.ts +1 -0
- package/docs-json.json +1 -1
- package/package.json +2 -2
- package/dist/nano-components/p-1137929a.system.entry.js.map +0 -1
- package/dist/nano-components/p-3d9623ad.entry.js +0 -5
- package/dist/nano-components/p-3d9623ad.entry.js.map +0 -1
- package/dist/nano-components/p-5841bd7a.system.entry.js.map +0 -1
- package/dist/nano-components/p-70a54c01.entry.js +0 -5
- package/dist/nano-components/p-70a54c01.entry.js.map +0 -1
- package/dist/nano-components/p-7f5e58b5.system.entry.js +0 -5
- package/dist/nano-components/p-7f5e58b5.system.entry.js.map +0 -1
- package/dist/nano-components/p-b0cd1cc3.system.entry.js +0 -5
- package/dist/nano-components/p-b0cd1cc3.system.entry.js.map +0 -1
- package/dist/nano-components/p-cbb54972.entry.js +0 -5
- package/dist/nano-components/p-cbb54972.entry.js.map +0 -1
- package/dist/nano-components/p-d74f4b9d.entry.js.map +0 -1
@@ -0,0 +1,5 @@
|
|
1
|
+
var __awaiter=this&&this.__awaiter||function(e,t,n,a){function i(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,s){function o(e){try{l(a.next(e))}catch(t){s(t)}}function r(e){try{l(a["throw"](e))}catch(t){s(t)}}function l(e){e.done?n(e.value):i(e.value).then(o,r)}l((a=a.apply(e,t||[])).next())}))};var __generator=this&&this.__generator||function(e,t){var n={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},a,i,s,o;return o={next:r(0),throw:r(1),return:r(2)},typeof Symbol==="function"&&(o[Symbol.iterator]=function(){return this}),o;function r(e){return function(t){return l([e,t])}}function l(o){if(a)throw new TypeError("Generator is already executing.");while(n)try{if(a=1,i&&(s=o[0]&2?i["return"]:o[0]?i["throw"]||((s=i["return"])&&s.call(i),0):i.next)&&!(s=s.call(i,o[1])).done)return s;if(i=0,s)o=[o[0]&2,s.value];switch(o[0]){case 0:case 1:s=o;break;case 4:n.label++;return{value:o[1],done:false};case 5:n.label++;i=o[1];o=[0];continue;case 7:o=n.ops.pop();n.trys.pop();continue;default:if(!(s=n.trys,s=s.length>0&&s[s.length-1])&&(o[0]===6||o[0]===2)){n=0;continue}if(o[0]===3&&(!s||o[1]>s[0]&&o[1]<s[3])){n.label=o[1];break}if(o[0]===6&&n.label<s[1]){n.label=s[1];s=o;break}if(s&&n.label<s[2]){n.label=s[2];n.ops.push(o);break}if(s[2])n.ops.pop();n.trys.pop();continue}o=t.call(e,n)}catch(r){o=[6,r];i=0}finally{a=s=0}if(o[0]&5)throw o[1];return{value:o[0]?o[1]:void 0,done:true}}};var __spreadArray=this&&this.__spreadArray||function(e,t,n){if(n||arguments.length===2)for(var a=0,i=t.length,s;a<i;a++){if(s||!(a in t)){if(!s)s=Array.prototype.slice.call(t,0,a);s[a]=t[a]}}return e.concat(s||Array.prototype.slice.call(t))};
|
2
|
+
/*!
|
3
|
+
* Web Components for Nanopore digital Web Apps
|
4
|
+
*/System.register(["./p-f0e912f3.system.js","./p-6b5760b1.system.js","./p-08f7855e.system.js","./p-1e62746a.system.js","./p-a504d182.system.js","./p-e03f327b.system.js","./p-9edbf25d.system.js"],(function(e,t){"use strict";var n,a,i,s,o,r,l,c,h,u,d,p,m;return{setters:[function(e){n=e.r;a=e.c;i=e.i;s=e.f;o=e.h;r=e.l;l=e.e;c=e.g},function(e){h=e.a},function(e){u=e.d},function(e){d=e.C},function(e){p=e.d},function(e){m=e.c},function(){}],execute:function(){var b=undefined&&undefined.__rest||function(e,t){var n={};for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0)n[a]=e[a];if(e!=null&&typeof Object.getOwnPropertySymbols==="function")for(var i=0,a=Object.getOwnPropertySymbols(e);i<a.length;i++){if(t.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i]))n[a[i]]=e[a[i]]}return n};function g(e,t){if(t===void 0){t={}}return __awaiter(this,void 0,void 0,(function(){var n,a,i,s,o,r,l,c,h,u;return __generator(this,(function(d){switch(d.label){case 0:n=t.body,a=b(t,["body"]);i={Accept:"application/json, text/plain, */*","Access-Control-Allow-Origin":"*","Content-Type":"application/json",Cache:"no-cache"};s=Object.assign(Object.assign({method:n?"POST":"GET",credentials:"include",keepalive:true,mode:"cors"},a),{headers:Object.assign(Object.assign({},i),a.headers)});if(n){s.body=JSON.stringify(n)}o=setTimeout((function(){}),0);if(window.AbortController){r=new AbortController;l=a.timeout,c=l===void 0?500:l;o=setTimeout((function(){return r.abort()}),c);s.signal=r.signal}return[4,fetch(e,s)];case 1:h=d.sent();clearTimeout(o);if(!h.ok)return[3,3];return[4,h.json()];case 2:return[2,d.sent()];case 3:return[4,h.text()];case 4:u=d.sent();return[2,new Error(u)]}}))}))}var f=':host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--padding:12px;--padding-top:var(--padding);--padding-end:var(--padding);--padding-bottom:var(--padding);--padding-start:var(--padding);--bar-background:#005c75;--bar-text-color:white;--bar-color-shade:rgb(19, 89, 111);--bar-color-tint:rgb(19, 89, 111);--bar-color-focus:#90c6e7;--menu-background:#001a21;--menu-text-color:white;--menu-dropdown-bg:#196c82;--menu-dropdown-color:white;display:block;position:relative;line-height:1.5;height:100%}:host *{-webkit-box-sizing:inherit;box-sizing:inherit}.global-nav{font-family:inherit;font-size: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;font-size:0.88em;z-index:var(--nano-layer-index-menubar, 10)}.global-nav button{background:none;color:inherit;border:none;padding:0}.global-nav .icon-btn{position:relative;background:none;color:inherit;border:none;-ms-flex-item-align:normal;-ms-grid-row-align:normal;align-self:normal;padding:9px 7px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.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:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:0.94em}.global-nav .menu-btn{padding:9px var(--padding) 9px var(--padding)}.gn-menu{position:fixed;inset-block-start:0;inset-inline-start:0;z-index:-1;display:none;-webkit-transition:z-index 0.01s ease 0.2s;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:var(--padding) 0;-webkit-box-shadow:0 0 36px 0 rgba(0, 0, 0, 0.8);box-shadow:0 0 36px 0 rgba(0, 0, 0, 0.8);position:relative;pointer-events:all;-webkit-margin-after:36px;margin-block-end:36px;opacity:0;outline:none;-webkit-transition:opacity 0.2s ease, -webkit-transform 0.2s ease;transition:opacity 0.2s ease, -webkit-transform 0.2s ease;transition:transform 0.2s ease, opacity 0.2s ease;transition:transform 0.2s ease, opacity 0.2s ease, -webkit-transform 0.2s ease}.gn-menu_wrap.has-promotion{padding:var(--padding) 0 0}.gn-menu.open{z-index:var(--nano-layer-index-dropdown, 300);-webkit-transition:z-index 0.01s ease;transition:z-index 0.01s ease}.gn-menu.open .gn-menu_wrap{opacity:1;-webkit-transform:translate3d(0, 0, 0) !important;transform:translate3d(0, 0, 0) !important;-webkit-transition:opacity 0.2s ease 0.01s, -webkit-transform 0.2s ease 0.01s;transition:opacity 0.2s ease 0.01s, -webkit-transform 0.2s ease 0.01s;transition:transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s;transition:transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s, -webkit-transform 0.2s ease 0.01s}.gn-menu_actions{-webkit-padding-end:calc(var(--padding) / 2);padding-inline-end:calc(var(--padding) / 2);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.gn-menu_actions-counter{background:#d0021b;color:#fff;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%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;text-indent:0}.gn-menu .content-wrap{position:relative;overflow:hidden;-webkit-transition:0.2s ease min-height;transition:0.2s ease min-height;min-height:190px}.gn-menu .content--sub{padding:var(--padding) 0 var(--padding) 7px}.gn-menu .menu-btn{-webkit-margin-end:auto;margin-inline-end:auto}.gn-menu .nav-links{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;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(--padding) * 2);--padding-start:calc(var(--padding) + 3px);--color:white;--color-hover:#90c6e7;--bg-color-hover:transparent;--bg-color-focus:#002530;--focus-outline:none;font-size:0.99em;width:100%}.gn-menu .nav-links .user-nav{--bg-color:#193037;--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_title{margin:0 var(--padding) 4px;-webkit-border-after:1px solid #33484d;border-block-end:1px solid #33484d;-webkit-padding-after:8px;padding-block-end:8px;font-size:0.86em;text-transform:uppercase;color:#90c6e7;letter-spacing:1px;font-weight:700}.gn-menu .nav-links-wrap{margin:18px 0}.gn-menu .nav-links-wrap:last-child{-webkit-margin-after:0;margin-block-end:0}.gn-menu .nav-links .back-btn{-webkit-border-before:1px solid #33484d;border-block-start:1px solid #33484d;-webkit-border-after:1px solid #33484d;border-block-end:1px solid #33484d;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 11px 10px 0;width:100%;font-size:12px;text-transform:uppercase;color:#90c6e7;letter-spacing:1px;font-weight:700}.gn-menu .nav-links .back-btn nano-icon{-webkit-margin-end:10px;margin-inline-end:10px;font-size:12px;color:white}.gn-menu .nav-links--sub{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;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(--padding);--padding-start:var(--padding);--padding-top:8px;--padding-bottom:8px;margin:0;width:50%;line-height:1.8}.gn-menu .nav-links .content{padding:8px var(--padding)}.gn-menu .login-btn{padding-inline:7px var(--padding);padding-block:9px}.gn-menu .login-btn nano-icon{-webkit-margin-start:10px;margin-inline-start:10px}.gn-menu .logout-btn{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.gn-menu .logout-btn a{padding:0 5px}.sticker-trigger{background:var(--bar-background);width:100%;z-index:calc(var(--nano-layer-index-menubar, 10) + 1)}.bars{color:var(--bar-text-color);z-index:var(--nano-layer-index-menubar, 10);position:relative;max-width:100%;min-width:100%;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:0.2s ease box-shadow;transition:0.2s ease box-shadow}[stuck] .bars{-webkit-box-shadow:0 1px 25px 0 rgba(0, 0, 0, 0.15);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}.bars .search-widget{-webkit-margin-start:11px;margin-inline-start:11px;-webkit-margin-end:auto;margin-inline-end:auto;position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:45vw;min-width:269px;max-height:36px}.bars .search-inputs{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0}.bars .search-inputs input[type=submit]{display:none}.bars .search-autocomplete{position:absolute;inset-block-start:100%;width:100%;inset-inline-start:0;background:white;border:2px solid var(--bar-color-tint);border-radius:0 0 5px 5px;color:#4a4a4a;font-size:0.85em;-webkit-padding-before:calc(var(--padding) / 2);padding-block-start:calc(var(--padding) / 2);-webkit-padding-end:0;padding-inline-end:0;-webkit-padding-after:1px;padding-block-end:1px;-webkit-padding-start:0;padding-inline-start:0;z-index:1}.bars .search-autocomplete-hit{-webkit-padding-before:calc(var(--padding) / 4);padding-block-start:calc(var(--padding) / 4);-webkit-padding-after:calc(var(--padding) / 4);padding-block-end:calc(var(--padding) / 4);-webkit-padding-start:var(--padding);padding-inline-start:var(--padding);-webkit-padding-end:var(--padding);padding-inline-end:var(--padding);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;text-align:start;line-height:1.5;cursor:pointer}.bars .search-autocomplete-hit-scope{font-size:0.76em;color:#a7b0b3;font-weight:600}.bars .search-autocomplete-hit:hover,.bars .search-autocomplete-hit:focus{background-color:#e4e6e8}.bars .search-autocomplete-hit .search__highlight,.bars .search-autocomplete-hit em{font-weight:bold;font-style:normal}.bars .search-autocomplete-hit--no-result:hover,.bars .search-autocomplete-hit--no-result:focus{background:none !important}.bars .search-autocomplete-foot{margin:7px 0 0}.bars .search-autocomplete-submit{background:none;border:none;-ms-flex-item-align:normal;-ms-grid-row-align:normal;align-self:normal;padding:9px var(--padding);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#007495;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;width:100%;text-decoration:underline;-webkit-border-before:1px solid #e8eaea;border-block-start:1px solid #e8eaea}.bars .search-autocomplete-submit:hover,.bars .search-autocomplete-submit:focus{background-color:#e4e6e8}.bars .search-input{--input-border-style:solid 1px rgb(85, 140, 157);--input-border-style--focus:solid 1px var(--bar-color-focus, #90c6e7);--input-border-width:1px;font-size:0.9em}.bars nano-select.search-input{--input-bg-color:var(--bar-color-tint, rgb(88, 140, 161));--input-text-color:inherit;--input-border-radius:5px 0 0 5px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative;inset-inline-start:1px}:host([dir=rtl]) .bars nano-select.search-input{--input-border-radius:0 5px 5px 0}:host(:not(.ready)) .bars nano-select.search-input{overflow:hidden;max-height:1em}.bars nano-select.search-input .down-arrow{font-size:0.65em}.bars nano-input.search-input{--input-text-color:inherit;--input-bg-color:var(--bar-color-shade, rgb(40, 110, 133));--clear-btn-color:#4a4a4a;--input-border-radius:0 5px 5px 0;--placeholder-color:white;width:206px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}:host([dir=rtl]) .bars nano-input.search-input{--input-border-radius:5px 0 0 5px}:host(:not(.ready)) .bars nano-input.search-input{overflow:hidden;max-height:1em}.bars nano-input.search-input.has-value{--input-bg-color:#fff;--input-text-color:#4a4a4a}.bars nano-input.search-input.has-value .search-icon{color:#4a4a4a}.bars nano-input.search-input .search-icon{background:none;color:white;padding:0 8px;display:none}.bars nano-input.search-input .search-icon--show{display:-webkit-box;display:-ms-flexbox;display:flex}.bars nano-input.search-input .search-icon--loader{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.bars nano-input.search-input .search-icon nano-icon{height:1.4em}.main-bar{width:100%;padding-inline:0 var(--padding);padding-block:var(--padding);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;overflow-x:hidden}.main-bar:focus{outline:none}:host(.ready) .main-bar{overflow-x:visible}.main-bar>*,.main-bar ::slotted(*){-webkit-transition:opacity 0.2s ease;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>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main-bar>* ::slotted(nano-nav-item[slot=icon]){-webkit-margin-start:11px;margin-inline-start:11px}.main-bar>* ::slotted(nano-nav-item),.main-bar>* nano-nav-item{--color-hover:#e4e6e8;--secondary-bg-color:var(--menu-dropdown-bg);--secondary-color:var(--menu-dropdown-color);--bg-color-open:var(--bar-background);text-decoration:none !important}.main-bar .icon-btn{-webkit-margin-before:0;margin-block-start:0;-webkit-margin-after:0;margin-block-end:0;-webkit-margin-start:6px;margin-inline-start:6px}:host(.threshold-2) .main-bar .icon-btn{-webkit-margin-before:0;margin-block-start:0;-webkit-margin-after:0;margin-block-end:0;-webkit-margin-start:11px;margin-inline-start:11px}.main-bar .menu-btn.icon-btn{margin:0 !important;-webkit-border-end:1.5px solid var(--bar-color-shade);border-inline-end:1.5px solid var(--bar-color-shade)}.main-bar .user-links{position:relative}.main-bar .user-links .icon-btn{-webkit-padding-end:0;padding-inline-end:0;font-size:0.93em;font-weight:500}.main-bar .user-links .icon-btn nano-icon{-webkit-margin-start:5px;margin-inline-start:5px;width:16px;height:16px;-webkit-transform-origin:center;transform-origin:center;-webkit-transition:color 0.2s ease, -webkit-transform 0.2s ease;transition:color 0.2s ease, -webkit-transform 0.2s ease;transition:transform 0.2s ease, color 0.2s ease;transition:transform 0.2s ease, color 0.2s ease, -webkit-transform 0.2s ease}.main-bar .user-links .icon-btn.open nano-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg);color:#007495}.main-bar .user-links-panel{display:none;position:absolute;border-radius:4px 0 4px 4px;-webkit-box-shadow:0 1px 5px 0 rgba(0, 0, 0, 0.4);box-shadow:0 1px 5px 0 rgba(0, 0, 0, 0.4);background-color:#568c9d;opacity:0;-webkit-transform:translate3d(0, 24px, 0);transform:translate3d(0, 24px, 0);-webkit-transition:opacity 0.2s ease, -webkit-transform 0.2s ease;transition:opacity 0.2s ease, -webkit-transform 0.2s ease;transition:transform 0.2s ease, opacity 0.2s ease;transition:transform 0.2s ease, opacity 0.2s ease, -webkit-transform 0.2s ease;inset-inline-end:0;font-size:0.85em;min-width:250px;z-index:1}.main-bar .user-links-panel:focus{outline:none}.main-bar .user-links-panel.show{opacity:1;-webkit-transform:translate3d(0, 4px, 0);transform:translate3d(0, 4px, 0)}.main-bar .user-links-panel-content{padding:0 18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main-bar .user-links-panel-content a{padding:11px 0;-webkit-border-after:#669dac 1px solid;border-block-end:#669dac 1px solid}.main-bar .user-links-panel-content a:hover,.main-bar .user-links-panel-content a:focus{color:#455556}.main-bar .user-links-panel-content a:last-child{-webkit-border-after:none;border-block-end:none}.main-bar .user-links-panel-foot{background-color:#aac5cd;border-radius:0 0 4px 4px;padding:var(--padding);color:#455556;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:500;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.main-bar .user-links-panel-foot a:hover{text-decoration:underline}.main-bar .logo{height:34px;width:auto;min-width:196px}:host(:not(.threshold-1)) .main-bar .logo{height:30px}.main-bar .logo-link{-webkit-margin-end:auto;margin-inline-end:auto;-webkit-margin-start:0;margin-inline-start:0;padding-inline:11px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none}.main-bar .nav-links{font-size:0.75rem;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.main-bar .nav-links ul{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;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 8px}.main-bar .nav-links--main{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;letter-spacing:0.33px;font-weight:600;font-stretch:expanded;font-size:0.8125rem}.main-bar .nav-links--main ::slotted(nano-nav-item){--color:#fff;--padding-end:3px;--padding-start:0}.main-bar .nav-links--sub{--color:var(--color, #e2e2e2);opacity:0.9 !important;-webkit-margin-start:6px;margin-inline-start:6px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.main-bar .login-btn{display:inline-block;border-radius:4px;background-color:#17bb75;color:#fff;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}.search-bar{height:0;overflow:hidden;-webkit-transition:0.2s ease height;transition:0.2s ease height;padding:0 var(--padding);outline:none;max-width:45em;-webkit-margin-start:auto;margin-inline-start:auto}.search-bar .search-widget{margin:0;overflow:inherit;max-width:none;max-height:none;padding:0 0 var(--padding)}.search-bar .search-inputs{padding:0 0;margin:0 0}.search-bar .search-autocomplete{inset-block-start:calc(100% - (var(--padding) + 1px))}.site-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:min-height 0.2s ease;transition:min-height 0.2s ease;min-height:calc(100% - 61px);position:relative;z-index:auto;-webkit-box-align:stretch;-ms-flex-align:stretch;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;-webkit-transition:opacity 0.2s ease, visibility 0.01s ease 0.2s, z-index 0.01s ease 0.2s, -webkit-transform 0.2s ease;transition:opacity 0.2s ease, visibility 0.01s ease 0.2s, z-index 0.01s ease 0.2s, -webkit-transform 0.2s ease;transition:transform 0.2s ease, opacity 0.2s ease, visibility 0.01s ease 0.2s, z-index 0.01s ease 0.2s;transition:transform 0.2s ease, opacity 0.2s ease, visibility 0.01s ease 0.2s, z-index 0.01s ease 0.2s, -webkit-transform 0.2s ease;visibility:hidden}.mask.open{opacity:1;-webkit-transition:z-index 0.01s ease, visibility 0.01s ease, opacity 0.2s ease 0.01s, -webkit-transform 0.2s ease 0.01s;transition:z-index 0.01s ease, visibility 0.01s ease, opacity 0.2s ease 0.01s, -webkit-transform 0.2s ease 0.01s;transition:z-index 0.01s ease, visibility 0.01s ease, transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s;transition:z-index 0.01s ease, visibility 0.01s ease, transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s, -webkit-transform 0.2s ease 0.01s;z-index:3;visibility:visible}';var v={search:0,about:1,main:2,login:3,icon:4};var x=e("nano_global_nav",function(){function e(e){var t=this;n(this,e);this.nanoIsReady=a(this,"nanoIsReady",7);this.nanoSearchResult=a(this,"nanoSearchResult",7);this.nanoSearchError=a(this,"nanoSearchError",7);this.nanoSearchReset=a(this,"nanoSearchReset",7);this.currSize=0;this.thresholdsGoingUp=false;this.THRESHOLDLIMIT=Object.keys(v).length;this.autocompleteEles=[];this.currAIndex=-1;this.isLoggedIn=false;this.myAccData=null;this.aboutNavItms=[];this.siteNavItms=[];this.loggedInNavItms=[];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.threshold=this.THRESHOLDLIMIT;this.modalOpen=false;this.modalIsOpen=false;this.searchBarShown=false;this.scrollingUp=true;this.searchLoading=false;this.showAutocomplete=false;this.secondaryMenuOpen=false;this.userMenuOpen=false;this.menuFullScreen=false;this.searchValInternal="";this.env="prod";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.searchValue="";this.searchIndex="all_prod_en";this.cartCount=0;this.msgCount=0;this.cartUrl=null;this.msgUrl=null;this.setResizingState=function(e){if(e===void 0){e=false}if(typeof t.debounceSetResizingState==="undefined"){t.debounceSetResizingState=p(t.setResizingState,600)}if(e){t.isResizing=true;t.debounceSetResizingState()}else{t.isResizing=false;t.thresholdsGoingUp=false}};this.onMenuBtnKeyDown=function(e){switch(e.key){case"Enter":case" ":t.modalOpen?t.menuClose(e,true):t.menuOpen();break}};this.onMenuBtnClick=function(e){t.menuClose(e,true)};this.menuOpen=function(e){if(e)e.preventDefault();t.menuDiv.style.display="block";t.modalOpen=true;t.modalIsOpen=true;t.menuWrapDiv.addEventListener("focusout",t.menuClose);t.menuWrapDiv.focus({preventScroll:true});if(t.threshold<2||t.menuWrapDiv.scrollHeight>window.innerHeight){document.body.style.overflow="hidden";t.menuFullScreen=true}else document.body.style.overflowX="hidden"};this.onMenuHidden=function(){t.menuDiv.removeEventListener("transitionend",t.onMenuHidden);t.menuWrapDiv.removeEventListener("focusout",t.menuClose);document.body.style.overflow="";t.menuDiv.style.display="none";t.modalIsOpen=false;t.menuFullScreen=false;setTimeout((function(){if(document.activeElement===document.body&&t.menuBtn)t.mainBarDiv.focus({preventScroll:true})}),50)};this.menuClose=function(e,n){if(n===void 0){n=false}if(!n){var a=e;if(a&&a.relatedTarget&&m("#global-nav-menu",a.relatedTarget))return;if(a&&a.relatedTarget&&a.relatedTarget.closest("#global-nav-menu"))return;if(a&&a.relatedTarget&&a.relatedTarget.closest('[slot="promotion"]'))return;if(t.secondaryMenuOpen)return}t.modalOpen=false;t.menuDiv.addEventListener("transitionend",t.onMenuHidden)};this.subMenuClose=function(e){e.preventDefault();e.target.closest("nano-nav-item").open=false};this.onUserBtnClick=function(e){e.preventDefault();t.userMenuOpen=!t.userMenuOpen};this.onUserBtnKeyDown=function(e){switch(e.key){case"Enter":case" ":t.userMenuOpen=!t.userMenuOpen;break}};this.onUserMenuBlur=function(e){if(!e.relatedTarget){t.userMenuOpen=false;return}if(!!e.relatedTarget.closest(".user-links-panel"))return false;t.userMenuOpen=false};this.onSearchBtnClick=function(e){e.preventDefault();if(!t.searchBarShown)t.searchbarShow();else t.searchbarHide()};this.onSearchBtnKeyDown=function(e){switch(e.key){case"Enter":case" ":t.searchBarShown?t.searchbarHide():t.searchbarShow();break}};this.onSearchBarShown=function(){t.searchBarEl.removeEventListener("transitionend",t.onSearchBarShown);if(t.searchInput)t.searchInput.setFocus();t.searchBarEl.style.overflow="visible"};this.searchbarHide=function(e){if(e&&e.relatedTarget&&e.relatedTarget.closest("#global-nav-search-bar"))return;t.showAutocomplete=false;if(t.searchValInternal.length&&e)return;t.searchBarEl.addEventListener("transitionend",t.onSearchBarHidden);t.searchBarEl.style.overflow="hidden";t.searchBarEl.style.height="0px"};this.onSearchBarHidden=function(){t.searchBarEl.removeEventListener("transitionend",t.onSearchBarHidden);t.searchBarEl.style.display="none";t.searchBarShown=false};this.onSearchInput=function(e){t.searchValInternal=t.searchInput.value;if(!t.isSearchValSet()){t.searchLoading=false;return}if(e.detail.type==="input"){t.showAutocomplete=false;t.searchLoading=true}};this.onSearchChange=function(e){return __awaiter(t,void 0,void 0,(function(){var t,n,a,i;return __generator(this,(function(s){switch(s.label){case 0:this.searchValInternal=this.searchValue=e?e.detail.value:this.searchValInternal;this.showAutocomplete=false;this.autocompleteResults=null;if(!this.isSearchValSet()){if(!this.searchValInternal.length){this.nanoSearchReset.emit()}this.searchLoading=false;return[2]}if(!this.currentIndex)this.currentSelectedIndex();s.label=1;case 1:s.trys.push([1,3,,4]);t=this;n=this.processSearchResults;return[4,this.currentIndex.alogliaIndex.search(this.searchValInternal,{attributesToSnippet:["body:5","title:8"],hitsPerPage:5,filters:"created > "+Math.floor((Date.now()-631152e5)/1e3)})];case 2:t.autocompleteResults=n.apply(this,[s.sent()]);return[3,4];case 3:a=s.sent();console.error(a);return[3,4];case 4:this.scopeSearch=null;i=this;return[4,this.onSearchSubmit(null,false)];case 5:i.scopeSearch=s.sent();this.searchLoading=false;this.showAutocompleteResults();return[2]}}))}))};this.onSearchSubmit=function(e,n){if(n===void 0){n=true}return __awaiter(t,void 0,void 0,(function(){var t,a,i,s;var o=this;return __generator(this,(function(r){switch(r.label){case 0:if(e)e.preventDefault();if(!this.isSearchValSet())return[2];this.searchLoading=true;this.algoliaSearchResults=null;if(!this.currentIndex)this.currentSelectedIndex();t=this.internalSearchIndeces.map((function(e){return{indexName:e.index,query:o.searchValInternal,facets:e.filters,hitsPerPage:10,filters:"created > "+Math.floor((Date.now()-631152e5)/1e3)}}));r.label=1;case 1:r.trys.push([1,3,,4]);a=this;i=this.processSearchResults;return[4,this.algoliaClient.multipleQueries(t)];case 2:a.algoliaSearchResults=i.apply(this,[r.sent()]);return[3,4];case 3:s=r.sent();this.nanoSearchError.emit(s);return[3,4];case 4:this.searchLoading=false;if(!this.algoliaSearchResults)return[2];this.algoliaSearchResults.results.map((function(e,t){e.indexName=o.internalSearchIndeces[t].name;e.selected=o.currentIndex.name===o.internalSearchIndeces[t].name;e.domain=o.currentIndex.domain||null;e.domains=o.myAccData.domains||null;e.allGroup=!!o.internalSearchIndeces[t].allGroup;e.filters=o.internalSearchIndeces[t].filters}));if(n){this.nanoSearchResult.emit({results:this.algoliaSearchResults.results,client:{apiKey:this.searchApiKey,appId:this.searchAppId}});this.showAutocomplete=false}return[2,this.algoliaSearchResults]}}))}))};this.onSearchIndexChange=function(e){return __awaiter(t,void 0,void 0,(function(){var t,n,a;return __generator(this,(function(i){switch(i.label){case 0:t=e;n=e;if(!this.currentIndex)this.currentSelectedIndex();if(t.detail&&t.detail.value.length)n=t.detail.value;if(!n||!n.length)return[2];if(this.currentIndex.index===n)return[2];a=this.internalSearchIndeces.find((function(e){return e.index===n}));if(!a||!a.alogliaIndex)return[2];this.searchIndex=a.index;if(!this.isSearchValSet())return[3,2];return[4,this.onSearchChange()];case 1:i.sent();i.label=2;case 2:return[2]}}))}))};this.switchIndexSubmit=function(e){return __awaiter(t,void 0,void 0,(function(){return __generator(this,(function(t){switch(t.label){case 0:if(!this.isSearchValSet())return[3,2];return[4,this.onSearchIndexChange(e)];case 1:t.sent();this.onSearchSubmit();return[3,3];case 2:this.onSearchIndexChange(e);t.label=3;case 3:return[2]}}))}))};this.onAutocompleteBlur=function(e){if(!t.showAutocomplete||!t.autocompleteResults)return;if(e&&e.target&&e.target.closest(".search-widget"))return;t.showAutocomplete=false};this.showAutocompleteResults=function(){if(!t.autocompleteResults||!t.autocompleteResults.hits)return;t.showAutocomplete=true};this.onAutocompleteInteract=function(e){if(!t.showAutocomplete||!t.autocompleteResults)return;var n=t.currAIndex;switch(e.key){case"Tab":setTimeout((function(){if(!t.el.shadowRoot.activeElement||!t.el.shadowRoot.activeElement.closest(".search-widget")){t.showAutocomplete=false;return}else{var e=t.autocompleteEles.find((function(e,n){if(e===t.el.shadowRoot.activeElement){t.currAIndex=n;return true}}));if(e)t.setActiveElement(e);else t.currAIndex=-1}}));break;case"ArrowDown":case"ArrowUp":if(e.key==="ArrowDown")n++;else if(e.key==="ArrowUp")n--;var a=t.autocompleteEles[n];if(a||n<0||n>t.autocompleteEles.length-1)e.preventDefault();if(a){t.setActiveElement(a);t.currAIndex=n}else if(n<0){t.searchInput.setFocus();t.currAIndex=-1}break;case"Enter":case" ":if(t.autocompleteEles[t.currAIndex]){t.autocompleteEles[t.currAIndex].click()}break}}}e.prototype.submitSearch=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){this.onSearchSubmit();this.showAutocomplete=false;return[2]}))}))};e.prototype.getMyAccData=function(){return __awaiter(this,void 0,void 0,(function(){var e,n,a,i,s;var o=this;return __generator(this,(function(r){switch(r.label){case 0:if(!this.getMyAccountData||this.myAccData){this.remoteDataReady=true;return[2]}e=this.ssoDataUrl;if(!e){switch(this.env){case"dev":e="https://myaccount-dev.nanoporetech.com/";break;case"test":e="https://myaccount-test.nanoporetech.com/";break;default:e="https://myaccount.nanoporetech.com/";break}}n={timeout:5e3};r.label=1;case 1:r.trys.push([1,6,,7]);if(!(this.env==="local"))return[3,3];a=this;return[4,t.import("./p-755ca2d6.system.js")];case 2:a.myAccData=r.sent();return[3,5];case 3:i=this;return[4,g(e+"nav_bar_data.json",n)];case 4:i.myAccData=r.sent();r.label=5;case 5:if(this.myAccData.user.id){this.isLoggedIn=true;this.myAccountUser=this.myAccData.user}this.processMyAccLinks();this.processMyAccData();setTimeout((function(){return o.remoteDataReady=true}),300);return[3,7];case 6:s=r.sent();console.error(s);this.remoteDataReady=true;return[3,7];case 7:return[2]}}))}))};e.prototype.currentSelectedIndex=function(){var e=this;if(!this.internalSearchIndeces.length){return}var t=this.internalSearchIndeces.find((function(t){return t.index===e.searchIndex}));if(!t){this.currentIndex=this.internalSearchIndeces[0];console.error("index not found");return}this.currentIndex=t;return t};e.prototype.changeInternalSearchVal=function(){if(this.searchValInternal!==this.searchValue)this.searchValue=this.searchValInternal};e.prototype.initAlgoliaClient=function(){if(!this.searchAppId||!this.searchApiKey)return;this.algoliaClient=h(this.searchAppId,this.searchApiKey);this.addAlgoliaIndeces()};e.prototype.addIndeces=function(){this.internalSearchIndeces=__spreadArray(__spreadArray([],this.internalSearchIndeces,true),this.searchIndeces,true)};e.prototype.addAlgoliaIndeces=function(){var e=this;if(!this.algoliaClient||!this.internalSearchIndeces.length)return;this.internalSearchIndeces.forEach((function(t){t.alogliaIndex=e.algoliaClient.initIndex(t.index)}));if(!this.searchIndex)this.searchIndex=this.internalSearchIndeces[0].index};e.prototype.thresholdChange=function(e,t){if(e>t){this.thresholdsGoingUp=true;this.setResizingState(true)}};e.prototype.ratioChange=function(){var e=this;if(this.intersectRatio<1&&this.threshold>0){if(this.thresholdsGoingUp)this.setResizingState(true);this.threshold--;setTimeout((function(){return e.ratioChange()}),500)}else{this.thresholdReady=true;this.siteContent.style.minHeight="calc(100% - ".concat(this.barsDiv.clientHeight+1,"px)");var t,n;i((function(){t=__spreadArray(__spreadArray([],Array.from(e.el.querySelectorAll('nano-nav-item[slot="site"]')),true),Array.from(e.el.querySelectorAll('nano-nav-item[slot="overflow"]')),true);n=[];if(e.threshold<e.THRESHOLDLIMIT-v.icon)t.push.apply(t,Array.from(e.el.querySelectorAll('nano-nav-item[slot="icon"]')));else n.push.apply(n,Array.from(e.el.querySelectorAll('nano-nav-item[slot="icon"]')));if(e.threshold<e.THRESHOLDLIMIT-v.login)t.push.apply(t,Array.from(e.el.querySelectorAll('nano-nav-item[slot="loggedin"]')));else n.push.apply(n,Array.from(e.el.querySelectorAll('nano-nav-item[slot="loggedin"]')));if(e.threshold<e.THRESHOLDLIMIT-v.main)t.push.apply(t,Array.from(e.el.querySelectorAll('nano-nav-item[slot="main"]')));else n.push.apply(n,Array.from(e.el.querySelectorAll('nano-nav-item[slot="main"]')));if(e.threshold<e.THRESHOLDLIMIT-v.about)t.push.apply(t,Array.from(e.el.querySelectorAll('nano-nav-item[slot="about"]')));else n.push.apply(n,Array.from(e.el.querySelectorAll('nano-nav-item[slot="about"]')))}));s((function(){t.forEach((function(e){e.classList.add("nano-global-nav-menu");e.classList.remove("nano-global-nav-bar")}));n.forEach((function(e){e.classList.remove("nano-global-nav-menu");e.classList.add("nano-global-nav-bar")}))}))}};e.prototype.assessReady=function(){if(this.thresholdReady&&this.remoteDataReady){this.ready=true}};e.prototype.remoteReady=function(){this.attachIO()};e.prototype.isReady=function(){this.nanoIsReady.emit()};e.prototype.setupAutocompleteBlur=function(){if(this.showAutocomplete){this.el.shadowRoot.addEventListener("click",this.onAutocompleteBlur)}else{this.el.shadowRoot.removeEventListener("click",this.onAutocompleteBlur)}};e.prototype.slotChange=function(){this.threshold=this.THRESHOLDLIMIT};e.prototype.thresholdClasses=function(){var e=[];var t=0;for(t;t<this.threshold;t++)e.push("threshold-"+(t+1));return e};e.prototype.onWindowResize=function(){if(this.threshold<this.THRESHOLDLIMIT&&window.innerWidth>this.currSize){this.threshold=this.THRESHOLDLIMIT}this.currSize=window.innerWidth;this.searchBarShown=false};e.prototype.secondaryOpen=function(e){if(!e.detail.secondaryMenu)return;e.stopPropagation();this.secondaryMenuOpen=true;this.menuContentDiv.style.minHeight=e.detail.secondaryMenu.scrollHeight+"px"};e.prototype.secondaryClose=function(e){if(!e.detail.secondaryMenu)return;e.stopPropagation();this.secondaryMenuOpen=false;this.menuContentDiv.style.minHeight=""};e.prototype.handleUserMenu=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){switch(e.label){case 0:return[4,u(this.userLinkPanel,"show",this.userMenuOpen)];case 1:e.sent();if(this.userMenuOpen){this.userLinkPanel.focus();this.userLinkPanel.addEventListener("focusout",this.onUserMenuBlur)}else{this.userLinkPanel.removeEventListener("focusout",this.onUserMenuBlur);this.el.focus()}return[2]}}))}))};e.prototype.searchbarShow=function(){var e=this;this.searchBarShown=true;this.searchBarEl.addEventListener("transitionend",this.onSearchBarShown);this.searchBarEl.style.display="block";setTimeout((function(){e.searchBarEl.style.height=e.searchBarEl.querySelector(".search-widget").scrollHeight+"px"}),50)};e.prototype.autocompleteSnippet=function(e){var t=["title"];if(e._snippetResult){var n=t.find((function(t){return e._snippetResult[t]&&e._snippetResult[t].matchLevel!=="none"}));if(n){if(n!=="title")return(e.title.length>15?e.title.substring(0,15)+" ...":e.title)+" "+e._snippetResult[n].value;else return e._snippetResult["title"].value}}return e.title};e.prototype.isSearchValSet=function(){if(this.searchValInternal.length<3)return false;return true};e.prototype.resetHitFocus=function(){this.currAIndex=-1};e.prototype.setActiveElement=function(e){this.autocompleteEles.map((function(e){return e.setAttribute("aria-selected","false")}));e.focus({preventScroll:true});e.setAttribute("aria-selected","true")};e.prototype.assessSlottedContent=function(){var e=this;i((function(){e.hasSiteSlot=!!e.el.querySelectorAll('[slot="site"]').length;e.hasLoggedinSlot=!!e.el.querySelectorAll('[slot="loggedin"]').length;e.hasPromotionSlot=!!e.el.querySelectorAll('[slot="promotion"]').length;e.aboutSlotLen=e.el.querySelectorAll('[slot="about"]').length;e.iconSlotLen=e.el.querySelectorAll('[slot="icon"]').length;e.mainSlotLen=e.el.querySelectorAll('[slot="main"]').length;e.overflowSlotLen=e.el.querySelectorAll('[slot="overflow"]').length;e.searchSlotLen=e.el.querySelectorAll('[slot="search"]').length}))};e.prototype.attachIO=function(){var e=this;if(this.io)return;var t=this.el.shadowRoot.querySelector(".global-nav .main-bar");if(typeof window!=="undefined"&&window.IntersectionObserver&&!!t){var n=this.io=new window.IntersectionObserver((function(t){e.intersectRatio=t.slice(-1)[0].intersectionRatio}),{root:t,threshold:1});n.observe(t.querySelector(".measure-ele"))}};e.prototype.componentDidLoad=function(){{this.debounceResize=p(this.onWindowResize.bind(this),300);window.addEventListener("resize",this.debounceResize);this.currSize=window.innerWidth}this.initAlgoliaClient();this.addAlgoliaIndeces();if(this.remoteDataReady)this.attachIO()};e.prototype.componentWillLoad=function(){var e=this;d.init(this,["searchIndex","searchValue"],"url-hash","gns");if(typeof window!=="undefined"&&window.MutationObserver){var t=this.mo=new MutationObserver((function(){e.assessSlottedContent()}));t.observe(this.el,{childList:true,subtree:false})}this.assessSlottedContent()};e.prototype.disconnectedCallback=function(){if(this.io){this.io.disconnect();this.io=undefined}if(this.mo){this.mo.disconnect();this.mo=undefined}window.removeEventListener("resize",this.debounceResize)};e.prototype.connectedCallback=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){this.getMyAccData();return[2]}))}))};e.prototype.autocompleteList=function(){var e=this;var t;if(this.showAutocomplete&&this.scrollingUp){var n=0;var a=0;var i=function(t,n){return n.index!==e.currentIndex.index?t+n.hits.length:t};var s=function(t,n){return n.index===e.currentIndex.index?t+n.hits.length:t};if(this.scopeSearch){a=this.scopeSearch.results.reduce(i,0);n=this.scopeSearch.results.reduce(s,0)}if(this.autocompleteResults&&this.autocompleteResults.hits.length||a&&!n){var r=0;t=o("div",null,!n&&o("div",{class:"search-autocomplete-hit search-autocomplete-hit--no-result"},"No results matching '",this.searchValInternal,"' were found in"," ",o("strong",null,this.currentIndex.name),". Try another phrase."),this.autocompleteResults&&[this.autocompleteResults.hits.map((function(t,n){return o("a",{role:"option",ref:function(t){return e.autocompleteEles.push(t)},tabindex:"-1",id:"autocomplete-hit-"+n,href:t.url,class:"search-autocomplete-hit",innerHTML:e.autocompleteSnippet(t)})}))],(!n||this.currentIndex.allGroup)&&this.scopeSearch&&this.scopeSearch.results&&[this.scopeSearch.results.map((function(t,n){if(!t.hits.length||t.index===e.currentIndex.index||r>1)return;r++;return o("button",{role:"option",ref:function(t){return e.autocompleteEles.push(t)},tabindex:"-1",id:"autocomplete-scope-"+n,class:"search-autocomplete-hit",onClick:function(){return e.switchIndexSubmit(t.index)},onMouseDown:function(){return e.switchIndexSubmit(t.index)}},'"',e.searchValInternal,'"'," ",o("div",{class:"search-autocomplete-hit-scope"},"in ",t.indexName))}))],!!n&&o("div",{class:"search-autocomplete-foot"},o("button",{role:"option",class:"search-autocomplete-submit",ref:function(t){return e.autocompleteEles.push(t)},id:"autocomplete-foot",onClick:this.onSearchSubmit,onMouseDown:this.onSearchSubmit},"View all results")))}else if(!n){t=o("div",{class:"search-autocomplete-hit search-autocomplete-hit--no-result"},"No results matching '",this.searchValInternal,"' were found. Try another phrase.")}}return o("div",{class:"search-autocomplete",role:"listbox",id:"autocomplete-results","aria-expanded":this.showAutocomplete?"true":"false",hidden:!this.showAutocomplete,onKeyDown:this.onAutocompleteInteract},t)};e.prototype.searchWidget=function(){var e=this;return[o("form",{class:"search-inputs",onSubmit:this.onSearchSubmit,id:"global-nav-search"},o("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((function(t){return o("nano-option",{selected:t.index===e.searchIndex,value:t.index},t.name||t.index)})),o("nano-icon",{name:"solid/caret-down",class:"down-arrow",slot:"down-arrow"})),o("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...",type:"text",ref:function(t){return e.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"},o("button",{class:{"search-icon":true,"search-icon--search":true,"search-icon--show":!this.searchValInternal.length},slot:"end",onMouseDown:function(t){e.searchValInternal=e.searchInput.value;e.onSearchSubmit(t,true)}},o("nano-icon",{name:"light/search"})),o("span",{class:{"search-icon":true,"search-icon--loader":true,"search-icon--show":this.searchLoading},slot:"end"},o("nano-icon",{name:"light/spinner-third"}))),o("input",{type:"submit"}))]};e.prototype.render=function(){var e;var t=this;this.autocompleteEles=[];var n=this.el.ownerDocument.dir==="rtl";var a=this.searchWidget();a.push(this.autocompleteList());return o(l,{class:(e={},e[this.thresholdClasses().join(" ")]=true,e.ready=this.ready,e["search-bar-shown"]=this.searchBarShown&&this.scrollingUp,e["search-auto-complete-shown"]=this.showAutocomplete&&this.scrollingUp,e["modal-open"]=this.modalIsOpen,e.resizing=this.isResizing,e),dir:n?"rtl":null},o("div",{class:{"global-nav":true,"scrolling-down":!this.scrollingUp}},o("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:function(e){return t.menuDiv=e}},o("div",{class:"gn-menu_wrap",ref:function(e){return t.menuWrapDiv=e},tabindex:"-1"},o("div",{class:"gn-menu_actions"},o("button",{class:"menu-btn icon-btn icon-btn",onMouseDown:this.onMenuBtnClick,onKeyDown:this.onMenuBtnKeyDown},this.threshold<this.THRESHOLDLIMIT-3&&o("nano-icon",{name:"light/times","aria-label":"close menu"}),this.threshold>=this.THRESHOLDLIMIT-3&&o("nano-icon",{name:"light/bars","aria-label":"close menu"})),this.threshold<this.THRESHOLDLIMIT-v.icon&&[!!this.iconSlotLen&&o("slot",{name:"icon"}),this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("icons"))&&[this.msgUrl&&o("a",{href:this.msgUrl,class:"icon-btn"},o("nano-icon",{name:"light/bell"}),this.msgCount>0&&o("span",{class:"gn-menu_actions-counter"},this.msgCount)),this.cartUrl&&o("a",{href:this.cartUrl,class:"icon-btn"},o("nano-icon",{name:"light/shopping-cart"}),this.cartCount>0&&o("span",{class:"gn-menu_actions-counter"},this.cartCount))]],this.myAccData&&this.myAccData.urls.login&&o("a",{href:this.myAccData.urls.login+this.ssoRedirect,class:"login-btn"},"Login / Register"," ",o("nano-icon",{name:"solid/chevron-right"}))),o("div",{class:"content-wrap",ref:function(e){return t.menuContentDiv=e}},o("div",{class:"content"},o("nav",{class:"nav-links nav-links--main"},o("slot",{name:"overflow"}),this.threshold<this.THRESHOLDLIMIT-v.main&&!!this.mainSlotLen&&o("slot",{name:"main"})),((!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold<this.THRESHOLDLIMIT-v.about||this.hasSiteSlot||!!this.siteNavItms.length)&&o("div",null,(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold<this.THRESHOLDLIMIT-v.about&&[(this.threshold>=this.THRESHOLDLIMIT-(v.about+1)||this.mainSlotLen<2)&&this.overflowSlotLen<2&&o("div",{class:"nav-links-wrap"},!!this.aboutNavItms.length&&o("h4",{class:"nav-links_title"},"About"),o("nav",{class:"nav-links nav-links--sub","aria-label":"About the company links"},o("slot",{name:"about"}),this.aboutNavItms.map((function(e){return o("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},o("a",{href:e.address,target:e.target},e.title))})))),(this.threshold<this.THRESHOLDLIMIT-(v.about+1)&&this.mainSlotLen>=2||this.overflowSlotLen>=2)&&o("nav",{class:"nav-links","aria-label":"About the company links"},!this.aboutNavItms.length&&o("slot",{name:"about"}),!!this.aboutNavItms.length&&o("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},"Company",o("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),o("div",{slot:"secondary"},o("div",{class:"content"},o("button",{class:"back-btn",onClick:this.subMenuClose},o("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),"Company"),o("slot",{name:"about"}),o("div",{class:"content--sub"},this.aboutNavItms.map((function(e){return o("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},o("a",{href:e.address,target:e.target},e.title))})))))))],(this.hasSiteSlot||!!this.siteNavItms.length)&&[(this.threshold>=this.THRESHOLDLIMIT-2||this.mainSlotLen<2)&&this.overflowSlotLen<2&&o("div",{class:"nav-links-wrap"},o("h4",{class:"nav-links_title"},"Sites"),o("nav",{class:"nav-links nav-links--sub","aria-label":"Different company site links"},o("slot",{name:"site"}),this.siteNavItms.map((function(e){return o("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},o("a",{href:e.address,target:e.target},e.title))})))),(this.threshold<this.THRESHOLDLIMIT-2&&this.mainSlotLen>=2||this.overflowSlotLen>=2)&&o("nav",{class:"nav-links","aria-label":"Different company site links"},o("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},"Sites",o("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),o("div",{slot:"secondary"},o("div",{class:"content"},o("button",{class:"back-btn",onClick:this.subMenuClose},o("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),"Sites"),o("div",{class:"content--sub"},o("slot",{name:"site"}),this.siteNavItms.map((function(e){return o("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},o("a",{href:e.address,target:e.target},e.title))})))))))])),this.isLoggedIn&&this.threshold<this.THRESHOLDLIMIT-v.login&&(this.loggedInNavItms.length||this.hasLoggedinSlot)&&o("nav",{class:"nav-links","aria-label":"Your user account links"},o("nano-nav-item",{class:"nano-global-nav user-nav nano-global-nav-menu"},this.myAccountUser.name,o("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),o("div",{slot:"secondary"},o("div",{class:"content"},o("button",{class:"back-btn",onClick:this.subMenuClose},o("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),this.myAccountUser.name),o("div",{class:"content--sub"},o("slot",{name:"loggedin"}),this.loggedInNavItms.map((function(e){return o("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},o("a",{href:e.address,target:e.target},e.title))})),o("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},o("a",{href:this.myAccData.urls.forgot_password+this.ssoRedirect},"Change Password"))))))),o("slot",{name:"promotion"}),this.myAccData&&this.myAccData.urls.logout&&o("div",{class:"login-btn logout-btn"},o("a",{href:this.myAccData.urls.logout+this.ssoRedirect},"Logout"))))),o("nano-sticker",{"auto-resize":"false","break-point-max":"800",quietMode:{h:600,w:800}},o("div",{class:"bars",ref:function(e){return t.barsDiv=e}},o("nav",{class:"main-bar","aria-label":"Main site navigation",tabindex:"-1",ref:function(e){return t.mainBarDiv=e}},(this.hasPromotionSlot||!!this.overflowSlotLen||(this.myAccData||!!this.iconSlotLen)&&this.threshold<this.THRESHOLDLIMIT-v.icon||this.isLoggedIn&&(!!this.loggedInNavItms.length||this.hasLoggedinSlot)&&this.threshold<this.THRESHOLDLIMIT-v.login||!!this.mainSlotLen&&this.threshold<this.THRESHOLDLIMIT-v.main||(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold<this.THRESHOLDLIMIT-v.about||this.hasSiteSlot||!!this.siteNavItms.length)&&o("button",{class:"menu-btn icon-btn",onMouseDown:this.menuOpen,onKeyDown:this.onMenuBtnKeyDown,"aria-expanded":this.modalOpen?"true":"false","aria-controls":"global-nav-menu",ref:function(e){return t.menuBtn=e}},o("nano-icon",{name:"light/bars","aria-label":"open menu"})),this.showLogo&&o("a",{href:this.logoUrl,class:"logo-link"},o("img",{src:r("./assets/ont-logo.svg"),alt:"Oxford Nanopore Technologies Logo",class:"logo"})),!this.showLogo&&o("div",{class:"logo-link"},o("slot",{name:"logo"})),o("div",{class:"nav-links nav-links--main"},o("slot",{name:"main"})),this.threshold>=this.THRESHOLDLIMIT-v.search&&[this.showSearch&&!!this.internalSearchIndeces.length&&o("div",{class:"search-widget",role:"combobox","aria-owns":"autocomplete-results","aria-expanded":this.showAutocomplete&&this.autocompleteResults?"true":"false"},a),(!this.showSearch||!this.myAccData)&&!!this.searchSlotLen&&o("slot",{name:"search"})],(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold>=this.THRESHOLDLIMIT-v.about&&o("nav",{class:"nav-links nav-links--sub","aria-label":"About the company. Links"},o("slot",{name:"about"}),this.aboutNavItms.map((function(e){return o("nano-nav-item",{class:"nano-global-nav nano-global-nav-bar"},o("a",{href:e.address,target:e.target},e.title))}))),this.threshold<this.THRESHOLDLIMIT-v.search&&(this.showSearch&&!!this.internalSearchIndeces.length||!!this.searchSlotLen)&&o("button",{class:"icon-btn","aria-controls":"global-nav-search-bar","aria-expanded":this.searchBarShown?"true":"false",onMouseDown:this.onSearchBtnClick,onKeyDown:this.onSearchBtnKeyDown},o("nano-icon",{name:"light/search"})),this.threshold>=this.THRESHOLDLIMIT-v.icon&&[!!this.iconSlotLen&&o("slot",{name:"icon"}),this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("icons"))&&[this.msgUrl&&o("a",{href:this.msgUrl,class:"icon-btn"},o("nano-icon",{name:"light/bell"}),this.msgCount>0&&o("span",{class:"gn-menu_actions-counter"},this.msgCount)),this.cartUrl&&o("a",{href:this.cartUrl,class:"icon-btn"},o("nano-icon",{name:"light/shopping-cart"}),this.cartCount>0&&o("span",{class:"gn-menu_actions-counter"},this.cartCount))]],this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("loggedin"))&&this.threshold>=this.THRESHOLDLIMIT-v.login&&[this.myAccData.urls.login&&o("a",{href:this.myAccData.urls.login+this.ssoRedirect,class:"login-btn"},"Login / Register"),this.myAccountUser&&o("div",{class:"user-links"},o("button",{class:{"icon-btn":true,"user-links-btn":true,open:this.userMenuOpen},onMouseDown:this.onUserBtnClick,onKeyDown:this.onUserBtnKeyDown}," ",this.myAccountUser.name,o("nano-icon",{name:"solid/caret-down"})),o("div",{class:"user-links-panel",tabindex:"-1",ref:function(e){return t.userLinkPanel=e}},o("div",{class:"user-links-panel-content"},this.loggedInNavItms.map((function(e){return o("a",{href:e.address,target:e.target},e.title)}))),o("div",{class:"user-links-panel-foot"},o("a",{href:this.myAccData.urls.forgot_password+this.ssoRedirect},"Change Password"),o("a",{href:this.myAccData.urls.logout+this.ssoRedirect},"Logout"))))],o("span",{class:"measure-ele"})),this.threshold<this.THRESHOLDLIMIT-v.search&&o("div",{id:"global-nav-search-bar",class:{"search-bar":true,show:this.searchBarShown},"aria-expanded":this.searchBarShown?"true":"false",role:"region",tabindex:"-1",ref:function(e){return t.searchBarEl=e}},o("div",{class:"search-widget"},this.showSearch&&!!this.internalSearchIndeces.length&&o("div",null,a),(!this.showSearch||!this.myAccData)&&!!this.searchSlotLen&&o("slot",{name:"search"}))))),(this.threshold<this.THRESHOLDLIMIT-3||this.menuFullScreen)&&o("div",{class:{mask:true,open:this.modalOpen},onClick:this.menuClose,onTouchEnd:this.menuClose})),o("div",{class:"site-content",ref:function(e){return t.siteContent=e}},o("slot",null)))};e.prototype.domainFor=function(e){if(!this.myAccData)return"";var t=this.myAccData.domains.find((function(t){return t.origin===e}));return t?t.domain:""};e.prototype.processSearchResults=function(e){var t=this;var n=e;var a=e;if(n.results){n.results.forEach((function(e,a){n.results[a]=t.processSearchResults(e)}));return n}else{a.hits.map((function(e){if(e.url&&!e.url.match(/^http/))e.url=location.protocol+"//"+t.domainFor(e.origin)+e.url}));return a}};e.prototype.processMyAccData=function(){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=__spreadArray(__spreadArray([],this.myAccData.search.indeces,true),this.searchIndeces,true);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};e.prototype.processMyAccLinks=function(){var e=this;if(!this.myAccData.links||!this.myAccData.links.length)return;this.myAccData.links.forEach((function(t){switch(t.area){case"left-side-logged-in":case"left-side-logged-out":if(e.activeMyAccountSections&&!e.activeMyAccountSections.includes("sites"))break;if(e.isLoggedIn&&t.area==="left-side-logged-in")e.siteNavItms.push(t);else if(!e.isLoggedIn&&t.area==="left-side-logged-out")e.siteNavItms.push(t);break;case"right-side-logged-in":case"right-side-logged-out":if(e.activeMyAccountSections&&!e.activeMyAccountSections.includes("about"))break;if(e.isLoggedIn&&t.area==="right-side-logged-in")e.aboutNavItms.push(t);else if(!e.isLoggedIn&&t.area==="right-side-logged-out")e.aboutNavItms.push(t);break;case"profile-panel-list":if(e.activeMyAccountSections&&!e.activeMyAccountSections.includes("loggedin"))break;e.loggedInNavItms.push(t);break}}))};Object.defineProperty(e,"assetsDirs",{get:function(){return["assets"]},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"el",{get:function(){return c(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){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"]}},enumerable:false,configurable:true});return e}());x.style=f}}}));
|
5
|
+
//# sourceMappingURL=p-495b3195.system.entry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["src/utils/fetch.ts","src/components/global-nav/global-nav.scss?tag=nano-global-nav&encapsulation=shadow","src/components/global-nav/global-nav.tsx"],"names":["clientFetch","url","_a","body","customConfig","__rest","headers","Accept","Access-Control-Allow-Origin","Content-Type","Cache","config","Object","assign","method","credentials","keepalive","mode","JSON","stringify","id","setTimeout","window","AbortController","controller_1","_b","timeout","abort","signal","fetch","response","_c","sent","clearTimeout","ok","json","text","errorMessage","Error","globalNavCss","THRESHOLDBREAKS","search","about","main","login","icon","GlobalNav","exports","class_1","hostRef","_this","this","currSize","thresholdsGoingUp","THRESHOLDLIMIT","keys","length","autocompleteEles","currAIndex","isLoggedIn","myAccData","aboutNavItms","siteNavItms","loggedInNavItms","hasLoggedinSlot","hasSiteSlot","hasPromotionSlot","aboutSlotLen","iconSlotLen","mainSlotLen","overflowSlotLen","searchSlotLen","internalSearchIndeces","thresholdReady","remoteDataReady","ready","isResizing","threshold","modalOpen","modalIsOpen","searchBarShown","scrollingUp","searchLoading","showAutocomplete","secondaryMenuOpen","userMenuOpen","menuFullScreen","searchValInternal","env","ssoRedirect","encodeURIComponent","location","href","getMyAccountData","activeMyAccountSections","showSearch","showLogo","logoUrl","protocol","host","searchIndeces","myAccountUser","searchValue","searchIndex","cartCount","msgCount","cartUrl","msgUrl","setResizingState","state","debounceSetResizingState","debounce","onMenuBtnKeyDown","ev","key","menuClose","menuOpen","onMenuBtnClick","e","preventDefault","menuDiv","style","display","menuWrapDiv","addEventListener","focus","preventScroll","scrollHeight","innerHeight","document","overflow","overflowX","onMenuHidden","removeEventListener","activeElement","menuBtn","mainBarDiv","force","relatedTarget","closestElement","closest","subMenuClose","target","open","onUserBtnClick","onUserBtnKeyDown","onUserMenuBlur","onSearchBtnClick","searchbarShow","searchbarHide","onSearchBtnKeyDown","onSearchBarShown","searchBarEl","searchInput","setFocus","onSearchBarHidden","height","onSearchInput","value","isSearchValSet","detail","type","onSearchChange","__awaiter","autocompleteResults","nanoSearchReset","emit","currentIndex","currentSelectedIndex","processSearchResults","alogliaIndex","attributesToSnippet","hitsPerPage","filters","Math","floor","Date","now","apply","_e","console","error","e_1","scopeSearch","_d","onSearchSubmit","showAutocompleteResults","algoliaSearchResults","queries","map","index","indexName","query","facets","algoliaClient","multipleQueries","nanoSearchError","e_2","results","result","i","name","selected","domain","domains","allGroup","nanoSearchResult","client","apiKey","searchApiKey","appId","searchAppId","onSearchIndexChange","indexStr","selectedIndex","find","switchIndexSubmit","onAutocompleteBlur","hits","onAutocompleteInteract","testIndex","el","shadowRoot","found_1","ele","setActiveElement","found","click","prototype","submitSearch","getMyAccData","ssoDataUrl","module","import","user","processMyAccLinks","processMyAccData","e_3","foundIndex","changeInternalSearchVal","initAlgoliaClient","algoliasearch","addAlgoliaIndeces","addIndeces","__spreadArray","forEach","initIndex","thresholdChange","newThreshold","oldThreshold","ratioChange","intersectRatio","siteContent","minHeight","concat","barsDiv","clientHeight","menuItems_1","barItems_1","readTask","Array","from","querySelectorAll","push","writeTask","item","classList","add","remove","assessReady","remoteReady","attachIO","isReady","nanoIsReady","setupAutocompleteBlur","slotChange","thresholdClasses","classes","onWindowResize","innerWidth","secondaryOpen","secondaryMenu","stopPropagation","menuContentDiv","secondaryClose","handleUserMenu","displayTransition","userLinkPanel","querySelector","autocompleteSnippet","hit","lookFor","_snippetResult","prop","matchLevel","title","substring","resetHitFocus","autocompleteEle","setAttribute","assessSlottedContent","io","root","IntersectionObserver","data","slice","intersectionRatio","observe","componentDidLoad","debounceResize","bind","componentWillLoad","ComponentStore","init","MutationObserver","mo","childList","subtree","disconnectedCallback","disconnect","undefined","connectedCallback","autocompleteList","content","currentScopeHits","scopeChangeSuggestions","scopeSuggestReducer","total","currentSuggestReducer","reduce","scopeSuggestions_1","h","class","role","ref","a","tabindex","innerHTML","button","onClick","onMouseDown","aria-expanded","hidden","onKeyDown","searchWidget","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","render","isRtl","ownerDocument","dir","Host","join","resizing","global-nav","scrolling-down","gn-menu","has-promotion","menu-full-screen","secondary-open","div","includes","urls","link","address","forgot_password","logout","auto-resize","break-point-max","quietMode","w","btn","src","getAssetPath","alt","aria-owns","icon-btn","user-links-btn","search-bar","show","onTouchEnd","domainFor","origin","dm","multiResults","singleResult","match","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\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --padding: padding used for many elements. Defaults to '12px 0'.\n * @prop --padding-top: top padding used for many elements. Defaults to --padding.\n * @prop --padding-bottom: bottom padding used for many elements. Defaults to --padding.\n * @prop --padding-end: end (left on l2r / right on r2l) padding used for many elements. Defaulst to --padding.\n * @prop --padding-start: start (right on l2r / left on r2l) padding used for many elements. Defaults to --padding.\n * @prop --bar-background: Background of the bar element. Defaults to rgb(17, 85, 113).\n * @prop --bar-text-color: Text color within the bar element. Defaults to white.\n * @prop --bar-color-shade: Color variant used within the bar element. Defaults to rgb(40, 110, 133).\n * @prop --bar-color-tint: Color variant used within the bar element. Defaults to rgb(88, 140, 161).\n * @prop --bar-color-focus: Focus color of the form element within search. Defaults to #90c6e7;\n * @prop --bar-color-focus: Focus color of the form element within search. Defaults to #90c6e7;\n * @prop --menu-background: Background 'burger', menu element. Defaults to #001a21;\n * @prop --menu-text-color: Text color 'burger', menu element. Defaults to white;\n */\n --padding: 12px;\n --padding-top: var(--padding);\n --padding-end: var(--padding);\n --padding-bottom: var(--padding);\n --padding-start: var(--padding);\n --bar-background: #005c75;\n --bar-text-color: white;\n --bar-color-shade: rgb(19, 89, 111);\n --bar-color-tint: rgb(19, 89, 111);\n --bar-color-focus: #90c6e7;\n --menu-background: #001a21;\n --menu-text-color: white;\n --menu-dropdown-bg: #196c82;\n --menu-dropdown-color: white;\n\n display: block;\n position: relative;\n line-height: 1.5;\n height: 100%;\n\n * {\n box-sizing: inherit;\n }\n}\n\n// Common\n.global-nav {\n @include text-inherit();\n\n font-size: 0.88em;\n z-index: #{$layer-index-menubar};\n\n button {\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n }\n\n .icon-btn {\n position: relative;\n background: none;\n color: inherit;\n border: none;\n align-self: normal;\n padding: 9px 7px;\n cursor: pointer;\n display: flex;\n align-items: center;\n\n nano-icon {\n width: 18px;\n height: 18px;\n }\n }\n\n ::slotted(nano-nav-item[slot='icon']) {\n --padding-top: 9px;\n --padding-bottom: 9px;\n --padding-start: 7px;\n --padding-end: 7px;\n --display: flex;\n\n font-size: 18px;\n }\n\n a {\n color: inherit;\n text-decoration: none;\n white-space: nowrap;\n }\n\n .nav-links {\n &_title {\n margin: 8px 0 3px;\n }\n\n ul {\n margin: 0;\n padding: 0;\n }\n\n li {\n list-style: none;\n }\n }\n\n .login-btn {\n display: flex;\n align-items: center;\n font-size: 0.94em;\n }\n\n .menu-btn {\n padding: 9px var(--padding) 9px var(--padding);\n }\n}\n\n// Popup / Slideout Menu\n.gn-menu {\n position: fixed;\n inset-block-start: 0;\n inset-inline-start: 0;\n z-index: -1;\n display: none;\n transition: z-index 0.01s ease 0.2s;\n height: 100vh;\n width: 100vw;\n overflow-y: auto;\n\n :host(.threshold-4) & {\n position: absolute;\n width: calc(100vw - 20px);\n }\n\n &.menu-full-screen {\n width: 100vw !important;\n }\n\n // &.secondary-open {\n // overflow-y: hidden;\n // }\n\n &_wrap {\n max-width: 92vw;\n width: 335px;\n background: var(--menu-background);\n color: var(--menu-text-color);\n padding: var(--padding) 0;\n box-shadow: 0 0 36px 0 rgba(0, 0, 0, 0.8);\n position: relative;\n pointer-events: all;\n margin-block-end: 36px;\n opacity: 0;\n outline: none;\n transition: transform 0.2s ease, opacity 0.2s ease;\n\n &.has-promotion {\n padding: var(--padding) 0 0;\n }\n }\n\n &.open {\n z-index: #{$layer-index-dropdown};\n transition: z-index 0.01s ease;\n\n .gn-menu_wrap {\n opacity: 1;\n transform: translate3d(0, 0, 0) !important;\n transition: transform 0.2s ease 0.01s, opacity 0.2s ease 0.01s;\n }\n }\n\n &_actions {\n padding-inline-end: calc(var(--padding) / 2);\n display: flex;\n justify-content: space-between;\n\n &-counter {\n background: #d0021b;\n color: #fff;\n position: absolute;\n inset-block-end: 4px;\n inset-inline: auto 0;\n font-size: 9px;\n height: 14px;\n line-height: 14px;\n width: auto;\n min-width: 14px;\n border-radius: 50%;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n text-align: center;\n text-indent: 0;\n }\n }\n\n .content {\n &-wrap {\n position: relative;\n overflow: hidden;\n transition: 0.2s ease min-height;\n min-height: 190px;\n }\n\n &--sub {\n padding: var(--padding) 0 var(--padding) 7px;\n }\n }\n\n .menu-btn {\n margin-inline-end: auto;\n }\n\n .nav-links {\n display: flex;\n flex-wrap: wrap;\n\n ::slotted(nano-nav-item),\n nano-nav-item {\n --icon-size: 14px;\n --display: inline-block;\n --secondary-bg-color: #001a21;\n --padding-top: 10px;\n --padding-bottom: 10px;\n --padding-end: calc(var(--padding) * 2);\n --padding-start: calc(var(--padding) + 3px);\n --color: white;\n --color-hover: #{map.get($colors, lightblue)};\n --bg-color-hover: transparent;\n --bg-color-focus: #002530;\n --focus-outline: none;\n\n font-size: 0.99em;\n width: 100%;\n // margin: 0 0;\n }\n\n .user-nav {\n --bg-color: #193037;\n --padding-top: 9px;\n --padding-bottom: 9px;\n\n font-weight: bold;\n margin: 5px 0 0;\n\n ::slotted(nano-nav-item),\n nano-nav-item {\n font-weight: 500;\n\n --bg-color: transparent;\n }\n }\n\n &_title {\n margin: 0 var(--padding) 4px;\n border-block-end: 1px solid #33484d;\n padding-block-end: 8px;\n font-size: 0.86em;\n text-transform: uppercase;\n color: map.get($colors, lightblue);\n letter-spacing: 1px;\n font-weight: 700;\n }\n\n &-wrap {\n margin: 18px 0;\n\n &:last-child {\n margin-block-end: 0;\n }\n }\n\n .back-btn {\n border-block-start: 1px solid #33484d;\n border-block-end: 1px solid #33484d;\n display: flex;\n align-items: center;\n padding: 10px 11px 10px 0;\n width: 100%;\n font-size: 12px;\n text-transform: uppercase;\n color: map.get($colors, lightblue);\n letter-spacing: 1px;\n font-weight: 700;\n\n nano-icon {\n margin-inline-end: 10px;\n font-size: 12px;\n color: white;\n }\n }\n\n &--sub {\n display: flex;\n flex-wrap: wrap;\n\n ::slotted(nano-nav-item),\n nano-nav-item {\n --border-bottom: none;\n --padding-end: var(--padding);\n --padding-start: var(--padding);\n --padding-top: 8px;\n --padding-bottom: 8px;\n\n margin: 0;\n width: 50%;\n line-height: 1.8;\n }\n }\n\n .content {\n padding: 8px var(--padding);\n }\n }\n\n .login-btn {\n padding-inline: 7px var(--padding);\n padding-block: 9px;\n\n nano-icon {\n margin-inline-start: 10px;\n }\n }\n\n .logout-btn {\n justify-content: flex-end;\n\n a {\n padding: 0 5px;\n }\n }\n}\n\n// Main Bar\n.sticker-trigger {\n background: var(--bar-background);\n width: 100%;\n z-index: calc(#{$layer-index-menubar} + 1);\n}\n\n.bars {\n color: var(--bar-text-color);\n z-index: #{$layer-index-menubar};\n position: relative;\n max-width: 100%;\n min-width: 100%;\n box-shadow: none;\n transition: 0.2s ease box-shadow;\n\n [stuck] & {\n box-shadow: 0 1px 25px 0 rgba(0, 0, 0, 0.15);\n }\n\n &::before {\n content: '';\n width: 100%;\n height: 100%;\n z-index: -1;\n background: var(--bar-background);\n position: absolute;\n }\n\n .search {\n &-widget {\n margin-inline-start: 11px;\n margin-inline-end: auto;\n position: relative;\n flex: 1 1 auto;\n max-width: 45vw;\n min-width: 269px;\n max-height: 36px;\n }\n\n &-inputs {\n display: flex;\n margin: 0;\n\n input[type='submit'] {\n display: none;\n }\n }\n\n &-autocomplete {\n position: absolute;\n inset-block-start: calc(100%);\n width: 100%;\n inset-inline-start: 0;\n background: white;\n border: 2px solid var(--bar-color-tint);\n border-radius: 0 0 5px 5px;\n color: map.get($colors, black);\n font-size: 0.85em;\n padding-block-start: calc(var(--padding) / 2);\n padding-inline-end: 0;\n padding-block-end: 1px;\n padding-inline-start: 0;\n z-index: 1;\n\n &-hit {\n padding-block-start: calc(var(--padding) / 4);\n padding-block-end: calc(var(--padding) / 4);\n padding-inline-start: var(--padding);\n padding-inline-end: var(--padding);\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n text-align: start;\n line-height: 1.5;\n cursor: pointer;\n\n &-scope {\n font-size: 0.76em;\n // text-indent: 10px;\n color: rgb(167, 176, 179);\n font-weight: 600;\n }\n\n &:hover,\n &:focus {\n background-color: map.get($colors, lightgrey);\n }\n\n .search__highlight,\n em {\n font-weight: bold;\n font-style: normal;\n }\n\n &--no-result {\n &:hover,\n &:focus {\n background: none !important;\n }\n }\n }\n\n &-foot {\n margin: 7px 0 0;\n }\n\n &-submit {\n background: none;\n border: none;\n align-self: normal;\n padding: 9px var(--padding);\n cursor: pointer;\n display: flex;\n align-items: center;\n color: map.get($colors, blue);\n justify-content: flex-end;\n width: 100%;\n text-decoration: underline;\n border-block-start: 1px solid rgb(232, 234, 234);\n\n &:hover,\n &:focus {\n background-color: map.get($colors, lightgrey);\n }\n }\n }\n }\n\n .search-input {\n --input-border-style: solid 1px rgb(85, 140, 157);\n --input-border-style--focus: solid 1px var(--bar-color-focus, #90c6e7);\n --input-border-width: 1px;\n\n font-size: 0.9em;\n }\n\n nano-select.search-input {\n --input-bg-color: var(--bar-color-tint, rgb(88, 140, 161));\n --input-text-color: inherit;\n --input-border-radius: 5px 0 0 5px;\n\n flex: 0 1 auto;\n width: auto;\n display: flex;\n align-items: center;\n flex-direction: column;\n position: relative;\n inset-inline-start: 1px;\n\n @include rtl-host() {\n --input-border-radius: 0 5px 5px 0;\n }\n\n :host(:not(.ready)) & {\n overflow: hidden;\n max-height: 1em;\n }\n\n .down-arrow {\n font-size: 0.65em;\n }\n }\n\n nano-input.search-input {\n --input-text-color: inherit;\n --input-bg-color: var(--bar-color-shade, rgb(40, 110, 133));\n --clear-btn-color: #{map.get($colors, black)};\n --input-border-radius: 0 5px 5px 0;\n --placeholder-color: white;\n\n width: 206px;\n display: flex;\n align-items: center;\n flex-direction: column;\n flex: 1;\n\n @include rtl-host() {\n --input-border-radius: 5px 0 0 5px;\n }\n\n :host(:not(.ready)) & {\n overflow: hidden;\n max-height: 1em;\n }\n\n &.has-value {\n --input-bg-color: #{map.get($colors, white)};\n --input-text-color: #{map.get($colors, black)};\n\n .search-icon {\n color: #{map.get($colors, black)};\n }\n }\n\n .search-icon {\n background: none;\n color: white;\n padding: 0 8px;\n display: none;\n\n &--show {\n display: flex;\n }\n\n &--loader {\n animation: spin 1s linear infinite;\n\n @keyframes spin {\n 100% {\n transform: rotate(360deg);\n }\n }\n }\n\n nano-icon {\n height: 1.4em;\n }\n }\n }\n}\n\n.main-bar {\n width: 100%;\n padding-inline: 0 var(--padding);\n padding-block: var(--padding);\n display: flex;\n align-items: center;\n justify-content: space-between;\n overflow-x: hidden;\n\n &:focus {\n outline: none;\n }\n\n :host(.ready) & {\n overflow-x: visible;\n }\n\n > *,\n ::slotted(*) {\n transition: opacity 0.2s ease;\n\n :host(:not(.ready)) & {\n opacity: 0 !important;\n }\n\n :host(.ready) & {\n opacity: 1;\n }\n\n :host(.resizing) & {\n opacity: 0 !important;\n }\n }\n\n > * {\n flex: 0 0 auto;\n\n ::slotted(nano-nav-item[slot='icon']) {\n margin-inline-start: 11px;\n }\n\n ::slotted(nano-nav-item),\n nano-nav-item {\n --color-hover: #{map.get($colors, lightgrey)};\n --secondary-bg-color: var(--menu-dropdown-bg);\n --secondary-color: var(--menu-dropdown-color);\n --bg-color-open: var(--bar-background);\n\n text-decoration: none !important;\n }\n }\n\n .icon-btn {\n margin-block-start: 0;\n margin-block-end: 0;\n margin-inline-start: 6px;\n\n :host(.threshold-2) & {\n margin-block-start: 0;\n margin-block-end: 0;\n margin-inline-start: 11px;\n }\n }\n\n .menu-btn.icon-btn {\n margin: 0 !important;\n border-inline-end: 1.5px solid var(--bar-color-shade);\n }\n\n .user-links {\n position: relative;\n\n .icon-btn {\n padding-inline-end: 0;\n font-size: 0.93em;\n font-weight: 500;\n\n nano-icon {\n margin-inline-start: 5px;\n width: 16px;\n height: 16px;\n transform-origin: center;\n transition: transform 0.2s ease, color 0.2s ease;\n }\n\n &.open {\n nano-icon {\n transform: rotate(180deg);\n color: map.get($colors, blue);\n }\n }\n }\n\n &-panel {\n display: none;\n position: absolute;\n border-radius: 4px 0 4px 4px;\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.4);\n background-color: #568c9d;\n opacity: 0;\n transform: translate3d(0, 24px, 0);\n transition: transform 0.2s ease, opacity 0.2s ease;\n inset-inline-end: 0;\n font-size: 0.85em;\n min-width: 250px;\n z-index: 1;\n\n &:focus {\n outline: none;\n }\n\n &.show {\n opacity: 1;\n transform: translate3d(0, 4px, 0);\n }\n\n &-content {\n padding: 0 18px;\n display: flex;\n flex-direction: column;\n\n a {\n padding: 11px 0;\n border-block-end: #669dac 1px solid;\n\n &:hover,\n &:focus {\n color: map.get($colors, darkgrey);\n }\n\n &:last-child {\n border-block-end: none;\n }\n }\n }\n\n &-foot {\n background-color: #aac5cd;\n border-radius: 0 0 4px 4px;\n padding: var(--padding);\n color: #455556;\n display: flex;\n align-items: center;\n font-weight: 500;\n justify-content: space-between;\n\n a:hover {\n text-decoration: underline;\n }\n }\n }\n }\n\n .logo {\n height: 34px;\n width: auto;\n min-width: 196px;\n\n :host(:not(.threshold-1)) & {\n height: 30px;\n }\n }\n\n .logo-link {\n margin-inline-end: auto;\n margin-inline-start: 0;\n padding-inline: 11px;\n display: flex;\n align-items: center;\n border: none;\n }\n\n .nav-links {\n font-size: 0.75rem;\n flex: 1 0 auto;\n display: flex;\n justify-content: space-around;\n\n ul {\n display: flex;\n justify-content: space-around;\n }\n\n ::slotted(nano-nav-item),\n nano-nav-item {\n --padding-top: 7px;\n --padding-bottom: 7px;\n --padding-end: 2px;\n --padding-start: 2px;\n --margin: 0 8px;\n }\n\n &--main {\n justify-content: flex-start;\n letter-spacing: 0.33px;\n font-weight: 600;\n font-stretch: expanded;\n font-size: 0.8125rem;\n\n ::slotted(nano-nav-item) {\n --color: #fff;\n --padding-end: 3px;\n --padding-start: 0;\n }\n }\n\n &--sub {\n --color: var(--color, #e2e2e2);\n\n opacity: 0.9 !important;\n margin-inline-start: 6px;\n justify-content: flex-end;\n }\n }\n\n .login-btn {\n display: inline-block;\n border-radius: 4px;\n background-color: #17bb75;\n color: #fff;\n padding: 3px 10px;\n position: relative;\n inset-inline-start: auto;\n inset-block-end: auto;\n margin-inline: 11px 0;\n }\n\n .measure-ele {\n min-width: 1px;\n display: block;\n margin: 0;\n padding: 0;\n }\n}\n\n.search-bar {\n height: 0;\n overflow: hidden;\n transition: 0.2s ease height;\n padding: 0 var(--padding);\n outline: none;\n max-width: 45em;\n margin-inline-start: auto;\n\n .search-widget {\n margin: 0;\n overflow: inherit;\n max-width: none;\n max-height: none;\n padding: 0 0 var(--padding);\n }\n\n .search-inputs {\n padding: 0 0;\n margin: 0 0;\n }\n\n .search-autocomplete {\n inset-block-start: calc(100% - (var(--padding) + 1px));\n }\n}\n\n.site-content {\n display: flex;\n transition: min-height 0.2s ease;\n min-height: calc(100% - 61px);\n position: relative;\n z-index: auto;\n align-items: stretch;\n}\n\n.mask {\n opacity: 0;\n background: rgba(0, 0, 0, 0.3);\n position: fixed;\n inset-inline: 0;\n inset-block-start: 0;\n height: 100vh;\n z-index: -1;\n transition:\n transform 0.2s ease,\n opacity 0.2s ease,\n visibility 0.01s ease 0.2s,\n z-index 0.01s ease 0.2s;\n visibility: hidden;\n\n &.open {\n opacity: 1;\n transition:\n z-index 0.01s ease,\n visibility 0.01s ease,\n transform 0.2s ease 0.01s,\n opacity 0.2s ease 0.01s;\n z-index: 3;\n visibility: visible;\n }\n}\n","import {\n Component,\n h,\n Host,\n Element,\n State,\n Watch,\n Event,\n EventEmitter,\n Prop,\n Listen,\n Build,\n getAssetPath,\n readTask,\n writeTask,\n Method,\n VNode,\n ComponentInterface,\n} from '@stencil/core';\nimport algoliasearch, { SearchClient as AlgoliaClient } from 'algoliasearch';\nimport { debounce, closestElement, displayTransition } from '../../utils';\nimport { clientFetch } from '../../utils/fetch';\nimport {\n InputChangeEventDetail,\n SelectChangeEventDetail,\n AlgoliaResults,\n SearchIndex,\n MyAccountLink,\n AloliaSearchResultDetail,\n AlgoliaMultiResult,\n MyAccountUser,\n NavItemEventDetail,\n AlgoliaResultHit,\n AlgoliaNetworkError,\n AlgoliaMultiResults,\n} from '../../interface';\nimport { ComponentStore } from '../../utils/store/component-store';\n\ninterface MyAccountData {\n user: MyAccountUser;\n cart: {\n count: number;\n url: string;\n };\n notifications: { count: number };\n hs: { lists?: Array<number> };\n registration: { next_url: string | null };\n links: null | MyAccountLink[];\n urls: {\n forgot_password: string | null;\n logout: string | null;\n login: string | null;\n messages: string | null;\n cart: string | null;\n };\n domains: [\n {\n origin: string;\n domain: string;\n }\n ];\n search: {\n app_id: string;\n api_key: string;\n indeces: [\n {\n index: string;\n name: string;\n domain: string;\n all_group?: boolean;\n filters?: [string];\n }\n ];\n };\n}\n\n// the 'breakpoints' that different segments of content go into or out-of the burger / overflow menu\nconst THRESHOLDBREAKS = {\n search: 0,\n about: 1,\n main: 2,\n login: 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: '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\n // search\n private searchBarEl: HTMLDivElement;\n private searchInput: HTMLNanoInputElement;\n private algoliaClient: AlgoliaClient;\n private currentIndex: SearchIndex;\n private autocompleteResults: AlgoliaResults | null;\n private autocompleteEles: Array<HTMLAnchorElement | HTMLButtonElement> = [];\n private currAIndex: number = -1;\n private algoliaSearchResults: AlgoliaMultiResults | null;\n private scopeSearch: AlgoliaMultiResults | null;\n\n // general\n private mainBarDiv: HTMLElement;\n private barsDiv: HTMLDivElement;\n private siteContent: HTMLDivElement;\n private userLinkPanel: HTMLDivElement;\n private isLoggedIn: boolean = false;\n\n private myAccData: MyAccountData = null;\n\n // myaccount links\n private aboutNavItms: MyAccountLink[] = [];\n private siteNavItms: MyAccountLink[] = [];\n private loggedInNavItms: MyAccountLink[] = [];\n\n // has slot tests\n private mo?: MutationObserver;\n @State() hasLoggedinSlot: boolean = false;\n @State() hasSiteSlot: boolean = false;\n @State() hasPromotionSlot: boolean = false;\n\n // slot item number tests\n @State() aboutSlotLen: number = 0;\n @State() iconSlotLen: number = 0;\n @State() mainSlotLen: number = 0;\n @State() overflowSlotLen: number = 0;\n @State() searchSlotLen: number = 0;\n\n @State() internalSearchIndeces: Array<SearchIndex> = [];\n @State() thresholdReady: boolean = false;\n @State() remoteDataReady: boolean = false;\n @State() ready: boolean = false;\n @State() isResizing: boolean = false;\n @State() intersectRatio: number;\n @State() threshold: number = 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: boolean = false;\n @State() userMenuOpen: boolean = false;\n @State() menuFullScreen: boolean = false;\n @State() searchValInternal: string = '';\n\n @Element() private el: HTMLNanoGlobalNavElement;\n\n /**\n * Connect to local, dev, test or prod MyAccount\n * environments to retrieve global nav / sso data.\n * 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: {\n id: string | null;\n name: string | null;\n first_name: string | null;\n last_name: string | null;\n email: string | null;\n company: string | null;\n lifecycle_stage: string | null;\n indirect_customer: boolean;\n } = null;\n\n /**\n * An Algolia App ID key. Will be automatically populated from MyAccount\n */\n @Prop({ mutable: true }) searchAppId: string;\n\n /**\n * An Algolia API Key. Will be automatically populated from MyAccount\n */\n @Prop({ mutable: true }) searchApiKey: string;\n\n /**\n * A search value to passed to Algolia to programatically get or to preload search results\n */\n @Prop({ mutable: true }) searchValue: string = '';\n\n /**\n * Algolia search index to programatically set or to set an initial index\n */\n @Prop({ mutable: true }) searchIndex: string = 'all_prod_en';\n\n /**\n * MyAccount store cart count.\n */\n @Prop({ mutable: true }) cartCount: number = 0;\n\n /**\n * MyAccount undread message count.\n */\n @Prop({ mutable: true }) msgCount: number = 0;\n\n /**\n * Url to the Nanopore store cart. Will default to the url supplied by MyAccount\n */\n @Prop({ mutable: true }) cartUrl: string = null;\n\n /**\n * Url to the Nanopore message center. Will default to the url supplied by MyAccount\n */\n @Prop({ mutable: true }) msgUrl: string = null;\n\n /**\n * Emitted when the global nav is ready.\n */\n @Event() nanoIsReady!: EventEmitter<void>;\n\n /**\n * Emitted when search results are successfully returned from Algolia.\n */\n @Event() nanoSearchResult!: EventEmitter<AloliaSearchResultDetail>;\n\n /**\n * Emitted when algolia returns an error.\n */\n @Event() nanoSearchError!: EventEmitter<AlgoliaNetworkError>;\n\n /**\n * Emitted when search field is cleared.\n */\n @Event() nanoSearchReset!: EventEmitter<AloliaSearchResultDetail>;\n\n /**\n * Submit the search form (a search value must be present)\n */\n @Method()\n async submitSearch() {\n this.onSearchSubmit();\n this.showAutocomplete = false;\n return;\n }\n\n @Watch('env')\n @Watch('ssoDataUrl')\n async getMyAccData() {\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) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n this.secondaryMenuOpen = true;\n this.menuContentDiv.style.minHeight =\n (ev.detail as NavItemEventDetail).secondaryMenu.scrollHeight + 'px';\n }\n\n @Listen('nanoClose')\n secondaryClose(ev: CustomEvent) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n this.secondaryMenuOpen = false;\n this.menuContentDiv.style.minHeight = '';\n }\n\n private onMenuBtnKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.modalOpen ? this.menuClose(ev, true) : this.menuOpen();\n break;\n }\n };\n\n private onMenuBtnClick = (ev: MouseEvent) => {\n this.menuClose(ev, true);\n };\n\n private menuOpen = (e?: MouseEvent) => {\n if (e) e.preventDefault();\n\n this.menuDiv.style.display = 'block';\n // need to open menu in stages\n // wait for re-flow after changing display\n // wait for repaint after animate, then focus\n\n this.menuDiv.clientWidth; // force reflow\n\n this.modalOpen = true;\n this.modalIsOpen = true;\n this.menuWrapDiv.addEventListener('focusout', this.menuClose);\n\n this.menuDiv.clientWidth; // force reflow\n\n this.menuWrapDiv.focus({ preventScroll: true });\n if (\n this.threshold < 2 ||\n this.menuWrapDiv.scrollHeight > window.innerHeight\n ) {\n document.body.style.overflow = 'hidden';\n this.menuFullScreen = true;\n } else document.body.style.overflowX = 'hidden';\n };\n\n private onMenuHidden = () => {\n this.menuDiv.removeEventListener('transitionend', this.onMenuHidden);\n this.menuWrapDiv.removeEventListener('focusout', this.menuClose);\n\n document.body.style.overflow = '';\n this.menuDiv.style.display = 'none';\n this.modalIsOpen = false;\n this.menuFullScreen = false;\n\n setTimeout(() => {\n if (document.activeElement === document.body && this.menuBtn)\n this.mainBarDiv.focus({ preventScroll: true });\n }, 50);\n };\n\n private menuClose = (\n ev?: FocusEvent | MouseEvent | KeyboardEvent | TouchEvent,\n force: boolean = false\n ) => {\n if (!force) {\n 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 this.searchBarEl.style.height =\n this.searchBarEl.querySelector('.search-widget').scrollHeight + 'px';\n }, 50);\n }\n\n private onSearchBarShown = () => {\n this.searchBarEl.removeEventListener(\n 'transitionend',\n this.onSearchBarShown\n );\n if (this.searchInput) this.searchInput.setFocus();\n this.searchBarEl.style.overflow = 'visible';\n };\n\n private searchbarHide = (ev?: FocusEvent) => {\n if (\n ev &&\n ev.relatedTarget &&\n (ev.relatedTarget as HTMLElement).closest('#global-nav-search-bar')\n )\n return;\n this.showAutocomplete = false;\n if (this.searchValInternal.length && ev) return;\n\n this.searchBarEl.addEventListener('transitionend', this.onSearchBarHidden);\n this.searchBarEl.style.overflow = 'hidden';\n this.searchBarEl.style.height = '0px';\n };\n\n private onSearchBarHidden = () => {\n this.searchBarEl.removeEventListener(\n 'transitionend',\n this.onSearchBarHidden\n );\n this.searchBarEl.style.display = 'none';\n this.searchBarShown = false;\n };\n\n // Algolia search\n\n private autocompleteSnippet(hit: AlgoliaResultHit) {\n 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=\"solid/caret-down\"\n class=\"down-arrow\"\n slot=\"down-arrow\"\n ></nano-icon>\n </nano-select>\n <nano-input\n class=\"search-input\"\n label=\"What would you like to search for?\"\n aria-label=\"What would you like to search for?\"\n hideLabel={true}\n showInlineError={false}\n clear-input\n placeholder=\"Search...\"\n type=\"text\"\n ref={(input) => (this.searchInput = input)}\n onNanoChange={this.onSearchChange}\n onNanoInput={this.onSearchInput}\n 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 >\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\">\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.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.about) ||\n this.hasSiteSlot ||\n !!this.siteNavItms.length) && (\n <div>\n {(!!this.aboutSlotLen || !!this.aboutNavItms.length) &&\n this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.about && [\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 && (\n <slot name=\"about\" />\n )}\n {!!this.aboutNavItms.length && (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n Company\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-right\"\n ></nano-icon>\n <div slot=\"secondary\">\n <div class=\"content\">\n <button\n class=\"back-btn\"\n onClick={this.subMenuClose}\n >\n <nano-icon\n slot=\"icon-end\"\n name=\"solid/chevron-left\"\n aria-label=\"go back\"\n ></nano-icon>\n Company\n </button>\n <slot name=\"about\" />\n <div class=\"content--sub\">\n {this.aboutNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={link.address}\n target={link.target}\n >\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </div>\n </div>\n </div>\n </nano-nav-item>\n )}\n </nav>\n ),\n ]}\n\n {/* 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\">Sites</h4>\n <nav\n class=\"nav-links nav-links--sub\"\n aria-label=\"Different company site links\"\n >\n <slot name=\"site\" />\n {this.siteNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-menu\">\n <a\n href={link.address}\n target={link.target}\n >\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </nav>\n </div>\n ),\n ((this.threshold < 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 <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 >\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 {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 {(!!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 >\n <slot name=\"about\" />\n {this.aboutNavItms.map((link) => {\n return (\n <nano-nav-item class=\"nano-global-nav nano-global-nav-bar\">\n <a href={link.address} target={link.target}>\n {link.title}\n </a>\n </nano-nav-item>\n );\n })}\n </nav>\n )}\n\n {this.threshold <\n this.THRESHOLDLIMIT - THRESHOLDBREAKS.search &&\n ((this.showSearch && !!this.internalSearchIndeces.length) ||\n !!this.searchSlotLen) && (\n <button\n class=\"icon-btn\"\n aria-controls=\"global-nav-search-bar\"\n aria-expanded={this.searchBarShown ? 'true' : 'false'}\n onMouseDown={this.onSearchBtnClick}\n onKeyDown={this.onSearchBtnKeyDown}\n >\n <nano-icon name=\"light/search\"></nano-icon>\n </button>\n )}\n\n {this.threshold >=\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 &&\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 <div class=\"user-links-panel-content\">\n {this.loggedInNavItms.map((link) => {\n return (\n <a href={link.address} target={link.target}>\n {link.title}\n </a>\n );\n })}\n </div>\n <div class=\"user-links-panel-foot\">\n <a\n href={\n this.myAccData.urls.forgot_password +\n this.ssoRedirect\n }\n >\n Change Password\n </a>\n <a\n href={\n this.myAccData.urls.logout + this.ssoRedirect\n }\n >\n Logout\n </a>\n </div>\n </div>\n </div>\n ),\n ]}\n <span class=\"measure-ele\"></span>\n </nav>\n\n {this.threshold <\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 {/* 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"]}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import{k as t,j as i,r as s,c as e,h,e as n,g as r}from"./p-47982da0.js";const a=(t,i,s)=>{const e=t.get(i);if(!e){t.set(i,[s])}else if(!e.includes(s)){e.push(s)}};const o=(t,i)=>{let s;return(...e)=>{if(s){clearTimeout(s)}s=setTimeout((()=>{s=0;t(...e)}),i)}};const u=t=>!("isConnected"in t)||t.isConnected;const l=o((t=>{for(let i of t.keys()){t.set(i,t.get(i).filter(u))}}),2e3);const c=()=>{if(typeof t!=="function"){return{}}const s=new Map;return{dispose:()=>s.clear(),get:i=>{const e=t();if(e){a(s,i,e)}},set:t=>{const e=s.get(t);if(e){s.set(t,e.filter(i))}l(s)},reset:()=>{s.forEach((t=>t.forEach(i)));l(s)}}};const f=(t,i=((t,i)=>t!==i))=>{let s=new Map(Object.entries(t!==null&&t!==void 0?t:{}));const e={dispose:[],get:[],set:[],reset:[]};const h=()=>{s=new Map(Object.entries(t!==null&&t!==void 0?t:{}));e.reset.forEach((t=>t()))};const n=()=>{e.dispose.forEach((t=>t()));h()};const r=t=>{e.get.forEach((i=>i(t)));return s.get(t)};const a=(t,h)=>{const n=s.get(t);if(i(h,n,t)){s.set(t,h);e.set.forEach((i=>i(t,h,n)))}};const o=typeof Proxy==="undefined"?{}:new Proxy(t,{get(t,i){return r(i)},ownKeys(t){return Array.from(s.keys())},getOwnPropertyDescriptor(){return{enumerable:true,configurable:true}},has(t,i){return s.has(i)},set(t,i,s){a(i,s);return true}});const u=(t,i)=>{e[t].push(i);return()=>{d(e[t],i)}};const l=(i,s)=>{const e=u("set",((t,e)=>{if(t===i){s(e)}}));const h=u("reset",(()=>s(t[i])));return()=>{e();h()}};const c=(...t)=>{const i=t.reduce(((t,i)=>{if(i.set){t.push(u("set",i.set))}if(i.get){t.push(u("get",i.get))}if(i.reset){t.push(u("reset",i.reset))}if(i.dispose){t.push(u("dispose",i.dispose))}return t}),[]);return()=>i.forEach((t=>t()))};const f=t=>{const i=s.get(t);e.set.forEach((s=>s(t,i,i)))};return{state:o,get:r,set:a,on:u,onChange:l,use:c,dispose:n,reset:h,forceUpdate:f}};const d=(t,i)=>{const s=t.indexOf(i);if(s>=0){t[s]=t[t.length-1];t.length--}};const y=(t,i)=>{const s=f(t,i);s.use(c());return s};const m=class{constructor(t){s(this,t);this.nanoPayloadChange=e(this,"nanoPayloadChange",7);this.nanoSubmit=e(this,"nanoSubmit",7);this.nanoInvalid=e(this,"nanoInvalid",7);this.submitted=false;this.allFields=[];this.nanoFieldSelector=`\n nano-input,\n nano-select,\n nano-file-upload,\n nano-date-input,\n nano-checkbox\n `;this.hasSetStore=false;this.internalValidate=false;this.validateOn="submitThenDirty";this.scrollToInvalid=true;this._dirty=false;this.extraFieldSelector="input, select, textarea";this.handleStoreChange=async(t,i)=>{const s=this.allFields.find((i=>this.getName(i)===t));if(s&&(s.tagName==="NANO-CHECKBOX"||["radio","checkbox"].includes(s.type))){this.storeToFields([s])}else if(s&&(s.tagName==="NANO-FILE-UPLOAD"&&!this.fileStateEqual(t,s)||s.tagName!=="NANO-FILE-UPLOAD"&&s.value!==i)){this.storeToFields([s])}if(this.validateOn==="dirty"&&this.dirty){this.internalValidate=true;await this.validateAllFields();this._valid=this.activeForm.checkValidity();this.internalValidate=false}this.nanoPayloadChange.emit(this._store.state)};this.handleFieldChange=t=>{if(!this.nanoFields.includes(t.target))return;this._dirty=true;this.fieldsToStore([t.target])};this.handlePlainFieldChange=t=>{if(!this.plainFields.includes(t.target))return;this.fieldsToStore([t.target])};this.handleFormInvalid=async t=>{if(!this.plainFields.includes(t.target)){t.preventDefault()}this._valid=false;if(this.internalValidate)return;if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.submitted=true;await this.validateAllFields();this.internalValidate=true;this._valid=this.activeForm.checkValidity();this.internalValidate=false;if(this.validateOn==="submit"){if(this._valid){this.submitForm();return}}this.scrollToFirstInvalid();this.nanoInvalid.emit()};this.handleSubmit=async t=>{t.preventDefault();if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.submitted=true;await this.validateAllFields();this.internalValidate=true;this._valid=this.activeForm.checkValidity();this.internalValidate=false;if(!this._valid){this.scrollToFirstInvalid();return}this.submitForm()}}userFormChange(){if(!!this.userForm)this.activeForm=this.userForm}get activeForm(){return this._activeForm}set activeForm(t){if(!t)return;if(this._activeForm){this._activeForm.removeEventListener("invalid",this.handleFormInvalid,true)}t.addEventListener("invalid",this.handleFormInvalid,true);this._activeForm=t}validateOnChange(){this.nanoFields.forEach((t=>{if(t.tagName==="NANO-CHECKBOX"){const i=t.closest("nano-checkbox-group");if(i)i.validateOn=this.validateOn}else{t.validateOn=this.validateOn}}))}get dirty(){return this._dirty}get valid(){return this._valid}get store(){return this._store}get payload(){return this._store.state}get showValidation(){return this.validateOn==="dirty"&&this.dirty||this.submitted}get validationState(){const t=[];this.allFields.forEach((async i=>{const s=t.find((t=>t.name===this.getName(i)));let e;let h;if(s){if(i.validationMessage){e=i;s.validityMessage=e.validationMessage.length?e.validationMessage:s.validityMessage;this.internalValidate=true;if(s.valid&&!e.checkValidity())s.valid=false;this.internalValidate=false}else if(i.validityMessage){h=i;s.validityMessage=h.validityMessage.length?h.validityMessage:h.validityMessage;if(s.valid&&h.invalid)s.valid=false}if(!s.fields.find((t=>t===i)))s.fields.push(i)}let n;let r;if(i.checkValidity){e=i;this.internalValidate=true;n=e.checkValidity();this.internalValidate=false;r=e.validationMessage}else{h=i;n=!h.invalid;r=h.validityMessage}t.push({fields:[i],name:this.getName(i),value:this._store.state[this.getName(i)],dirty:false,valid:n,validityMessage:r})}));return t}async setStore(t){this.hasSetStore=true;Object.entries(t).forEach((([t,i])=>{this.store.state[t]=i}))}async setCustomValidity(t){return await Promise.all(Object.entries(t).map((async([t,i])=>{const s=this.allFields.find((i=>this.getName(i)===t));if(!!s)await this.setFieldError(s,i)})))}async resetValidity(){return await Promise.all(this.allFields.map((async t=>await this.setFieldError(t,""))))}attachSlotObserver(){if(!!this.mo)return;const t=this.mo=new MutationObserver((t=>{const i=this.host.querySelector("form");if(i&&i!==this.activeForm)this.activeForm=i;this.setupFields()}));t.observe(this.host,{childList:true,attributes:true,attributeFilter:["name"],subtree:true})}getName(t){return t.name||t.getAttribute("name")}setupFields(){let t=Array.from(this.host.querySelectorAll(this.nanoFieldSelector));let i=Array.from(this.host.querySelectorAll(this.extraFieldSelector)).filter((t=>!t.closest(this.nanoFieldSelector)));t=t.filter((t=>!!this.getName(t)&&!!this.getName(t).length));i=i.filter((t=>!!this.getName(t)&&!!this.getName(t).length));if(![...t,...i].filter((t=>!this.allFields.includes(t))).length)return;this.nanoFields=t;this.plainFields=i;this.allFields=[...t,...i];this.storeToFields(this.allFields);this.validateOnChange();this.fieldsToStore(this.allFields,true);this.nanoPayloadChange.emit(this._store.state)}storeToFields(t){t.forEach((t=>{var i;const s=this.getName(t);if(!s.length||typeof this._store.state[s]==="undefined")return;if(t.tagName==="NANO-CHECKBOX"||["radio","checkbox"].includes(t.type)){const i=this.allFields.filter((i=>this.getName(t)===this.getName(i)));if(i[0].type==="radio"||i[0].type==="segment"||i[0].type==="segment-pill"){i.forEach((t=>{if(this._store.state[s]===t.value)t.checked=true;else t.checked=false}))}else if(Array.isArray(this._store.state[s])){i.forEach((t=>{if(this._store.state[s].includes(t.value))t.checked=true;else t.checked=false}))}else{i.forEach((t=>{if(this._store.state[s]===t.value)t.checked=true;else t.checked=false}))}return}if(t.tagName==="NANO-FILE-UPLOAD"){const e=t;if(!((i=e.files)===null||i===void 0?void 0:i.length))e.files=this._store.state[s];return}t.value=this._store.state[s]}))}fieldsToStore(t,i=false){t.forEach((t=>{const s=this.getName(t);if(!s.length)return;if(!!this._store.state[s]&&this.hasSetStore&&i){return}if(t.tagName==="NANO-CHECKBOX"||["radio","checkbox"].includes(t.type)){const i=t;if(i.type==="radio"||i.type==="segment"||i.type==="segment-pill"){if(i.checked)this._store.state[s]=i.value}else if(this.allFields.filter((t=>this.getName(t)===s&&(t.tagName==="NANO-CHECKBOX"||t.type==="checkbox"))).length>1){const t=Array.isArray(this._store.state[s])?this._store.state[s]:[];if(i.checked){if(!this._store.state[s].includes(i.value)){this._store.state[s]=[...t,i.value]}}else{this._store.state[s]=t.filter((t=>t!==i.value))}}else{if(i.checked)this._store.state[s]=i.value;else this._store.state[s]=""}return}if(t.tagName==="NANO-FILE-UPLOAD"){const i=t;if(!this.fileStateEqual(s,i))this._store.state[s]=i.files;return}this._store.state[s]=t.value}))}fileStateEqual(t,i){return JSON.stringify(this._store.state[t])===JSON.stringify(i.files)||this._store.state[t]==i.files}async validate(t,i){if(!this.validation)return;const s=this.validation(t,i,this._store.state);if(!s)return;await Promise.all(Object.entries(s).map((async([t,i])=>{const s=this.allFields.find((i=>this.getName(i)===t));let e=s;if(s.tagName==="NANO-CHECKBOX"){const t=s.closest("nano-checkbox-group");e=t||s}if((e.validityMessage||e.validationMessage)===i.msg&&i.valid){await this.setFieldError(e,"")}else if(!i.valid){await this.setFieldError(e,i.msg)}})))}async validateAllFields(){await Object.entries(this._store.state).reduce((async(t,[i,s])=>{await t;await this.validate(i,s)}),undefined)}async setFieldError(t,i){if(t["showError"]){await t.showError(i)}else if(t["setError"])await t.setError(i);else t.setCustomValidity(i)}scrollToFirstInvalid(){if(!this.scrollToInvalid)return;setTimeout((()=>{const t=this.validationState.find((t=>!t.valid));if(!t)return;t.fields[0].scrollIntoView({behavior:"smooth",block:"nearest"})}),200)}submitForm(){const t=this.nanoSubmit.emit();if(t.defaultPrevented)return;this.activeForm.submit()}connectedCallback(){this.userForm=this.host.querySelector("form");this._store=y({})}componentDidLoad(){requestAnimationFrame((()=>{this.setupFields();this.attachSlotObserver();this.host.addEventListener("nanoChange",this.handleFieldChange);this.host.addEventListener("input",this.handlePlainFieldChange);this.host.addEventListener("change",this.handlePlainFieldChange);this.host.addEventListener("submit",this.handleSubmit);this._store.on("set",this.handleStoreChange)}))}disconnectedCallback(){if(this.mo)this.mo.disconnect();this.host.removeEventListener("nanoChange",this.handleFieldChange);this.host.removeEventListener("input",this.handlePlainFieldChange);this.host.removeEventListener("change",this.handlePlainFieldChange);this.host.removeEventListener("submit",this.handleSubmit);this._store.reset();if(this.activeForm)this.activeForm.removeEventListener("invalid",this.handleFormInvalid,true)}render(){return h(n,null,this.userForm&&h("slot",null),!this.userForm&&h("form",{ref:t=>this.activeForm=t},h("slot",null)))}get host(){return r(this)}static get watchers(){return{userForm:["userFormChange"],validateOn:["validateOnChange"],extraFieldSelector:["attachSlotObserver"]}}};export{m as nano_field_validator};
|
5
|
+
//# sourceMappingURL=p-52481e3f.entry.js.map
|