@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.
Files changed (89) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/cjs/nano-datalist_3.cjs.entry.js +1 -1
  3. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  4. package/dist/cjs/nano-field-validator.cjs.entry.js +11 -2
  5. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
  6. package/dist/cjs/nano-global-nav.cjs.entry.js +1 -1
  7. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  8. package/dist/cjs/nano-input.cjs.entry.js +1 -1
  9. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nano-nav-item_2.cjs.entry.js +1 -1
  11. package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
  12. package/dist/collection/components/datalist/datalist.js +1 -1
  13. package/dist/collection/components/datalist/datalist.js.map +1 -1
  14. package/dist/collection/components/field-validator/field-validator.js +11 -2
  15. package/dist/collection/components/field-validator/field-validator.js.map +1 -1
  16. package/dist/collection/components/global-nav/global-nav.css +3 -2
  17. package/dist/collection/components/input/input.css +3 -3
  18. package/dist/collection/components/select/select.css +1 -0
  19. package/dist/components/datalist.js +1 -1
  20. package/dist/components/datalist.js.map +1 -1
  21. package/dist/components/input.js +1 -1
  22. package/dist/components/input.js.map +1 -1
  23. package/dist/components/nano-field-validator.js +11 -2
  24. package/dist/components/nano-field-validator.js.map +1 -1
  25. package/dist/components/nano-global-nav.js +1 -1
  26. package/dist/components/nano-global-nav.js.map +1 -1
  27. package/dist/components/select.js +1 -1
  28. package/dist/components/select.js.map +1 -1
  29. package/dist/custom-elements/index.js +15 -6
  30. package/dist/custom-elements/index.js.map +1 -1
  31. package/dist/esm/nano-datalist_3.entry.js +1 -1
  32. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  33. package/dist/esm/nano-field-validator.entry.js +11 -2
  34. package/dist/esm/nano-field-validator.entry.js.map +1 -1
  35. package/dist/esm/nano-global-nav.entry.js +1 -1
  36. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  37. package/dist/esm/nano-input.entry.js +1 -1
  38. package/dist/esm/nano-input.entry.js.map +1 -1
  39. package/dist/esm/nano-nav-item_2.entry.js +1 -1
  40. package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
  41. package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
  42. package/dist/esm-es5/nano-datalist_3.entry.js.map +1 -1
  43. package/dist/esm-es5/nano-field-validator.entry.js +1 -1
  44. package/dist/esm-es5/nano-field-validator.entry.js.map +1 -1
  45. package/dist/esm-es5/nano-global-nav.entry.js +1 -1
  46. package/dist/esm-es5/nano-global-nav.entry.js.map +1 -1
  47. package/dist/esm-es5/nano-input.entry.js +1 -1
  48. package/dist/esm-es5/nano-input.entry.js.map +1 -1
  49. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  50. package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
  51. package/dist/nano-components/nano-components.esm.js +1 -1
  52. package/dist/nano-components/p-1ef47604.entry.js +5 -0
  53. package/dist/nano-components/p-1ef47604.entry.js.map +1 -0
  54. package/dist/nano-components/{p-d187fa1e.entry.js → p-42a77642.entry.js} +2 -2
  55. package/dist/nano-components/{p-d187fa1e.entry.js.map → p-42a77642.entry.js.map} +1 -1
  56. package/dist/nano-components/p-491107e0.system.entry.js +5 -0
  57. package/dist/nano-components/p-491107e0.system.entry.js.map +1 -0
  58. package/dist/nano-components/p-495b3195.system.entry.js +5 -0
  59. package/dist/nano-components/p-495b3195.system.entry.js.map +1 -0
  60. package/dist/nano-components/p-52481e3f.entry.js +5 -0
  61. package/dist/nano-components/p-52481e3f.entry.js.map +1 -0
  62. package/dist/nano-components/{p-d74f4b9d.entry.js → p-65192b9b.entry.js} +2 -2
  63. package/dist/nano-components/p-65192b9b.entry.js.map +1 -0
  64. package/dist/nano-components/p-6b35560c.system.js +1 -1
  65. package/dist/nano-components/{p-ed44eb45.system.entry.js → p-80c6166e.system.entry.js} +2 -2
  66. package/dist/nano-components/{p-ed44eb45.system.entry.js.map → p-80c6166e.system.entry.js.map} +1 -1
  67. package/dist/nano-components/p-c8ff4172.entry.js +5 -0
  68. package/dist/nano-components/p-c8ff4172.entry.js.map +1 -0
  69. package/dist/nano-components/{p-5841bd7a.system.entry.js → p-db8aea7a.system.entry.js} +2 -2
  70. package/dist/nano-components/p-db8aea7a.system.entry.js.map +1 -0
  71. package/dist/nano-components/{p-1137929a.system.entry.js → p-de983c13.system.entry.js} +2 -2
  72. package/dist/nano-components/p-de983c13.system.entry.js.map +1 -0
  73. package/dist/types/components/field-validator/field-validator.d.ts +1 -0
  74. package/dist/types/interface.d.ts +1 -0
  75. package/docs-json.json +1 -1
  76. package/package.json +2 -2
  77. package/dist/nano-components/p-1137929a.system.entry.js.map +0 -1
  78. package/dist/nano-components/p-3d9623ad.entry.js +0 -5
  79. package/dist/nano-components/p-3d9623ad.entry.js.map +0 -1
  80. package/dist/nano-components/p-5841bd7a.system.entry.js.map +0 -1
  81. package/dist/nano-components/p-70a54c01.entry.js +0 -5
  82. package/dist/nano-components/p-70a54c01.entry.js.map +0 -1
  83. package/dist/nano-components/p-7f5e58b5.system.entry.js +0 -5
  84. package/dist/nano-components/p-7f5e58b5.system.entry.js.map +0 -1
  85. package/dist/nano-components/p-b0cd1cc3.system.entry.js +0 -5
  86. package/dist/nano-components/p-b0cd1cc3.system.entry.js.map +0 -1
  87. package/dist/nano-components/p-cbb54972.entry.js +0 -5
  88. package/dist/nano-components/p-cbb54972.entry.js.map +0 -1
  89. package/dist/nano-components/p-d74f4b9d.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["node_modules/@stencil/store/dist/index.mjs","src/components/field-validator/field-validator.tsx"],"names":["appendToMap","map","propName","value","items","get","set","includes","push","debounce","fn","ms","timeoutId","args","_i","arguments","length","clearTimeout","setTimeout","apply","isConnected","maybeElement","cleanupElements","_b","keys","key","filter","stencilSubscription","getRenderingRef","elmsToUpdate","Map","dispose","clear","elm","elements","forceUpdate","reset","forEach","elms","createObservableMap","defaultState","shouldUpdate","a","b","states","Object","entries","handlers","cb","oldValue","state","Proxy","_","ownKeys","Array","from","getOwnPropertyDescriptor","enumerable","configurable","has","on","eventName","callback","removeFromArray","onChange","unSet","newValue","unReset","use","subscriptions","unsubs","reduce","subscription","unsub","array","item","index","indexOf","createStore","FieldValidator","class_1","hostRef","_this","this","submitted","allFields","nanoFieldSelector","internalValidate","validateOn","scrollToInvalid","_dirty","extraFieldSelector","handleStoreChange","newVal","__awaiter","found","find","field","getName","tagName","type","storeToFields","fileStateEqual","dirty","validateAllFields","sent","_valid","activeForm","checkValidity","nanoPayloadChange","emit","_store","handleFieldChange","ev","nanoFields","target","fieldsToStore","handlePlainFieldChange","plainFields","handleFormInvalid","preventDefault","submitForm","scrollToFirstInvalid","nanoInvalid","handleSubmit","e","prototype","userFormChange","userForm","defineProperty","_activeForm","form","removeEventListener","addEventListener","validateOnChange","cbg","closest","validationState","v","name","validationMessage","pf","validityMessage","valid","nf","invalid","fields","f","setStore","val","store","setCustomValidity","validity","Promise","all","err","setFieldError","_c","resetValidity","__generator","attachSlotObserver","mo","MutationObserver","_entries","host","querySelector","setupFields","observe","childList","attributes","attributeFilter","subtree","getAttribute","querySelectorAll","__spreadArray","fieldName","cbs","checked","isArray","ff","_a","files","cb_1","currentArr","JSON","stringify","validate","validation","res","o","validityTarget","msg","memo","undefined","showError","setError","invalidField","scrollIntoView","behavior","block","nanoSubmit","defaultPrevented","submit","connectedCallback","componentDidLoad","requestAnimationFrame","disconnectedCallback","disconnect","render","h","Host","ref"],"mappings":"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","sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n let states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(defaultState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const unSet = on('set', (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n });\n const unReset = on('reset', () => cb(defaultState[propName]));\n return () => {\n unSet();\n unReset();\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import {\n Component,\n Prop,\n h,\n Host,\n Element,\n ComponentInterface,\n State,\n Watch,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport { createStore, ObservableMap } from '@stencil/store';\nimport {\n NanoFormEles,\n PlainFormEles,\n NanoFormEvent,\n ValidationState,\n ValidatorValueStore,\n PlainFormEvent,\n} from '../../interface';\n\n/**\n * A toolbox for `nano-...` form fields and form validation.\n * - Easy to add validation accross field dependencies - e.g. \"When Field1 contains '123' Field2 must contain '456'\"\n * - Easy access to whole form and individual field validity states\n * - Easy access to form data payload\n * = Access to 2-way, data bound reactive store\n * - Scroll to invalid field on submit\n */\n@Component({\n tag: 'nano-field-validator',\n})\nexport class FieldValidator implements ComponentInterface {\n // Internal State\n\n @Element() host: HTMLNanoFieldValidatorElement;\n @State() submitted = false;\n @State() userForm: HTMLFormElement;\n @Watch('userForm')\n userFormChange() {\n if (!!this.userForm) this.activeForm = this.userForm;\n }\n\n private get activeForm() {\n return this._activeForm;\n }\n private set activeForm(form: HTMLFormElement) {\n // manages event listners on whatever form is used (slotted on created here)\n if (!form) return;\n\n if (this._activeForm) {\n this._activeForm.removeEventListener(\n 'invalid',\n this.handleFormInvalid,\n true\n );\n }\n form.addEventListener('invalid', this.handleFormInvalid, true);\n this._activeForm = form;\n }\n private _activeForm: HTMLFormElement;\n private mo: MutationObserver;\n private allFields: Array<NanoFormEles | PlainFormEles> = [];\n private nanoFields: NanoFormEles[];\n private plainFields: PlainFormEles[];\n private nanoFieldSelector = `\n nano-input,\n nano-select,\n nano-file-upload,\n nano-date-input,\n nano-checkbox\n `;\n\n // annoyingly, whenever we attempt to `checkValidty()` it fires `invalid` events.\n // this is used to prevent infinite loops / multiple calls\n private internalValidate = false;\n\n // Public API\n\n /** When should the fields perform validation. Will override / sync all nested `nano-...` controls */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /** Sync up validateOn with all fields */\n @Watch('validateOn')\n validateOnChange() {\n this.nanoFields.forEach((field) => {\n if (field.tagName === 'NANO-CHECKBOX') {\n const cbg = field.closest('nano-checkbox-group');\n if (cbg) cbg.validateOn = this.validateOn;\n } else {\n (field as Exclude<NanoFormEles, HTMLNanoCheckboxElement>).validateOn =\n this.validateOn;\n }\n });\n }\n\n /** Tries to scroll to the first invalid field on submit */\n @Prop() scrollToInvalid = true;\n\n /** Returns true if any nested fields have been changed @readonly */\n @Prop({ reflect: true })\n get dirty() {\n return this._dirty;\n }\n @State() _dirty = false;\n\n /** Returns true if all the nested fields are currently valid @readonly */\n @Prop({ reflect: true })\n get valid() {\n return this._valid;\n }\n @State() _valid: boolean;\n\n /** The current form state as a stencil store. */\n @Prop() get store() {\n return this._store;\n }\n @State() _store: ObservableMap<ValidatorValueStore>;\n\n /** The current form payload as a reactive proxy. @readonly */\n @Prop()\n get payload() {\n return this._store.state;\n }\n\n /** Returns true if validation errors will be displayed to the user. @readonly */\n @Prop()\n get showValidation() {\n return (this.validateOn === 'dirty' && this.dirty) || this.submitted;\n }\n\n /** Get the current validation state of all form fields. @readonly\n * ```\n {\n fields: NanoFormEles[];\n valid: boolean;\n validityMessage: string;\n dirty: boolean;\n name: string | number;\n value: any;\n }[]\n ```\n */\n @Prop()\n get validationState(): ValidationState[] {\n // TODO - migrate nano-fields away from using proprietary methods in a bid to be closer to the spec\n\n // this is big and ugly.\n // why? Cos' it must unify checking validity state for both\n // `nano-...` and plain form fields.\n const validationState: ValidationState[] = [];\n\n this.allFields.forEach(async (field) => {\n const found = validationState.find((v) => v.name === this.getName(field));\n let pf: PlainFormEles;\n let nf: NanoFormEles;\n\n if (found) {\n if ((field as PlainFormEles).validationMessage) {\n pf = field as PlainFormEles;\n found.validityMessage = pf.validationMessage.length\n ? pf.validationMessage\n : found.validityMessage;\n this.internalValidate = true;\n if (found.valid && !pf.checkValidity()) found.valid = false;\n this.internalValidate = false;\n } else if ((field as NanoFormEles).validityMessage) {\n nf = field as NanoFormEles;\n found.validityMessage = nf.validityMessage.length\n ? nf.validityMessage\n : nf.validityMessage;\n if (found.valid && nf.invalid) found.valid = false;\n }\n if (!found.fields.find((f) => f === field)) found.fields.push(field);\n }\n\n let valid: boolean;\n let validityMessage: string;\n\n if ((field as PlainFormEles).checkValidity) {\n pf = field as PlainFormEles;\n this.internalValidate = true;\n valid = pf.checkValidity();\n this.internalValidate = false;\n validityMessage = pf.validationMessage;\n } else {\n nf = field as NanoFormEles;\n valid = !nf.invalid;\n validityMessage = nf.validityMessage;\n }\n\n validationState.push({\n fields: [field],\n name: this.getName(field),\n value: this._store.state[this.getName(field)],\n dirty: false,\n valid,\n validityMessage,\n });\n });\n\n return validationState;\n }\n\n /** By default, `nano-field-validator` will also track all native form field elements.\n * You can add extra web-component form fields to listen to\n * (as long as they match the standard form field spec) by using the `fieldSelector` prop.\n */\n @Prop() extraFieldSelector: string = 'input, select, textarea';\n\n /** A validation callback method.\n * @param field - The field name currently being evaluated\n * @param value - The value of the field currently being evaluated\n * @param fields - an array of all currently observered form fields and values\n * @returns field names mapped to an object of status message and validity e.g.\n * ```js\n * {field1: {msg: `This is invalid!`}, field2: {msg: `This is valid!`, valid: true}}\n * ```\n */\n @Prop() validation: (\n field: string,\n value: string,\n fields: ValidatorValueStore\n ) => { [key: string]: { msg: string; valid?: boolean } };\n\n /**\n * Sets the state of the form using an object of key / value pairs.\n * @param state - the state to load in the store\n */\n @Method()\n async setStore(state: ValidatorValueStore) {\n Object.entries(state).forEach(([key, val]) => {\n this.store.state[key] = val;\n });\n }\n\n /**\n * Sets custom validity for all / some form fields.\n * @param validity - a validity object of `{fieldName: errorString}` pairs. Set as an empty string to clear the error.\n */\n @Method()\n async setCustomValidity(validity: { [key: string]: string }) {\n return await Promise.all(\n Object.entries(validity).map(async ([key, err]) => {\n const field = this.allFields.find((f) => this.getName(f) === key);\n if (!!field) await this.setFieldError(field, err);\n })\n );\n }\n\n /**\n * Clear all custom validation.\n * @returns a promise, resolved when all errors are cleared\n */\n @Method()\n async resetValidity() {\n return await Promise.all(\n this.allFields.map(async (field) => await this.setFieldError(field, ''))\n );\n }\n\n /** Fired whenever the payload changes */\n @Event() nanoPayloadChange: EventEmitter<ValidatorValueStore>;\n\n /**\n * Fired on valid form submission.\n * Note: if you wish to prevent a form from submitting, instead\n * of using / preventing the native `submit` event, use this event\n * ```js\n * ele.addEventListener('nanoSubmit', (e) => {\n * e.preventDefault()\n * })\n * ```\n */\n @Event() nanoSubmit: EventEmitter;\n\n /** Fire on invalid form submission attempt */\n @Event() nanoInvalid: EventEmitter;\n\n // private methods\n\n @Watch('extraFieldSelector')\n attachSlotObserver() {\n if (!!this.mo) return;\n const mo = (this.mo = new MutationObserver((_entries) => {\n const form = this.host.querySelector('form');\n if (form && form !== this.activeForm) this.activeForm = form;\n this.setupFields();\n }));\n mo.observe(this.host, {\n childList: true,\n attributes: true,\n attributeFilter: ['name'],\n subtree: true,\n });\n }\n\n /**\n * During spec tests, mockelement props aren't set - only attributes.\n * This irons out that kink\n * @param field\n * @returns the fields name prop or attr\n */\n private getName(field: PlainFormEles | NanoFormEles) {\n return field.name || field.getAttribute('name');\n }\n\n /** Checks for new `nano-...` fields and adds them to our watch array and value store */\n private setupFields() {\n let nanoFields = Array.from(\n this.host.querySelectorAll<NanoFormEles>(this.nanoFieldSelector)\n );\n\n let plainFields = Array.from(\n this.host.querySelectorAll<PlainFormEles>(this.extraFieldSelector)\n ).filter((e) => !e.closest(this.nanoFieldSelector));\n\n nanoFields = nanoFields.filter(\n (f) => !!this.getName(f) && !!this.getName(f).length\n );\n plainFields = plainFields.filter(\n (f) => !!this.getName(f) && !!this.getName(f).length\n );\n\n // do we have any currently un-watched fields?\n if (\n ![...nanoFields, ...plainFields].filter(\n (f) => !this.allFields.includes(f)\n ).length\n )\n return;\n\n // setup the initial store state / refresh on new fields\n this.nanoFields = nanoFields;\n this.plainFields = plainFields;\n this.allFields = [...nanoFields, ...plainFields];\n\n this.storeToFields(this.allFields);\n\n this.validateOnChange();\n this.fieldsToStore(this.allFields);\n this.nanoPayloadChange.emit(this._store.state);\n }\n\n private storeToFields(fields: Array<NanoFormEles | PlainFormEles>) {\n fields.forEach((field) => {\n const fieldName = this.getName(field);\n if (\n !fieldName.length ||\n typeof this._store.state[fieldName] === 'undefined'\n )\n return;\n\n if (\n field.tagName === 'NANO-CHECKBOX' ||\n ['radio', 'checkbox'].includes((field as HTMLInputElement).type)\n ) {\n const cbs = this.allFields.filter(\n (f) => this.getName(field) === this.getName(f)\n ) as HTMLNanoCheckboxElement[];\n if (\n cbs[0].type === 'radio' ||\n cbs[0].type === 'segment' ||\n cbs[0].type === 'segment-pill'\n ) {\n // single radio type control\n cbs.forEach((cb) => {\n if (this._store.state[fieldName] === cb.value) cb.checked = true;\n else cb.checked = false;\n });\n } else if (Array.isArray(this._store.state[fieldName])) {\n // multiple checkbox like controls\n cbs.forEach((cb) => {\n if (this._store.state[fieldName].includes(cb.value))\n cb.checked = true;\n else cb.checked = false;\n });\n } else {\n // single checkbox like control\n cbs.forEach((cb) => {\n if (this._store.state[fieldName] === cb.value) cb.checked = true;\n else cb.checked = false;\n });\n }\n return;\n }\n\n if (field.tagName === 'NANO-FILE-UPLOAD') {\n const ff = field as HTMLNanoFileUploadElement;\n // this can only work if the field is empty rn... a one-time deal\n if (!ff.files?.length) ff.files = this._store.state[fieldName];\n return;\n }\n\n // default\n field.value = this._store.state[fieldName];\n });\n }\n\n /** Loops through all `nano-...` fields and extracts their values into our store */\n private fieldsToStore(fields: Array<NanoFormEles | PlainFormEles>) {\n fields.forEach((field) => {\n const fieldName = this.getName(field);\n if (!fieldName.length) return;\n\n if (\n field.tagName === 'NANO-CHECKBOX' ||\n ['radio', 'checkbox'].includes((field as HTMLInputElement).type)\n ) {\n const cb = field as HTMLNanoCheckboxElement;\n\n if (\n cb.type === 'radio' ||\n cb.type === 'segment' ||\n cb.type === 'segment-pill'\n ) {\n // radio type control - only one can be checked\n if (cb.checked) this._store.state[fieldName] = cb.value;\n } else if (\n this.allFields.filter(\n (f) =>\n this.getName(f) === fieldName &&\n (f.tagName === 'NANO-CHECKBOX' ||\n (f as HTMLInputElement).type === 'checkbox')\n ).length > 1\n ) {\n // multiple checkbox type control\n const currentArr = Array.isArray(this._store.state[fieldName])\n ? this._store.state[fieldName]\n : [];\n if (cb.checked) {\n // checked\n if (!this._store.state[fieldName].includes(cb.value)) {\n this._store.state[fieldName] = [...currentArr, cb.value];\n }\n } else {\n // unchecked\n this._store.state[fieldName] = currentArr.filter(\n (v) => v !== cb.value\n );\n }\n } else {\n // single checkbox - on or off\n if (cb.checked) this._store.state[fieldName] = cb.value;\n else this._store.state[fieldName] = '';\n }\n return;\n }\n\n if (field.tagName === 'NANO-FILE-UPLOAD') {\n const ff = field as HTMLNanoFileUploadElement;\n if (!this.fileStateEqual(fieldName, ff))\n this._store.state[fieldName] = ff.files;\n\n return;\n }\n\n // default\n this._store.state[fieldName] = field.value;\n });\n }\n\n /**\n * Tries to ascertain whether the current model\n * value is the same as the `nano-file-upload` value\n * @param fieldName - the key to access from the data store\n * @param field - the nano-file-upload field to assess against\n * @returns true for equal, false for not equal\n */\n private fileStateEqual(\n fieldName: string | number,\n field: HTMLNanoFileUploadElement\n ) {\n return (\n JSON.stringify(this._store.state[fieldName]) ===\n JSON.stringify(field.files) ||\n this._store.state[fieldName] == field.files\n );\n }\n\n /**\n * Checks for user defined validations\n * @param key - current key of the data model to validate\n * @param newVal - the newly set, incoming value to validate\n */\n private async validate(key: string | number, newVal: any) {\n if (!this.validation) return;\n\n const res = this.validation(key as string, newVal, this._store.state);\n\n // no nothing - return\n if (!res) return;\n\n // stencil public methods are async\n // so we must coerce our validation\n // collection loop into a promise\n await Promise.all(\n Object.entries(res).map(async ([key, o]) => {\n // switch on/off validation messages\n const field = this.allFields.find((f) => this.getName(f) === key);\n let validityTarget:\n | PlainFormEles\n | NanoFormEles\n | HTMLNanoCheckboxGroupElement = field;\n\n if (field.tagName === 'NANO-CHECKBOX') {\n // if we have a checkbox-group, set the validation message there\n const cbg = field.closest('nano-checkbox-group');\n validityTarget = cbg || field;\n }\n\n if (\n ((validityTarget as NanoFormEles).validityMessage ||\n (validityTarget as PlainFormEles).validationMessage) === o.msg &&\n o.valid\n ) {\n // status is now valid - clear the error\n await this.setFieldError(validityTarget, '');\n } else if (!o.valid) {\n // status is invalid. Set the error\n await this.setFieldError(validityTarget, o.msg);\n }\n })\n );\n }\n\n /** Loops through all store entries and checks custom validation */\n private async validateAllFields() {\n // This forces our loop to `await` and finish sequentially ... silly async stencil methods\n await Object.entries(this._store.state).reduce(\n async (memo, [key, value]) => {\n await memo;\n await this.validate(key, value);\n },\n undefined as any\n );\n }\n\n /**\n * Utility to smooth out setting error messages\n * (it's a different method on `nano-checkbox` 'cos they don't show errors themselves)\n * @param field\n * @param msg\n */\n private async setFieldError(\n field: NanoFormEles | HTMLNanoCheckboxGroupElement | PlainFormEles,\n msg: string\n ) {\n if (field['showError']) {\n await (field as Exclude<NanoFormEles, HTMLNanoCheckboxElement>).showError(\n msg\n );\n } else if (field['setError'])\n await (field as HTMLNanoCheckboxElement).setError(msg);\n else (field as PlainFormEles).setCustomValidity(msg);\n }\n\n private scrollToFirstInvalid() {\n if (!this.scrollToInvalid) return;\n\n setTimeout(() => {\n const invalidField = this.validationState.find((f) => !f.valid);\n if (!invalidField) return;\n invalidField.fields[0].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }, 200);\n }\n\n private submitForm() {\n const nanoSubmit = this.nanoSubmit.emit();\n if (nanoSubmit.defaultPrevented) return;\n this.activeForm.submit();\n }\n\n // Event handlers\n\n /**\n * Fired whenever store values change and potentially checks validity\n * @param key - the key of the store that's just changed\n * @param newVal - the incoming, new value\n */\n private handleStoreChange = async (key: string | number, newVal: any) => {\n const found = this.allFields.find((field) => this.getName(field) === key);\n\n // field update has come programmatically (not from ui),\n // so let's update the underlying ui field\n if (\n found &&\n (found.tagName === 'NANO-CHECKBOX' ||\n ['radio', 'checkbox'].includes((found as HTMLInputElement).type))\n ) {\n // it's a cb - always change\n this.storeToFields([found]);\n } else if (\n found &&\n ((found.tagName === 'NANO-FILE-UPLOAD' &&\n !this.fileStateEqual(key, found as HTMLNanoFileUploadElement)) ||\n (found.tagName !== 'NANO-FILE-UPLOAD' && found.value !== newVal))\n ) {\n // not a cb. Only change if value is different\n this.storeToFields([found]);\n }\n\n if (this.validateOn === 'dirty' && this.dirty) {\n this.internalValidate = true;\n await this.validateAllFields();\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n }\n this.nanoPayloadChange.emit(this._store.state);\n };\n\n /**\n * Handles nano field value changes and passes to store\n * @param ev - the incoming change event\n */\n private handleFieldChange = (ev: NanoFormEvent) => {\n if (!this.nanoFields.includes(ev.target)) return;\n this._dirty = true;\n this.fieldsToStore([ev.target]);\n };\n\n /**\n * Handles non-nano field value changes and passes to store\n * @param ev - the incoming change event\n */\n private handlePlainFieldChange = (ev: PlainFormEvent) => {\n if (!this.plainFields.includes(ev.target)) return;\n this.fieldsToStore([ev.target]);\n };\n\n /**\n * Handles default field validation events\n * @param ev - the invalid event\n */\n private handleFormInvalid = async (ev: Event & { target: PlainFormEles }) => {\n // if it's a non-nano field, we'll let default html5 validation do it's thing\n if (!this.plainFields.includes(ev.target)) {\n ev.preventDefault();\n }\n\n this._valid = false;\n\n // whenever `checkValidity` is called, this handler is in-turn called.\n // this flag is used to stop infinite loops\n if (this.internalValidate) return;\n\n // a submit must have happened to if 'submitThenDirty' turn on 'dirty' checking now\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.submitted = true;\n\n await this.validateAllFields();\n this.internalValidate = true;\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n\n // kinda insane...but if we're only validating on submit, then if the form is currently\n // in an invalid state, when submitting, it will fire an invalid event and not\n // submit the form. So let's test to make sure it is really invalid, and submit if not\n if (this.validateOn === 'submit') {\n if (this._valid) {\n this.submitForm();\n return;\n }\n }\n\n this.scrollToFirstInvalid();\n this.nanoInvalid.emit();\n };\n\n /**\n * stops default form submission, checks if valid, then submits manually\n * @param e - a submit event from the nested form element\n */\n private handleSubmit = async (e: Event) => {\n e.preventDefault();\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.submitted = true;\n await this.validateAllFields();\n\n this.internalValidate = true;\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n\n if (!this._valid) {\n this.scrollToFirstInvalid();\n return;\n }\n this.submitForm();\n };\n\n connectedCallback(): void {\n this.userForm = this.host.querySelector('form');\n this._store = createStore<ValidatorValueStore>({});\n }\n\n componentDidLoad() {\n requestAnimationFrame(() => {\n this.setupFields();\n this.attachSlotObserver();\n\n this.host.addEventListener('nanoChange', this.handleFieldChange);\n this.host.addEventListener('input', this.handlePlainFieldChange);\n this.host.addEventListener('change', this.handlePlainFieldChange);\n this.host.addEventListener('submit', this.handleSubmit);\n this._store.on('set', this.handleStoreChange);\n });\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n\n this.host.removeEventListener('nanoChange', this.handleFieldChange);\n this.host.removeEventListener('input', this.handlePlainFieldChange);\n this.host.removeEventListener('change', this.handlePlainFieldChange);\n this.host.removeEventListener('submit', this.handleSubmit);\n this._store.reset();\n\n if (this.activeForm)\n this.activeForm.removeEventListener(\n 'invalid',\n this.handleFormInvalid,\n true\n );\n }\n\n render() {\n return (\n <Host>\n {this.userForm && <slot />}\n {!this.userForm && (\n <form ref={(f) => (this.activeForm = f)}>\n <slot />\n </form>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["node_modules/@stencil/store/dist/index.mjs","src/components/field-validator/field-validator.tsx"],"names":["appendToMap","map","propName","value","items","get","set","includes","push","debounce","fn","ms","timeoutId","args","_i","arguments","length","clearTimeout","setTimeout","apply","isConnected","maybeElement","cleanupElements","_b","keys","key","filter","stencilSubscription","getRenderingRef","elmsToUpdate","Map","dispose","clear","elm","elements","forceUpdate","reset","forEach","elms","createObservableMap","defaultState","shouldUpdate","a","b","states","Object","entries","handlers","cb","oldValue","state","Proxy","_","ownKeys","Array","from","getOwnPropertyDescriptor","enumerable","configurable","has","on","eventName","callback","removeFromArray","onChange","unSet","newValue","unReset","use","subscriptions","unsubs","reduce","subscription","unsub","array","item","index","indexOf","createStore","FieldValidator","class_1","hostRef","_this","this","submitted","allFields","nanoFieldSelector","hasSetStore","internalValidate","validateOn","scrollToInvalid","_dirty","extraFieldSelector","handleStoreChange","newVal","__awaiter","found","find","field","getName","tagName","type","storeToFields","fileStateEqual","dirty","validateAllFields","sent","_valid","activeForm","checkValidity","nanoPayloadChange","emit","_store","handleFieldChange","ev","nanoFields","target","fieldsToStore","handlePlainFieldChange","plainFields","handleFormInvalid","preventDefault","submitForm","scrollToFirstInvalid","nanoInvalid","handleSubmit","e","prototype","userFormChange","userForm","defineProperty","_activeForm","form","removeEventListener","addEventListener","validateOnChange","cbg","closest","validationState","v","name","validationMessage","pf","validityMessage","valid","nf","invalid","fields","f","setStore","val","store","setCustomValidity","validity","Promise","all","err","setFieldError","_c","resetValidity","__generator","attachSlotObserver","mo","MutationObserver","_entries","host","querySelector","setupFields","observe","childList","attributes","attributeFilter","subtree","getAttribute","querySelectorAll","__spreadArray","fieldName","cbs","checked","isArray","ff","_a","files","init","cb_1","currentArr","JSON","stringify","validate","validation","res","o","validityTarget","msg","memo","undefined","showError","setError","invalidField","scrollIntoView","behavior","block","nanoSubmit","defaultPrevented","submit","connectedCallback","componentDidLoad","requestAnimationFrame","disconnectedCallback","disconnect","render","h","Host","ref"],"mappings":"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","sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n let states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(defaultState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const unSet = on('set', (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n });\n const unReset = on('reset', () => cb(defaultState[propName]));\n return () => {\n unSet();\n unReset();\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import {\n Component,\n Prop,\n h,\n Host,\n Element,\n ComponentInterface,\n State,\n Watch,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport { createStore, ObservableMap } from '@stencil/store';\nimport {\n NanoFormEles,\n PlainFormEles,\n NanoFormEvent,\n ValidationState,\n ValidatorValueStore,\n PlainFormEvent,\n} from '../../interface';\n\n/**\n * A toolbox for `nano-...` form fields and form validation.\n * - Easy to add validation accross field dependencies - e.g. \"When Field1 contains '123' Field2 must contain '456'\"\n * - Easy access to whole form and individual field validity states\n * - Easy access to form data payload\n * = Access to 2-way, data bound reactive store\n * - Scroll to invalid field on submit\n */\n@Component({\n tag: 'nano-field-validator',\n})\nexport class FieldValidator implements ComponentInterface {\n // Internal State\n\n @Element() host: HTMLNanoFieldValidatorElement;\n @State() submitted = false;\n @State() userForm: HTMLFormElement;\n @Watch('userForm')\n userFormChange() {\n if (!!this.userForm) this.activeForm = this.userForm;\n }\n\n private get activeForm() {\n return this._activeForm;\n }\n private set activeForm(form: HTMLFormElement) {\n // manages event listners on whatever form is used (slotted on created here)\n if (!form) return;\n\n if (this._activeForm) {\n this._activeForm.removeEventListener(\n 'invalid',\n this.handleFormInvalid,\n true\n );\n }\n form.addEventListener('invalid', this.handleFormInvalid, true);\n this._activeForm = form;\n }\n private _activeForm: HTMLFormElement;\n private mo: MutationObserver;\n private allFields: Array<NanoFormEles | PlainFormEles> = [];\n private nanoFields: NanoFormEles[];\n private plainFields: PlainFormEles[];\n private nanoFieldSelector = `\n nano-input,\n nano-select,\n nano-file-upload,\n nano-date-input,\n nano-checkbox\n `;\n private hasSetStore = false;\n\n // annoyingly, whenever we attempt to `checkValidty()` it fires `invalid` events.\n // this is used to prevent infinite loops / multiple calls\n private internalValidate = false;\n\n // Public API\n\n /** When should the fields perform validation. Will override / sync all nested `nano-...` controls */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /** Sync up validateOn with all fields */\n @Watch('validateOn')\n validateOnChange() {\n this.nanoFields.forEach((field) => {\n if (field.tagName === 'NANO-CHECKBOX') {\n const cbg = field.closest('nano-checkbox-group');\n if (cbg) cbg.validateOn = this.validateOn;\n } else {\n (field as Exclude<NanoFormEles, HTMLNanoCheckboxElement>).validateOn =\n this.validateOn;\n }\n });\n }\n\n /** Tries to scroll to the first invalid field on submit */\n @Prop() scrollToInvalid = true;\n\n /** Returns true if any nested fields have been changed @readonly */\n @Prop({ reflect: true })\n get dirty() {\n return this._dirty;\n }\n @State() _dirty = false;\n\n /** Returns true if all the nested fields are currently valid @readonly */\n @Prop({ reflect: true })\n get valid() {\n return this._valid;\n }\n @State() _valid: boolean;\n\n /** The current form state as a stencil store. */\n @Prop() get store() {\n return this._store;\n }\n @State() _store: ObservableMap<ValidatorValueStore>;\n\n /** The current form payload as a reactive proxy. @readonly */\n @Prop()\n get payload() {\n return this._store.state;\n }\n\n /** Returns true if validation errors will be displayed to the user. @readonly */\n @Prop()\n get showValidation() {\n return (this.validateOn === 'dirty' && this.dirty) || this.submitted;\n }\n\n /** Get the current validation state of all form fields. @readonly\n * ```\n {\n fields: NanoFormEles[];\n valid: boolean;\n validityMessage: string;\n dirty: boolean;\n name: string | number;\n value: any;\n }[]\n ```\n */\n @Prop()\n get validationState(): ValidationState[] {\n // TODO - migrate nano-fields away from using proprietary methods in a bid to be closer to the spec\n\n // this is big and ugly.\n // why? Cos' it must unify checking validity state for both\n // `nano-...` and plain form fields.\n const validationState: ValidationState[] = [];\n\n this.allFields.forEach(async (field) => {\n const found = validationState.find((v) => v.name === this.getName(field));\n let pf: PlainFormEles;\n let nf: NanoFormEles;\n\n if (found) {\n if ((field as PlainFormEles).validationMessage) {\n pf = field as PlainFormEles;\n found.validityMessage = pf.validationMessage.length\n ? pf.validationMessage\n : found.validityMessage;\n this.internalValidate = true;\n if (found.valid && !pf.checkValidity()) found.valid = false;\n this.internalValidate = false;\n } else if ((field as NanoFormEles).validityMessage) {\n nf = field as NanoFormEles;\n found.validityMessage = nf.validityMessage.length\n ? nf.validityMessage\n : nf.validityMessage;\n if (found.valid && nf.invalid) found.valid = false;\n }\n if (!found.fields.find((f) => f === field)) found.fields.push(field);\n }\n\n let valid: boolean;\n let validityMessage: string;\n\n if ((field as PlainFormEles).checkValidity) {\n pf = field as PlainFormEles;\n this.internalValidate = true;\n valid = pf.checkValidity();\n this.internalValidate = false;\n validityMessage = pf.validationMessage;\n } else {\n nf = field as NanoFormEles;\n valid = !nf.invalid;\n validityMessage = nf.validityMessage;\n }\n\n validationState.push({\n fields: [field],\n name: this.getName(field),\n value: this._store.state[this.getName(field)],\n dirty: false,\n valid,\n validityMessage,\n });\n });\n\n return validationState;\n }\n\n /** By default, `nano-field-validator` will also track all native form field elements.\n * You can add extra web-component form fields to listen to\n * (as long as they match the standard form field spec) by using the `fieldSelector` prop.\n */\n @Prop() extraFieldSelector: string = 'input, select, textarea';\n\n /** A validation callback method.\n * @param field - The field name currently being evaluated\n * @param value - The value of the field currently being evaluated\n * @param fields - an array of all currently observered form fields and values\n * @returns field names mapped to an object of status message and validity e.g.\n * ```js\n * {field1: {msg: `This is invalid!`}, field2: {msg: `This is valid!`, valid: true}}\n * ```\n */\n @Prop() validation: (\n field: string,\n value: string,\n fields: ValidatorValueStore\n ) => { [key: string]: { msg: string; valid?: boolean } };\n\n /**\n * Sets the state of the form using an object of key / value pairs.\n * @param state - the state to load in the store\n */\n @Method()\n async setStore(state: ValidatorValueStore) {\n this.hasSetStore = true;\n Object.entries(state).forEach(([key, val]) => {\n this.store.state[key] = val;\n });\n }\n\n /**\n * Sets custom validity for all / some form fields.\n * @param validity - a validity object of `{fieldName: errorString}` pairs. Set as an empty string to clear the error.\n */\n @Method()\n async setCustomValidity(validity: { [key: string]: string }) {\n return await Promise.all(\n Object.entries(validity).map(async ([key, err]) => {\n const field = this.allFields.find((f) => this.getName(f) === key);\n if (!!field) await this.setFieldError(field, err);\n })\n );\n }\n\n /**\n * Clear all custom validation.\n * @returns a promise, resolved when all errors are cleared\n */\n @Method()\n async resetValidity() {\n return await Promise.all(\n this.allFields.map(async (field) => await this.setFieldError(field, ''))\n );\n }\n\n /** Fired whenever the payload changes */\n @Event() nanoPayloadChange: EventEmitter<ValidatorValueStore>;\n\n /**\n * Fired on valid form submission.\n * Note: if you wish to prevent a form from submitting, instead\n * of using / preventing the native `submit` event, use this event\n * ```js\n * ele.addEventListener('nanoSubmit', (e) => {\n * e.preventDefault()\n * })\n * ```\n */\n @Event() nanoSubmit: EventEmitter;\n\n /** Fire on invalid form submission attempt */\n @Event() nanoInvalid: EventEmitter;\n\n // private methods\n\n @Watch('extraFieldSelector')\n attachSlotObserver() {\n if (!!this.mo) return;\n const mo = (this.mo = new MutationObserver((_entries) => {\n const form = this.host.querySelector('form');\n if (form && form !== this.activeForm) this.activeForm = form;\n this.setupFields();\n }));\n mo.observe(this.host, {\n childList: true,\n attributes: true,\n attributeFilter: ['name'],\n subtree: true,\n });\n }\n\n /**\n * During spec tests, mockelement props aren't set - only attributes.\n * This irons out that kink\n * @param field\n * @returns the fields name prop or attr\n */\n private getName(field: PlainFormEles | NanoFormEles) {\n return field.name || field.getAttribute('name');\n }\n\n /** Checks for new `nano-...` fields and adds them to our watch array and value store */\n private setupFields() {\n let nanoFields = Array.from(\n this.host.querySelectorAll<NanoFormEles>(this.nanoFieldSelector)\n );\n\n let plainFields = Array.from(\n this.host.querySelectorAll<PlainFormEles>(this.extraFieldSelector)\n ).filter((e) => !e.closest(this.nanoFieldSelector));\n\n nanoFields = nanoFields.filter(\n (f) => !!this.getName(f) && !!this.getName(f).length\n );\n plainFields = plainFields.filter(\n (f) => !!this.getName(f) && !!this.getName(f).length\n );\n\n // do we have any currently un-watched fields?\n if (\n ![...nanoFields, ...plainFields].filter(\n (f) => !this.allFields.includes(f)\n ).length\n )\n return;\n\n // setup the initial store state / refresh on new fields\n this.nanoFields = nanoFields;\n this.plainFields = plainFields;\n this.allFields = [...nanoFields, ...plainFields];\n\n this.storeToFields(this.allFields);\n\n this.validateOnChange();\n this.fieldsToStore(this.allFields, true);\n this.nanoPayloadChange.emit(this._store.state);\n }\n\n private storeToFields(fields: Array<NanoFormEles | PlainFormEles>) {\n fields.forEach((field) => {\n const fieldName = this.getName(field);\n if (\n !fieldName.length ||\n typeof this._store.state[fieldName] === 'undefined'\n )\n return;\n\n if (\n field.tagName === 'NANO-CHECKBOX' ||\n ['radio', 'checkbox'].includes((field as HTMLInputElement).type)\n ) {\n const cbs = this.allFields.filter(\n (f) => this.getName(field) === this.getName(f)\n ) as HTMLNanoCheckboxElement[];\n if (\n cbs[0].type === 'radio' ||\n cbs[0].type === 'segment' ||\n cbs[0].type === 'segment-pill'\n ) {\n // single radio type control\n cbs.forEach((cb) => {\n if (this._store.state[fieldName] === cb.value) cb.checked = true;\n else cb.checked = false;\n });\n } else if (Array.isArray(this._store.state[fieldName])) {\n // multiple checkbox like controls\n cbs.forEach((cb) => {\n if (this._store.state[fieldName].includes(cb.value))\n cb.checked = true;\n else cb.checked = false;\n });\n } else {\n // single checkbox like control\n cbs.forEach((cb) => {\n if (this._store.state[fieldName] === cb.value) cb.checked = true;\n else cb.checked = false;\n });\n }\n return;\n }\n\n if (field.tagName === 'NANO-FILE-UPLOAD') {\n const ff = field as HTMLNanoFileUploadElement;\n // this can only work if the field is empty rn... a one-time deal\n if (!ff.files?.length) ff.files = this._store.state[fieldName];\n return;\n }\n\n // default\n field.value = this._store.state[fieldName];\n });\n }\n\n /** Loops through all `nano-...` fields and extracts their values into our store */\n private fieldsToStore(\n fields: Array<NanoFormEles | PlainFormEles>,\n init = false\n ) {\n fields.forEach((field) => {\n const fieldName = this.getName(field);\n if (!fieldName.length) return;\n\n if (!!this._store.state[fieldName] && this.hasSetStore && init) {\n // a new field is being added\n // but we already have a value for it\n // via a store that has been actively set\n // so let's not overwrite it\n return;\n }\n\n if (\n field.tagName === 'NANO-CHECKBOX' ||\n ['radio', 'checkbox'].includes((field as HTMLInputElement).type)\n ) {\n const cb = field as HTMLNanoCheckboxElement;\n\n if (\n cb.type === 'radio' ||\n cb.type === 'segment' ||\n cb.type === 'segment-pill'\n ) {\n // radio type control - only one can be checked\n if (cb.checked) this._store.state[fieldName] = cb.value;\n } else if (\n this.allFields.filter(\n (f) =>\n this.getName(f) === fieldName &&\n (f.tagName === 'NANO-CHECKBOX' ||\n (f as HTMLInputElement).type === 'checkbox')\n ).length > 1\n ) {\n // multiple checkbox type control\n const currentArr = Array.isArray(this._store.state[fieldName])\n ? this._store.state[fieldName]\n : [];\n if (cb.checked) {\n // checked\n if (!this._store.state[fieldName].includes(cb.value)) {\n this._store.state[fieldName] = [...currentArr, cb.value];\n }\n } else {\n // unchecked\n this._store.state[fieldName] = currentArr.filter(\n (v) => v !== cb.value\n );\n }\n } else {\n // single checkbox - on or off\n if (cb.checked) this._store.state[fieldName] = cb.value;\n else this._store.state[fieldName] = '';\n }\n return;\n }\n\n if (field.tagName === 'NANO-FILE-UPLOAD') {\n const ff = field as HTMLNanoFileUploadElement;\n if (!this.fileStateEqual(fieldName, ff))\n this._store.state[fieldName] = ff.files;\n\n return;\n }\n\n // default\n this._store.state[fieldName] = field.value;\n });\n }\n\n /**\n * Tries to ascertain whether the current model\n * value is the same as the `nano-file-upload` value\n * @param fieldName - the key to access from the data store\n * @param field - the nano-file-upload field to assess against\n * @returns true for equal, false for not equal\n */\n private fileStateEqual(\n fieldName: string | number,\n field: HTMLNanoFileUploadElement\n ) {\n return (\n JSON.stringify(this._store.state[fieldName]) ===\n JSON.stringify(field.files) ||\n this._store.state[fieldName] == field.files\n );\n }\n\n /**\n * Checks for user defined validations\n * @param key - current key of the data model to validate\n * @param newVal - the newly set, incoming value to validate\n */\n private async validate(key: string | number, newVal: any) {\n if (!this.validation) return;\n\n const res = this.validation(key as string, newVal, this._store.state);\n\n // no nothing - return\n if (!res) return;\n\n // stencil public methods are async\n // so we must coerce our validation\n // collection loop into a promise\n await Promise.all(\n Object.entries(res).map(async ([key, o]) => {\n // switch on/off validation messages\n const field = this.allFields.find((f) => this.getName(f) === key);\n let validityTarget:\n | PlainFormEles\n | NanoFormEles\n | HTMLNanoCheckboxGroupElement = field;\n\n if (field.tagName === 'NANO-CHECKBOX') {\n // if we have a checkbox-group, set the validation message there\n const cbg = field.closest('nano-checkbox-group');\n validityTarget = cbg || field;\n }\n\n if (\n ((validityTarget as NanoFormEles).validityMessage ||\n (validityTarget as PlainFormEles).validationMessage) === o.msg &&\n o.valid\n ) {\n // status is now valid - clear the error\n await this.setFieldError(validityTarget, '');\n } else if (!o.valid) {\n // status is invalid. Set the error\n await this.setFieldError(validityTarget, o.msg);\n }\n })\n );\n }\n\n /** Loops through all store entries and checks custom validation */\n private async validateAllFields() {\n // This forces our loop to `await` and finish sequentially ... silly async stencil methods\n await Object.entries(this._store.state).reduce(\n async (memo, [key, value]) => {\n await memo;\n await this.validate(key, value);\n },\n undefined as any\n );\n }\n\n /**\n * Utility to smooth out setting error messages\n * (it's a different method on `nano-checkbox` 'cos they don't show errors themselves)\n * @param field\n * @param msg\n */\n private async setFieldError(\n field: NanoFormEles | HTMLNanoCheckboxGroupElement | PlainFormEles,\n msg: string\n ) {\n if (field['showError']) {\n await (field as Exclude<NanoFormEles, HTMLNanoCheckboxElement>).showError(\n msg\n );\n } else if (field['setError'])\n await (field as HTMLNanoCheckboxElement).setError(msg);\n else (field as PlainFormEles).setCustomValidity(msg);\n }\n\n private scrollToFirstInvalid() {\n if (!this.scrollToInvalid) return;\n\n setTimeout(() => {\n const invalidField = this.validationState.find((f) => !f.valid);\n if (!invalidField) return;\n invalidField.fields[0].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }, 200);\n }\n\n private submitForm() {\n const nanoSubmit = this.nanoSubmit.emit();\n if (nanoSubmit.defaultPrevented) return;\n this.activeForm.submit();\n }\n\n // Event handlers\n\n /**\n * Fired whenever store values change and potentially checks validity\n * @param key - the key of the store that's just changed\n * @param newVal - the incoming, new value\n */\n private handleStoreChange = async (key: string | number, newVal: any) => {\n const found = this.allFields.find((field) => this.getName(field) === key);\n\n // field update has come programmatically (not from ui),\n // so let's update the underlying ui field\n if (\n found &&\n (found.tagName === 'NANO-CHECKBOX' ||\n ['radio', 'checkbox'].includes((found as HTMLInputElement).type))\n ) {\n // it's a cb - always change\n this.storeToFields([found]);\n } else if (\n found &&\n ((found.tagName === 'NANO-FILE-UPLOAD' &&\n !this.fileStateEqual(key, found as HTMLNanoFileUploadElement)) ||\n (found.tagName !== 'NANO-FILE-UPLOAD' && found.value !== newVal))\n ) {\n // not a cb. Only change if value is different\n this.storeToFields([found]);\n }\n\n if (this.validateOn === 'dirty' && this.dirty) {\n this.internalValidate = true;\n await this.validateAllFields();\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n }\n this.nanoPayloadChange.emit(this._store.state);\n };\n\n /**\n * Handles nano field value changes and passes to store\n * @param ev - the incoming change event\n */\n private handleFieldChange = (ev: NanoFormEvent) => {\n if (!this.nanoFields.includes(ev.target)) return;\n this._dirty = true;\n this.fieldsToStore([ev.target]);\n };\n\n /**\n * Handles non-nano field value changes and passes to store\n * @param ev - the incoming change event\n */\n private handlePlainFieldChange = (ev: PlainFormEvent) => {\n if (!this.plainFields.includes(ev.target)) return;\n this.fieldsToStore([ev.target]);\n };\n\n /**\n * Handles default field validation events\n * @param ev - the invalid event\n */\n private handleFormInvalid = async (ev: Event & { target: PlainFormEles }) => {\n // if it's a non-nano field, we'll let default html5 validation do it's thing\n if (!this.plainFields.includes(ev.target)) {\n ev.preventDefault();\n }\n\n this._valid = false;\n\n // whenever `checkValidity` is called, this handler is in-turn called.\n // this flag is used to stop infinite loops\n if (this.internalValidate) return;\n\n // a submit must have happened to if 'submitThenDirty' turn on 'dirty' checking now\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.submitted = true;\n\n await this.validateAllFields();\n this.internalValidate = true;\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n\n // kinda insane...but if we're only validating on submit, then if the form is currently\n // in an invalid state, when submitting, it will fire an invalid event and not\n // submit the form. So let's test to make sure it is really invalid, and submit if not\n if (this.validateOn === 'submit') {\n if (this._valid) {\n this.submitForm();\n return;\n }\n }\n\n this.scrollToFirstInvalid();\n this.nanoInvalid.emit();\n };\n\n /**\n * stops default form submission, checks if valid, then submits manually\n * @param e - a submit event from the nested form element\n */\n private handleSubmit = async (e: Event) => {\n e.preventDefault();\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.submitted = true;\n await this.validateAllFields();\n\n this.internalValidate = true;\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n\n if (!this._valid) {\n this.scrollToFirstInvalid();\n return;\n }\n this.submitForm();\n };\n\n connectedCallback(): void {\n this.userForm = this.host.querySelector('form');\n this._store = createStore<ValidatorValueStore>({});\n }\n\n componentDidLoad() {\n requestAnimationFrame(() => {\n this.setupFields();\n this.attachSlotObserver();\n\n this.host.addEventListener('nanoChange', this.handleFieldChange);\n this.host.addEventListener('input', this.handlePlainFieldChange);\n this.host.addEventListener('change', this.handlePlainFieldChange);\n this.host.addEventListener('submit', this.handleSubmit);\n this._store.on('set', this.handleStoreChange);\n });\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n\n this.host.removeEventListener('nanoChange', this.handleFieldChange);\n this.host.removeEventListener('input', this.handlePlainFieldChange);\n this.host.removeEventListener('change', this.handlePlainFieldChange);\n this.host.removeEventListener('submit', this.handleSubmit);\n this._store.reset();\n\n if (this.activeForm)\n this.activeForm.removeEventListener(\n 'invalid',\n this.handleFormInvalid,\n true\n );\n }\n\n render() {\n return (\n <Host>\n {this.userForm && <slot />}\n {!this.userForm && (\n <form ref={(f) => (this.activeForm = f)}>\n <slot />\n </form>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
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
2
  /*!
3
3
  * Web Components for Nanopore digital Web Apps
4
- */import{r as registerInstance,c as createEvent,i as readTask,f as writeTask,h,l as getAssetPath,e as Host,g as getElement}from"./index-31c2e965.js";import{a as algoliasearch_umd}from"./algoliasearch.umd-86359963.js";import{d as displayTransition}from"./index-5e677f69.js";import{C as ComponentStore}from"./component-store-f0da91cd.js";import{d as debounce}from"./throttle-7836544e.js";import{c as closestElement}from"./dom-d3ad49e2.js";import"./_commonjsHelpers-e401b2a2.js";var __rest=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 clientFetch(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=__rest(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 globalNavCss=':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:calc(100% - 2px);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:#e2e2e2;-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 THRESHOLDBREAKS={search:0,about:1,main:2,login:3,icon:4};var GlobalNav=function(){function e(e){var t=this;registerInstance(this,e);this.nanoIsReady=createEvent(this,"nanoIsReady",7);this.nanoSearchResult=createEvent(this,"nanoSearchResult",7);this.nanoSearchError=createEvent(this,"nanoSearchError",7);this.nanoSearchReset=createEvent(this,"nanoSearchReset",7);this.currSize=0;this.thresholdsGoingUp=false;this.THRESHOLDLIMIT=Object.keys(THRESHOLDBREAKS).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=debounce(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&&closestElement("#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,t,n,a,i;var s=this;return __generator(this,(function(o){switch(o.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}}t={timeout:5e3};o.label=1;case 1:o.trys.push([1,6,,7]);if(!(this.env==="local"))return[3,3];n=this;return[4,import("./local-my-account-aed156bf.js")];case 2:n.myAccData=o.sent();return[3,5];case 3:a=this;return[4,clientFetch(e+"nav_bar_data.json",t)];case 4:a.myAccData=o.sent();o.label=5;case 5:if(this.myAccData.user.id){this.isLoggedIn=true;this.myAccountUser=this.myAccData.user}this.processMyAccLinks();this.processMyAccData();setTimeout((function(){return s.remoteDataReady=true}),300);return[3,7];case 6:i=o.sent();console.error(i);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=algoliasearch_umd(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;readTask((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-THRESHOLDBREAKS.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-THRESHOLDBREAKS.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-THRESHOLDBREAKS.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-THRESHOLDBREAKS.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"]')))}));writeTask((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,displayTransition(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;readTask((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=debounce(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;ComponentStore.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 o=0;t=h("div",null,!n&&h("div",{class:"search-autocomplete-hit search-autocomplete-hit--no-result"},"No results matching '",this.searchValInternal,"' were found in"," ",h("strong",null,this.currentIndex.name),". Try another phrase."),this.autocompleteResults&&[this.autocompleteResults.hits.map((function(t,n){return h("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||o>1)return;o++;return h("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,'"'," ",h("div",{class:"search-autocomplete-hit-scope"},"in ",t.indexName))}))],!!n&&h("div",{class:"search-autocomplete-foot"},h("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=h("div",{class:"search-autocomplete-hit search-autocomplete-hit--no-result"},"No results matching '",this.searchValInternal,"' were found. Try another phrase.")}}return h("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[h("form",{class:"search-inputs",onSubmit:this.onSearchSubmit,id:"global-nav-search"},h("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 h("nano-option",{selected:t.index===e.searchIndex,value:t.index},t.name||t.index)})),h("nano-icon",{name:"solid/caret-down",class:"down-arrow",slot:"down-arrow"})),h("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"},h("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)}},h("nano-icon",{name:"light/search"})),h("span",{class:{"search-icon":true,"search-icon--loader":true,"search-icon--show":this.searchLoading},slot:"end"},h("nano-icon",{name:"light/spinner-third"}))),h("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 h(Host,{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},h("div",{class:{"global-nav":true,"scrolling-down":!this.scrollingUp}},h("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}},h("div",{class:"gn-menu_wrap",ref:function(e){return t.menuWrapDiv=e},tabindex:"-1"},h("div",{class:"gn-menu_actions"},h("button",{class:"menu-btn icon-btn icon-btn",onMouseDown:this.onMenuBtnClick,onKeyDown:this.onMenuBtnKeyDown},this.threshold<this.THRESHOLDLIMIT-3&&h("nano-icon",{name:"light/times","aria-label":"close menu"}),this.threshold>=this.THRESHOLDLIMIT-3&&h("nano-icon",{name:"light/bars","aria-label":"close menu"})),this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.icon&&[!!this.iconSlotLen&&h("slot",{name:"icon"}),this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("icons"))&&[this.msgUrl&&h("a",{href:this.msgUrl,class:"icon-btn"},h("nano-icon",{name:"light/bell"}),this.msgCount>0&&h("span",{class:"gn-menu_actions-counter"},this.msgCount)),this.cartUrl&&h("a",{href:this.cartUrl,class:"icon-btn"},h("nano-icon",{name:"light/shopping-cart"}),this.cartCount>0&&h("span",{class:"gn-menu_actions-counter"},this.cartCount))]],this.myAccData&&this.myAccData.urls.login&&h("a",{href:this.myAccData.urls.login+this.ssoRedirect,class:"login-btn"},"Login / Register"," ",h("nano-icon",{name:"solid/chevron-right"}))),h("div",{class:"content-wrap",ref:function(e){return t.menuContentDiv=e}},h("div",{class:"content"},h("nav",{class:"nav-links nav-links--main"},h("slot",{name:"overflow"}),this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.main&&!!this.mainSlotLen&&h("slot",{name:"main"})),((!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.about||this.hasSiteSlot||!!this.siteNavItms.length)&&h("div",null,(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.about&&[(this.threshold>=this.THRESHOLDLIMIT-(THRESHOLDBREAKS.about+1)||this.mainSlotLen<2)&&this.overflowSlotLen<2&&h("div",{class:"nav-links-wrap"},!!this.aboutNavItms.length&&h("h4",{class:"nav-links_title"},"About"),h("nav",{class:"nav-links nav-links--sub","aria-label":"About the company links"},h("slot",{name:"about"}),this.aboutNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("a",{href:e.address,target:e.target},e.title))})))),(this.threshold<this.THRESHOLDLIMIT-(THRESHOLDBREAKS.about+1)&&this.mainSlotLen>=2||this.overflowSlotLen>=2)&&h("nav",{class:"nav-links","aria-label":"About the company links"},!this.aboutNavItms.length&&h("slot",{name:"about"}),!!this.aboutNavItms.length&&h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},"Company",h("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),h("div",{slot:"secondary"},h("div",{class:"content"},h("button",{class:"back-btn",onClick:this.subMenuClose},h("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),"Company"),h("slot",{name:"about"}),h("div",{class:"content--sub"},this.aboutNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("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&&h("div",{class:"nav-links-wrap"},h("h4",{class:"nav-links_title"},"Sites"),h("nav",{class:"nav-links nav-links--sub","aria-label":"Different company site links"},h("slot",{name:"site"}),this.siteNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("a",{href:e.address,target:e.target},e.title))})))),(this.threshold<this.THRESHOLDLIMIT-2&&this.mainSlotLen>=2||this.overflowSlotLen>=2)&&h("nav",{class:"nav-links","aria-label":"Different company site links"},h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},"Sites",h("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),h("div",{slot:"secondary"},h("div",{class:"content"},h("button",{class:"back-btn",onClick:this.subMenuClose},h("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),"Sites"),h("div",{class:"content--sub"},h("slot",{name:"site"}),this.siteNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("a",{href:e.address,target:e.target},e.title))})))))))])),this.isLoggedIn&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.login&&(this.loggedInNavItms.length||this.hasLoggedinSlot)&&h("nav",{class:"nav-links","aria-label":"Your user account links"},h("nano-nav-item",{class:"nano-global-nav user-nav nano-global-nav-menu"},this.myAccountUser.name,h("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),h("div",{slot:"secondary"},h("div",{class:"content"},h("button",{class:"back-btn",onClick:this.subMenuClose},h("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),this.myAccountUser.name),h("div",{class:"content--sub"},h("slot",{name:"loggedin"}),this.loggedInNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("a",{href:e.address,target:e.target},e.title))})),h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("a",{href:this.myAccData.urls.forgot_password+this.ssoRedirect},"Change Password"))))))),h("slot",{name:"promotion"}),this.myAccData&&this.myAccData.urls.logout&&h("div",{class:"login-btn logout-btn"},h("a",{href:this.myAccData.urls.logout+this.ssoRedirect},"Logout"))))),h("nano-sticker",{"auto-resize":"false","break-point-max":"800",quietMode:{h:600,w:800}},h("div",{class:"bars",ref:function(e){return t.barsDiv=e}},h("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-THRESHOLDBREAKS.icon||this.isLoggedIn&&(!!this.loggedInNavItms.length||this.hasLoggedinSlot)&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.login||!!this.mainSlotLen&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.main||(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.about||this.hasSiteSlot||!!this.siteNavItms.length)&&h("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}},h("nano-icon",{name:"light/bars","aria-label":"open menu"})),this.showLogo&&h("a",{href:this.logoUrl,class:"logo-link"},h("img",{src:getAssetPath("./assets/ont-logo.svg"),alt:"Oxford Nanopore Technologies Logo",class:"logo"})),!this.showLogo&&h("div",{class:"logo-link"},h("slot",{name:"logo"})),h("div",{class:"nav-links nav-links--main"},h("slot",{name:"main"})),this.threshold>=this.THRESHOLDLIMIT-THRESHOLDBREAKS.search&&[this.showSearch&&!!this.internalSearchIndeces.length&&h("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&&h("slot",{name:"search"})],(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold>=this.THRESHOLDLIMIT-THRESHOLDBREAKS.about&&h("nav",{class:"nav-links nav-links--sub","aria-label":"About the company. Links"},h("slot",{name:"about"}),this.aboutNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-bar"},h("a",{href:e.address,target:e.target},e.title))}))),this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.search&&(this.showSearch&&!!this.internalSearchIndeces.length||!!this.searchSlotLen)&&h("button",{class:"icon-btn","aria-controls":"global-nav-search-bar","aria-expanded":this.searchBarShown?"true":"false",onMouseDown:this.onSearchBtnClick,onKeyDown:this.onSearchBtnKeyDown},h("nano-icon",{name:"light/search"})),this.threshold>=this.THRESHOLDLIMIT-THRESHOLDBREAKS.icon&&[!!this.iconSlotLen&&h("slot",{name:"icon"}),this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("icons"))&&[this.msgUrl&&h("a",{href:this.msgUrl,class:"icon-btn"},h("nano-icon",{name:"light/bell"}),this.msgCount>0&&h("span",{class:"gn-menu_actions-counter"},this.msgCount)),this.cartUrl&&h("a",{href:this.cartUrl,class:"icon-btn"},h("nano-icon",{name:"light/shopping-cart"}),this.cartCount>0&&h("span",{class:"gn-menu_actions-counter"},this.cartCount))]],this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("loggedin"))&&this.threshold>=this.THRESHOLDLIMIT-THRESHOLDBREAKS.login&&[this.myAccData.urls.login&&h("a",{href:this.myAccData.urls.login+this.ssoRedirect,class:"login-btn"},"Login / Register"),this.myAccountUser&&h("div",{class:"user-links"},h("button",{class:{"icon-btn":true,"user-links-btn":true,open:this.userMenuOpen},onMouseDown:this.onUserBtnClick,onKeyDown:this.onUserBtnKeyDown}," ",this.myAccountUser.name,h("nano-icon",{name:"solid/caret-down"})),h("div",{class:"user-links-panel",tabindex:"-1",ref:function(e){return t.userLinkPanel=e}},h("div",{class:"user-links-panel-content"},this.loggedInNavItms.map((function(e){return h("a",{href:e.address,target:e.target},e.title)}))),h("div",{class:"user-links-panel-foot"},h("a",{href:this.myAccData.urls.forgot_password+this.ssoRedirect},"Change Password"),h("a",{href:this.myAccData.urls.logout+this.ssoRedirect},"Logout"))))],h("span",{class:"measure-ele"})),this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.search&&h("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}},h("div",{class:"search-widget"},this.showSearch&&!!this.internalSearchIndeces.length&&h("div",null,a),(!this.showSearch||!this.myAccData)&&!!this.searchSlotLen&&h("slot",{name:"search"}))))),(this.threshold<this.THRESHOLDLIMIT-3||this.menuFullScreen)&&h("div",{class:{mask:true,open:this.modalOpen},onClick:this.menuClose,onTouchEnd:this.menuClose})),h("div",{class:"site-content",ref:function(e){return t.siteContent=e}},h("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 getElement(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}();GlobalNav.style=globalNavCss;export{GlobalNav as nano_global_nav};
4
+ */import{r as registerInstance,c as createEvent,i as readTask,f as writeTask,h,l as getAssetPath,e as Host,g as getElement}from"./index-31c2e965.js";import{a as algoliasearch_umd}from"./algoliasearch.umd-86359963.js";import{d as displayTransition}from"./index-5e677f69.js";import{C as ComponentStore}from"./component-store-f0da91cd.js";import{d as debounce}from"./throttle-7836544e.js";import{c as closestElement}from"./dom-d3ad49e2.js";import"./_commonjsHelpers-e401b2a2.js";var __rest=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 clientFetch(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=__rest(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 globalNavCss=':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 THRESHOLDBREAKS={search:0,about:1,main:2,login:3,icon:4};var GlobalNav=function(){function e(e){var t=this;registerInstance(this,e);this.nanoIsReady=createEvent(this,"nanoIsReady",7);this.nanoSearchResult=createEvent(this,"nanoSearchResult",7);this.nanoSearchError=createEvent(this,"nanoSearchError",7);this.nanoSearchReset=createEvent(this,"nanoSearchReset",7);this.currSize=0;this.thresholdsGoingUp=false;this.THRESHOLDLIMIT=Object.keys(THRESHOLDBREAKS).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=debounce(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&&closestElement("#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,t,n,a,i;var s=this;return __generator(this,(function(o){switch(o.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}}t={timeout:5e3};o.label=1;case 1:o.trys.push([1,6,,7]);if(!(this.env==="local"))return[3,3];n=this;return[4,import("./local-my-account-aed156bf.js")];case 2:n.myAccData=o.sent();return[3,5];case 3:a=this;return[4,clientFetch(e+"nav_bar_data.json",t)];case 4:a.myAccData=o.sent();o.label=5;case 5:if(this.myAccData.user.id){this.isLoggedIn=true;this.myAccountUser=this.myAccData.user}this.processMyAccLinks();this.processMyAccData();setTimeout((function(){return s.remoteDataReady=true}),300);return[3,7];case 6:i=o.sent();console.error(i);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=algoliasearch_umd(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;readTask((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-THRESHOLDBREAKS.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-THRESHOLDBREAKS.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-THRESHOLDBREAKS.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-THRESHOLDBREAKS.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"]')))}));writeTask((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,displayTransition(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;readTask((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=debounce(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;ComponentStore.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 o=0;t=h("div",null,!n&&h("div",{class:"search-autocomplete-hit search-autocomplete-hit--no-result"},"No results matching '",this.searchValInternal,"' were found in"," ",h("strong",null,this.currentIndex.name),". Try another phrase."),this.autocompleteResults&&[this.autocompleteResults.hits.map((function(t,n){return h("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||o>1)return;o++;return h("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,'"'," ",h("div",{class:"search-autocomplete-hit-scope"},"in ",t.indexName))}))],!!n&&h("div",{class:"search-autocomplete-foot"},h("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=h("div",{class:"search-autocomplete-hit search-autocomplete-hit--no-result"},"No results matching '",this.searchValInternal,"' were found. Try another phrase.")}}return h("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[h("form",{class:"search-inputs",onSubmit:this.onSearchSubmit,id:"global-nav-search"},h("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 h("nano-option",{selected:t.index===e.searchIndex,value:t.index},t.name||t.index)})),h("nano-icon",{name:"solid/caret-down",class:"down-arrow",slot:"down-arrow"})),h("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"},h("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)}},h("nano-icon",{name:"light/search"})),h("span",{class:{"search-icon":true,"search-icon--loader":true,"search-icon--show":this.searchLoading},slot:"end"},h("nano-icon",{name:"light/spinner-third"}))),h("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 h(Host,{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},h("div",{class:{"global-nav":true,"scrolling-down":!this.scrollingUp}},h("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}},h("div",{class:"gn-menu_wrap",ref:function(e){return t.menuWrapDiv=e},tabindex:"-1"},h("div",{class:"gn-menu_actions"},h("button",{class:"menu-btn icon-btn icon-btn",onMouseDown:this.onMenuBtnClick,onKeyDown:this.onMenuBtnKeyDown},this.threshold<this.THRESHOLDLIMIT-3&&h("nano-icon",{name:"light/times","aria-label":"close menu"}),this.threshold>=this.THRESHOLDLIMIT-3&&h("nano-icon",{name:"light/bars","aria-label":"close menu"})),this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.icon&&[!!this.iconSlotLen&&h("slot",{name:"icon"}),this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("icons"))&&[this.msgUrl&&h("a",{href:this.msgUrl,class:"icon-btn"},h("nano-icon",{name:"light/bell"}),this.msgCount>0&&h("span",{class:"gn-menu_actions-counter"},this.msgCount)),this.cartUrl&&h("a",{href:this.cartUrl,class:"icon-btn"},h("nano-icon",{name:"light/shopping-cart"}),this.cartCount>0&&h("span",{class:"gn-menu_actions-counter"},this.cartCount))]],this.myAccData&&this.myAccData.urls.login&&h("a",{href:this.myAccData.urls.login+this.ssoRedirect,class:"login-btn"},"Login / Register"," ",h("nano-icon",{name:"solid/chevron-right"}))),h("div",{class:"content-wrap",ref:function(e){return t.menuContentDiv=e}},h("div",{class:"content"},h("nav",{class:"nav-links nav-links--main"},h("slot",{name:"overflow"}),this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.main&&!!this.mainSlotLen&&h("slot",{name:"main"})),((!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.about||this.hasSiteSlot||!!this.siteNavItms.length)&&h("div",null,(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.about&&[(this.threshold>=this.THRESHOLDLIMIT-(THRESHOLDBREAKS.about+1)||this.mainSlotLen<2)&&this.overflowSlotLen<2&&h("div",{class:"nav-links-wrap"},!!this.aboutNavItms.length&&h("h4",{class:"nav-links_title"},"About"),h("nav",{class:"nav-links nav-links--sub","aria-label":"About the company links"},h("slot",{name:"about"}),this.aboutNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("a",{href:e.address,target:e.target},e.title))})))),(this.threshold<this.THRESHOLDLIMIT-(THRESHOLDBREAKS.about+1)&&this.mainSlotLen>=2||this.overflowSlotLen>=2)&&h("nav",{class:"nav-links","aria-label":"About the company links"},!this.aboutNavItms.length&&h("slot",{name:"about"}),!!this.aboutNavItms.length&&h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},"Company",h("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),h("div",{slot:"secondary"},h("div",{class:"content"},h("button",{class:"back-btn",onClick:this.subMenuClose},h("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),"Company"),h("slot",{name:"about"}),h("div",{class:"content--sub"},this.aboutNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("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&&h("div",{class:"nav-links-wrap"},h("h4",{class:"nav-links_title"},"Sites"),h("nav",{class:"nav-links nav-links--sub","aria-label":"Different company site links"},h("slot",{name:"site"}),this.siteNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("a",{href:e.address,target:e.target},e.title))})))),(this.threshold<this.THRESHOLDLIMIT-2&&this.mainSlotLen>=2||this.overflowSlotLen>=2)&&h("nav",{class:"nav-links","aria-label":"Different company site links"},h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},"Sites",h("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),h("div",{slot:"secondary"},h("div",{class:"content"},h("button",{class:"back-btn",onClick:this.subMenuClose},h("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),"Sites"),h("div",{class:"content--sub"},h("slot",{name:"site"}),this.siteNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("a",{href:e.address,target:e.target},e.title))})))))))])),this.isLoggedIn&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.login&&(this.loggedInNavItms.length||this.hasLoggedinSlot)&&h("nav",{class:"nav-links","aria-label":"Your user account links"},h("nano-nav-item",{class:"nano-global-nav user-nav nano-global-nav-menu"},this.myAccountUser.name,h("nano-icon",{slot:"icon-end",name:"solid/chevron-right"}),h("div",{slot:"secondary"},h("div",{class:"content"},h("button",{class:"back-btn",onClick:this.subMenuClose},h("nano-icon",{slot:"icon-end",name:"solid/chevron-left","aria-label":"go back"}),this.myAccountUser.name),h("div",{class:"content--sub"},h("slot",{name:"loggedin"}),this.loggedInNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("a",{href:e.address,target:e.target},e.title))})),h("nano-nav-item",{class:"nano-global-nav nano-global-nav-menu"},h("a",{href:this.myAccData.urls.forgot_password+this.ssoRedirect},"Change Password"))))))),h("slot",{name:"promotion"}),this.myAccData&&this.myAccData.urls.logout&&h("div",{class:"login-btn logout-btn"},h("a",{href:this.myAccData.urls.logout+this.ssoRedirect},"Logout"))))),h("nano-sticker",{"auto-resize":"false","break-point-max":"800",quietMode:{h:600,w:800}},h("div",{class:"bars",ref:function(e){return t.barsDiv=e}},h("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-THRESHOLDBREAKS.icon||this.isLoggedIn&&(!!this.loggedInNavItms.length||this.hasLoggedinSlot)&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.login||!!this.mainSlotLen&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.main||(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.about||this.hasSiteSlot||!!this.siteNavItms.length)&&h("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}},h("nano-icon",{name:"light/bars","aria-label":"open menu"})),this.showLogo&&h("a",{href:this.logoUrl,class:"logo-link"},h("img",{src:getAssetPath("./assets/ont-logo.svg"),alt:"Oxford Nanopore Technologies Logo",class:"logo"})),!this.showLogo&&h("div",{class:"logo-link"},h("slot",{name:"logo"})),h("div",{class:"nav-links nav-links--main"},h("slot",{name:"main"})),this.threshold>=this.THRESHOLDLIMIT-THRESHOLDBREAKS.search&&[this.showSearch&&!!this.internalSearchIndeces.length&&h("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&&h("slot",{name:"search"})],(!!this.aboutSlotLen||!!this.aboutNavItms.length)&&this.threshold>=this.THRESHOLDLIMIT-THRESHOLDBREAKS.about&&h("nav",{class:"nav-links nav-links--sub","aria-label":"About the company. Links"},h("slot",{name:"about"}),this.aboutNavItms.map((function(e){return h("nano-nav-item",{class:"nano-global-nav nano-global-nav-bar"},h("a",{href:e.address,target:e.target},e.title))}))),this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.search&&(this.showSearch&&!!this.internalSearchIndeces.length||!!this.searchSlotLen)&&h("button",{class:"icon-btn","aria-controls":"global-nav-search-bar","aria-expanded":this.searchBarShown?"true":"false",onMouseDown:this.onSearchBtnClick,onKeyDown:this.onSearchBtnKeyDown},h("nano-icon",{name:"light/search"})),this.threshold>=this.THRESHOLDLIMIT-THRESHOLDBREAKS.icon&&[!!this.iconSlotLen&&h("slot",{name:"icon"}),this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("icons"))&&[this.msgUrl&&h("a",{href:this.msgUrl,class:"icon-btn"},h("nano-icon",{name:"light/bell"}),this.msgCount>0&&h("span",{class:"gn-menu_actions-counter"},this.msgCount)),this.cartUrl&&h("a",{href:this.cartUrl,class:"icon-btn"},h("nano-icon",{name:"light/shopping-cart"}),this.cartCount>0&&h("span",{class:"gn-menu_actions-counter"},this.cartCount))]],this.myAccData&&(!this.activeMyAccountSections||this.activeMyAccountSections.includes("loggedin"))&&this.threshold>=this.THRESHOLDLIMIT-THRESHOLDBREAKS.login&&[this.myAccData.urls.login&&h("a",{href:this.myAccData.urls.login+this.ssoRedirect,class:"login-btn"},"Login / Register"),this.myAccountUser&&h("div",{class:"user-links"},h("button",{class:{"icon-btn":true,"user-links-btn":true,open:this.userMenuOpen},onMouseDown:this.onUserBtnClick,onKeyDown:this.onUserBtnKeyDown}," ",this.myAccountUser.name,h("nano-icon",{name:"solid/caret-down"})),h("div",{class:"user-links-panel",tabindex:"-1",ref:function(e){return t.userLinkPanel=e}},h("div",{class:"user-links-panel-content"},this.loggedInNavItms.map((function(e){return h("a",{href:e.address,target:e.target},e.title)}))),h("div",{class:"user-links-panel-foot"},h("a",{href:this.myAccData.urls.forgot_password+this.ssoRedirect},"Change Password"),h("a",{href:this.myAccData.urls.logout+this.ssoRedirect},"Logout"))))],h("span",{class:"measure-ele"})),this.threshold<this.THRESHOLDLIMIT-THRESHOLDBREAKS.search&&h("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}},h("div",{class:"search-widget"},this.showSearch&&!!this.internalSearchIndeces.length&&h("div",null,a),(!this.showSearch||!this.myAccData)&&!!this.searchSlotLen&&h("slot",{name:"search"}))))),(this.threshold<this.THRESHOLDLIMIT-3||this.menuFullScreen)&&h("div",{class:{mask:true,open:this.modalOpen},onClick:this.menuClose,onTouchEnd:this.menuClose})),h("div",{class:"site-content",ref:function(e){return t.siteContent=e}},h("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 getElement(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}();GlobalNav.style=globalNavCss;export{GlobalNav as nano_global_nav};
5
5
  //# sourceMappingURL=nano-global-nav.entry.js.map